>> [REPRODUCCIÓ DE MÚSICA]
>> DAVID Malan: Bé aquest és CS50 i aquest és el final de la primera setmana.
Així que m'agradaria presentar al meu ex aconsellat, Andel Duff, que no només fa
iPhone 5 es troba, així com aquest faristol, també fa que els automòbils.
ANSEL DUFF: Com et va, tothom?
Només vull explicar una mica poc sobre la Fórmula SAE, de la qual jo
sóc el capità.
És un equip del MIT.
Només vull dir-te nois una mica sobre ella
i espero generar una mica d'interès.
>> Així que deixeu-me parlar a través d'un parell de coses sobre el nostre equip.
Així que estem completament funcionament de l'estudiant, en el qual tot
el disseny dels membres, simular prova, i el fabricant d'un subsistema
del cotxe.
Tenim el nostre propi taller de mecànica i garatges, i N52-- o ho sento,
N51-- que és el mateix edifici com el Museu de la Ciència MIT.
I nosaltres som el poble que condueixen el cotxe.
Hi ha un concurs nacional en el començament de l'estiu,
i després hi ha els més petits tiroteig competicions durant tot l'any.
I després que fem de formació de conductors dies per aconseguir nous membres familiaritzats.
>> Els nostres dies estan en construcció Dissabtes 11 a.m.-8 p.m ..
El dinar i el sopar estan cuidant d', a partir de Bertucci i Beantown
respectivament.
Tenim una reunió setmanal i seminari, que és per al crèdit del curs.
Què hi ha de nou a partir d'aquest semestre, i també serà per al pròxim semestre,
perquè pugui creuar-reg per això.
I després tenim el disseny, botiga, i CAD dies durant la setmana,
mentre que els membres ho farà de manera independent Parts de CAD, l'ordre comú, etcètera.
>> Així que per elèctrica enginyeria en l'equip
tenim la nostra tracció, sistema d'alta tensió,
que funciona a un nominal 300 volts, que inclou
motors, reguladors de motor, i els paquets de bateries.
Llavors tenim un baix sistema de tensió, que s'executa
a 12 volts, que inclou controls, PODEN limfàtics, el cervell
caixa, i el tauler d'instruments.
En la mesura de CS va, ho fem tenir manteniment del lloc web
que heu de fer per a esdeveniments, membres canvis, noves imatges i material de PR.
I després tenim el codi que controla el cotxe per al nostre control de tracció, llançament
control, control d'instruments, vectorització del parell, i sistemes de frenada regeneratiu, que
funcionar normalment en MATLAB, Simulink i LabView.
>> Et diré una mica sobre el cotxe.
Així que és al voltant de 500 lliures.
És normes limitades a 85 quilowatts.
Té 2 EMRAX 207 motors al esquena, un per a cada roda posterior.
Compta amb paquets de bateries personalitzades a partir de cèl · lules de la borsa A123 prismàtiques,
un total de 300 volts i 5.6 quilowatts hora.
I és d'accionament directe amb una proporció de 2,64-1 unitat.
Aquestes són algunes fotos que prendre d'ell en la competència.
Aquí hi ha el con posterior, el nas, i aquí hi ha els motors,
aquests grans discos negres sota del mens et manus.
Heus aquí una diapositiva que vaig treure fora del nostre esquema de competència.
I això és només comparant el nostre cotxe a un parell de cotxes disponibles al mercat,
com la KTM XBOW, Ariel Atom, i Caterha M 7-280.
Si està familiaritzat amb el preu, el poder tirar de pes, dòlars per cavall de força,
dòlars per parell, i el nostre cotxe tots ells bufa fora de l'aigua.
Si vostè té alguna pregunta, anoteu aquesta adreça de correu electrònic.
Envia'ns un correu electrònic a fsae@mit.edu.
>> Estem feliços de parlar sobre alguna cosa que t'agradaria.
Els estudiants de Harvard són amables de la minoria en l'equip.
Si vostè té alguna pregunta sobre que si us plau, envia'ns un correu electrònic,
feliç de parlar, i jo vaig per tornar a David.
Gràcies.
T'ho agraeixo, nois.
[Aplaudiments]
>> DAVID Malan: Ansel passar l'estiu treballa amb nosaltres aquí al campus a CS50
aquest estiu.
I a més de treballar en coses com les bombetes binaris,
que realment em va obrir la nostra ulls-- i la meva en particular:
al que realment la intersecció de no de maquinari i programari pot ser.
De fet moltes de les coses que acaba de realitzar una gira a través d'aquesta última instància
creat per primera vegada en el programari, i a continuació, en última instància, fabricat
en el món real en el maquinari.
Així que si vostè està interessat en explorant aquesta intersecció,
potser prendre fins a aquest grup.
>> Ara mentrestant, aquells de vostès que són fanàtics de la tecnologia,
i els productes d'Apple a particular, saber que hi ha
hi havia un parell de anuncis d'ahir.
Però nosaltres pensem que el mostrem que un que va sortir
uns pocs dies abans que és possible que no hagi vist.
>> Jørgen EGHAMMER: Vostè sap, una vegada en un temps una mica
ve que canvia la forma en què vivim.
Un dispositiu de manera senzilla i intuïtiva utilitzant se sent gairebé familiar.
Presentació de 2,015 catàleg IKEA.
No és un llibre digital o un llibre electrònic, que és un llibre de llibre.
>> La primera cosa a tenir en compte és no cables, ni tan sols un cable d'alimentació.
El catàleg IKEA 2015 ve totalment carregada,
i la durada de la bateria és eterna.
La interfície és de 7,5 per 8 polzades, però es pot ampliar a 15 per 8 polzades.
La navegació es basa en contacte tàctil tecnologia que en realitat es pot sentir.
>> Contingut ve pre-instal lat a través de 328 pàgines d'alta definició
d'inspirar les idees de decoració de la llar.
Per iniciar la navegació, simplement toc i arrossegament.
De dreta a esquerra per seguir endavant, esquerra a dreta per moure cap enrere.
>> Noti alguna cosa més?
Això és correcte.
No lag.
Cada pàgina cristal·lines càrregues instantàniament,
no importa el ràpid que es desplaça.
Per obtenir una visió general, simplement sostenir en el palmell de la mà,
i usant només el polze, Velocitat explorar el contingut.
>> Si trobeu alguna cosa que voleu desar per a més endavant, vostè simplement pot indexar-la.
I fins i tot si es tanca l'aplicació, vostè pot trobar fàcilment el marcador de nou.
Increïble.
>> [Rialles]
[Aplaudiments]
Així que això ens porta a Al final de la primera setmana.
Alguns anuncis ara.
Així seccionament està ara en progrés.
Aneu a aquest URL aquí alguna vegada entre avui i divendres al migdia
especificar en realitat si vostè és entre els menys còmodes, més
còmode, o en algun punt intermedi.
>> Això és típicament un dels coses que només tipus de coneixements.
I, de fet, aquells de vostès que són menys còmoda probablement saber tant,
aquells de vostès que són més còmode saben tant,
i una altra si vostè no està molt segur que d'aquests cubs caus en què estiguis
probablement en algun lloc en el medi.
Però tingui la seguretat que pot canviar després d'un parell de setmanes si és necessari.
>> Mentrestant, per a la setmana vinent no comencem seccions per se,
però súper seccions, que estan oberts a tots els estudiants.
Aquest proper diumenge en una ubicació per s'anunciarà en el lloc web del curs
tindrem una per a els menys còmodes,
així com un els més còmodes.
I els que en algun punt intermedi pot triar quin dels dos,
o ambdues, si ho desitja, per seure al.
I l'enfocament dels serà en última instància de C,
que seguirem el nostre conversa d'avui.
>> Butlletí de problemes 0 mentrestant és amb sort a les teves mans.
Oficialment per demà, Dijous, al migdia.
A menys que vostè coure en un dels 5 dies de retard,
que el portaria fins divendres al migdia.
Butlletí de problemes 1 per la seva part serà publicat a la pàgina web del curs.
I aquesta serà la nostra primera incursió com una classe en C.
I aquest conjunt de problemes espec us guiarà a a través d'una gran quantitat de la mecànica del
Comencem a parlar el dilluns, i continuarem parlant avui.
C, Linux, el CS50 aparell, tot això
l'esperen en l'especificació.
>> L'horari d'atenció per la seva banda estan en curs, al menjador universitari.
Dirigeix-te a aquest URL per veure el programar per a aquesta nit i demà,
si vol participar.
Preguntes Mentrestant, perquè tenir oportunitats de fer preguntes
asíncrona, 24/7, s'adonen que estàs no limitat a les seccions i oficines
hores, sinó més bé aquesta eina aquí, CS50 Discutir en aquest URL
estarà en línia del curs programari de tauler d'anuncis, a través del qual
vostè pot fer preguntes a companys de classe i també personal.
Així que tingui en compte que els recursos també.
Mentrestant, una tradició comença aquest divendres.
Com vostè va poder haver albirat des vídeo teaser de dimecres passat,
tenim una tradició més tots els divendres durant el mandat
de prendre uns 50 estudiants i personal a un restaurant local anomenat
Foc i Gel, en la qual estem normalment acompanyat per alguns exalumnes
o amics de la indústria a general aspirar
per fer una classe gran se senti més petit.
Així que és un dinar completament informal.
Un grup de nosaltres, el personal especialment, jugarà les cadires musicals
i xerrar amb els estudiants sobre 50, la vida fora de 50,
vida en el futur, el món real, Estic parlant de les oportunitats d'ocupació
amb els seus amics en la indústria.
>> Així que si vol unir-se a nosaltres aquest divendres, el cap a aquest URL aquí.
L'espai és limitat, però farem això recurrentment al llarg del termini.
Dirigeix-te allà per cs50.harvard.edu/rsvp.
I si vostè no rep a aquesta vegada, no es preocupi.
Anem a fer-ho de nou en les pròximes setmanes també.
>> Així que aquesta és la foto pintem la setmana passada,
i del que has estat incursions en fins ara.
Però anem a tractar de connectar aquesta ara al que anem a fer avui
i en endavant.
Podria tenir un voluntari?
Molt bé, o més.
I aquí al final, de la camisa blava.
Anem cap amunt, quin és el teu nom?
ALANA: Alana.
DAVID Malan: Alana.
Així Alana, per només un moment-- Encantat de conèixer usted--
es jugarà el paper d'aquesta funció aquí.
El bloc de color porpra que hem anomenada fins ara una funció.
Així que el que vaig a anar per davant aquí i oferir Alana
és una mica d'etiqueta amb el seu nom, per fer clar el paper que està jugant.
>> Així és que ha de ser el bloc diguem.
Si desitja seguir endavant i posar això en.
I anem a mantenir aquesta super simple.
Si l'objectiu a la mà és simplement ara a posar en pràctica amb Alana,
aquest anomenat bloc dir, així és com funcionarà.
Jo tenen-- diguem un argument o paràmetre,
no deixa de ser un full de paper en blanc.
I és blanc de classe de ser una reminiscència de la caixa blanca a la que vostè
pot escriure paraules.
>> Mentrestant, jo vaig a anar aquí.
Vaig a seguir endavant i escriure H-E-L-L-O coma món.
I ara, com dir el programador, no ho faig realment saben com dir alguna cosa.
Em passa amb les paraules, però no és així necessàriament
saber com expressar- verbalment o en la pantalla.
I així el que vaig de fer és prendre aquesta peça
de funcionalitat, la entrada-- o argument, com l'anomenarem,
He escrit en aquest tros de paper-- i jo vaig a subcontractar.
>> I de fet aquest és el paper que funcions en un llenguatge de programació
pot jugar.
Una cosa així com l'exemple bloc pot ser subcontractat
algú que realment sap el que ell o ella està parlant.
Així que si vas a passar per sobre aquí per un moment,
Vaig a passar a aquesta entrada per Alana, i demani que li digui aquesta entrada.
>> ALANA: Hola, món.
DAVID Malan: Això és tot.
Així que hi ha una funció.
Ara podem anar una mica més, podem fer un pas endavant aquí.
Perquè això va ser clarament decebedor.
Així que ara anem a convertir això en cosa una mica més sofisticat.
>> Així que això, per descomptat, és la nostra versió C.
Així que ara si vostè vol prendre aquest un fos, que etiqueta amb el seu nom fos,
i anem a haver de posar un nou nom.
Però fonamentalment ets jugant el mateix paper,
dóna la casualitat que dir printf ara.
>> La història és, per descomptat, va a ser-- probablement
tal com és underwhelming-- serà el següent.
Vostè és ara el printf funció.
Jo sóc la persona que truca, o l' programador, que vol
de peu sobre les espatlles d' persones en el passat com tu,
que ja han descobert la manera per realment escriure alguna cosa.
I així que aquesta vegada, en lloc de dir que anem a
utilitzar realment la nostra pantalla aquí.
Així que si voleu fer un pas per aquí, vaig
per a passar de nou això com d'entrada al meu amic printf.
Si vostè pot seguir endavant i imprimir que a la pantalla,
simplement dibuixant amb el seu el dit a la pantalla en negre.
Excel · lent.
Molt bé, així que un munt de suspens per com anava a jugar fora.
>> Així que ara anem a prendre les coses una osca final, si poguéssim, de la següent manera.
Així que aquest és un programa C com vam dir l'última vegada.
I això només fa el que va fer, que imprimeix a la pantalla, hola, món.
Encara que clarament hi ha molt de coses distreuen fins allà.
Però anem a prendre les coses a un nivell superior i introduir aquesta versió, que recorden
Va ser la tercera versió que acabem amb l'última vegada.
>> I ara hi ha clarament dos usos de printf.
Hi ha 2 trucades a Alana en aquest cas per printf,
però també hi ha una trucada a una altra funció.
Quina és aquesta funció amb claredat?
GetString.
>> Podem aconseguir un voluntari més?
Bé, anem cap amunt.
Quin és el teu nom?
>> JAVIER: Javier.
>> DAVID Malan: Javier, anem a dalt.
Així que el paper de Javier està en aquest tros de paper.
Què vaig a trucar genèricament s.
Ara bé, aquesta és una variable, és de tipus cadena, com s'implica
per aquesta segona línia en el medi allà.
I m'agradaria que vagis a buscar una cadena.
Específicament baixar a l'orquestra secció i em aconseguir el nom d'algú,
i tornar amb una variable que conté aquest valor.
Pot ser qualsevol que desitgi.
>> Aquí anem.
Molt bé, Javier és anotant el nom.
Bé.
Tots podem endevinar com això va a jugar fora.
Potser Estem belaboring el punt del
una funció està fent, però no obstant això, moltes gràcies.
>> Així Javier ha tornat aquesta cadena aquí, la qual cosa, no pot veure bé,
Jonathan és la cadena que ens hem ficat.
Així que ara el que estic realment va per proporcionar Alana encara
és una cosa una mica diferent.
Com que en aquesta versió de la programa, primer cal digui el seu nom.
Així que el primer argument Necessito proporcionar Alana
amb que serà literalment, digui el seu nom.
Molt bé, així de simple M'agradaria lliurar això a vostè.
I mentre escric l' següent argument, si
volen seguir endavant i escriure aquest al tauler, seguirem endavant
i fer l'últim exemple aquí per fer aclarir el que en última instància ha de succeir.
Així que digui el seu nom, escriure cap a la part superior
si no t'importa, només perquè tenim espai per a una segona línia.
Perquè l'últim que vaig ara li proporcionarà no és un,
sinó dos trossos de paper.
>> Bé.
H-E-L-L-O coma i després una línia en blanc.
Així que el que estic a punt d'entregar Alana ara és una cosa una mica diferent.
No només és aconseguir això, on omplir l'espai en blanc representa
que cent- quin era el marcador de posició que hem estat utilitzant?
Sí, i cent s.
Mentrestant, jo vaig a passar ella en un segon argument, que
és precisament el que Javier recuperat de Jonathan.
>> Així que et donaré aquests dos.
Si vol, endavant i imprimir aquest efecte.
Què està succeint en última instància, ara és, Alana de nou
està jugant el paper de printf.
Javier estava jugant el paper de GetString.
Així que serà el seu record.
I en última instància, el que està succeint, tot i aquest hello-- sip seguir endavant i coma.
ALANA: Vaig rebre aquest encara o no?
DAVID Malan: Sí, vostè dos rebuda en una vegada.
Així que la idea és que vostè ara pot capgirar la pàgina
per manejar el segon d'aquestes dues entrades.
Així que això és només per recalcar la assenyalar que, mentre que Alana executat
aquesta línia verda aquí, i després Javier va fer això per a nosaltres
i tornar a mi alguna cosa anomenarem s, però va ser realment
només aquest tros de paper del seu propi.
I ara Alana ha fet aquesta tercera línia.
>> I malgrat tot això es veu tan increïblement críptica potser
a primera vista, el que realment és tan simple com això.
Passant entrades voltant, aconseguir sortides, ja sigui
ser lliurat físicament tornar alguna cosa, o veure un efecte secundari d'aquesta manera.
Una cosa visualment escrit a la pantalla.
Així que seguirem endavant i gràcies Alana i Javier,
que era aquí sota, per acompanyar-nos fins aquí.
>> [Aplaudiments]
>> Així que ara anem a prendre per fet el senzill tot això podria ser.
I anem a procedir a la realitat fer alguna cosa en codi real.
Així que a la pantalla aquí és una captura de pantalla de l'anomenada aparell CS50.
I si haguessis de a, com 14:00 dimecres a la tarda,
explicar a algun amic el que l'aparell és CS50,
Com definiria en una frase?
Qualsevol sola frase?
Sí?
ESTUDIANT: És com un programa això fa que l'equip de tots
córrer amb el mateix sistema.
DAVID Malan: Good!
És un programa que permet a cadascun equip funcioni amb el mateix sistema.
És una espècie del seu propi còpia d'un operatiu
sistema que passa a ser cridat Ubuntu Linux.
I funciona de manera efectiva dins una finestra en el seu propi Mac o PC,
perquè d'aquesta manera a la dreta de la porta en la setmana 1, tothom aquí a la classe
té accés a les mateixes eines, la mateixa configuració,
i no hi ha corba d'aprenentatge específica a un Mac o un PC en particular.
>> Ara hem obert, a l'interior de la CS50 aparell dilluns, aquest programa aquí.
Li passa a dir-se gedit.
Però això és realment només un editor gràfic.
És una cosa així com el Bloc de notes o text Editar en Windows o Mac OS, respectivament.
I em vaig proposar que no eren realment tres parts importants a aquesta pantalla.
La part superior és on es escriuria el codi.
I aquí és on passem gran part del nostre tres exemples en la conferència de dilluns.
La part inferior ens crida el que, aquesta finestra negre, sí?
>> ESTUDIANT: Compilador?
>> DAVID Malan: Compilador que visitada a través d'aquesta finestra.
Però de manera més general.
Sí, era només una finestra de terminal.
Aquest és un vell terme edat que acaba de descriu essencialment un parpelleig
ràpida, que fa anys solia ser el un d'aquests grans monitors CRT estil.
Però avui en dia és una espècie de virtual en programari.
I les finestres de terminal Anem a nosaltres escrivim les ordres.
És una espècie de versió simplificada de la interfície d'usuari o interfície d'usuari.
No és una gràfica interfície d'usuari o GUI,
que és una interfície basada en text o una interfície de línia d'ordres.
>> I en efecte, que és on en última instància, Jo era capaç d'escriure una mica de codi.
Una vegada que havia escrit una mica de codi, però, Recordo que vaig utilitzar aquesta comanda.
I com el nom tipus d'indica, aquest
em permet fer una programa anomenat Hola.
Però, què va ser el que realment fa?
Bé maquillatge estava prenent el meu d'entrada, el codi font,
i convertir-lo al que, en última instància?
>> El codi objecte.
I el codi objecte és només una fantasia manera de dir zeros i uns.
I llavors una vegada que volia per executar aquest codi objecte,
una vegada que volia passar com a entrada els zeros i uns en el meu equip de
cervell, l'anomenada CPU o unitat central de processament,
Vaig haver de córrer el programa.
Però no era bastant senzill dilluns només fer doble clic a alguna icona.
El que en canvi vaig haver fer per executar un programa?
>> Quina va ser aquest segon mandat?
Estic escoltant una mica de barres?
Sí, sí?
>> ESTUDIANT: Dot tala i el nom del programa.
DAVID Malan: Exactament.
Dot tala i el nom del programa.
Ara què significa això?
Bé punt és només una forma arcana de dir directori actual.
Qualsevol que sigui la carpeta es troba a és com a referència, es representa com a punt.
La barra és just el que vostè ha vist en Mac OS i Windows durant anys,
és un separador entre un directori o la carpeta i la resta d'algun nom.
Al Windows que succeeix a anar cap enrere, en Linux i Mac
US passa a anar cap endavant.
Però és només el separador, pel que és només un detall sintàctic poc interessant.
>> La part sucosa del curs és el nom del programa, Hola.
I això és el que fan que crear per a nosaltres.
S'emet aquest arxiu per a nosaltres.
Però com hem arribat a aquest punt?
Ara anem a demanar a la pregunta, el que era realment
passant aquí, almenys amb que fa a alguns aquesta sintaxi?
>> Així que en una frase més o menys, Com expliquem distància
aquesta primera línia que és ressaltat en verd?
Quina va ser aquesta primera línia fent, pel que fa al meu programa?
Sí?
>> ESTUDIANT: [inaudible].
DAVID Malan: Digues-ho una altra vegada?
ESTUDIANT: Inclusió i descarregar funcions anteriors [inaudible].
DAVID Malan: Good.
Incloent, no diré la descàrrega, però diguem
incloent-hi les funcions que les persones han escrit en el passat.
I aquestes funcions s'implementen en algun lloc del meu ordinador.
Algú va escriure un arxiu Fa anys, i aquest arxiu
és en algun lloc dins de la CS50 aparell, o en el meu disc dur
de manera més general.
I el que aquesta línia està dient essencialment, anar a buscar aquest arxiu, punt E / S estàndard
h, i copiar i enganxar el seu contingut aquí mateix a la part superior del meu arxiu
de manera que jo no he de fer-ho manualment a mi mateix.
>> I entre les peces més sucoses a l'interior de aquest arxiu reclamem era quina funció?
Quina funció vam dir va ser declarat o esmentada en I / S estàndard dot h
més probable?
Printf, oi?
No escrivim printf en Dilluns, tot just existia.
Igual que Alana acaba d'arribar a l'escenari i ella només
existit i sabia com dibuixar alguna cosa a la pantalla,
així no hi printf durant molts anys.
I que aquesta és la forma en què accedim.
Ara bé, si ens movem d'aquí, principal era que anàloga
dir a la peça del trencaclosques es diu quan la bandera verda fa clic
en el món de les ratllades.
És només una mena de nom per defecte que els humans
decidit que representaria la punt d'entrada per defecte a un programa.
El tros de codi de programació que és executat primer.
>> Mentrestant aquestes claus són una mena de forma corbada
de moltes d'aquestes peces d'esgarrapades grogues.
Ells encapsulen tipus de conjunt manat d'instruccions junts.
Per tant, només una mica de uneix part de la funcionalitat relacionada.
printf per descomptat és una funció que imprimeix la pantalla, com ho acabem de fer.
>> Què passa amb aquests parèntesis?
Com define-- fins i tot si no tens Mai programada abans, però només sobre la base
ara en una creixent esperem que la intuïció, el que
estan entre parèntesis fent per nosaltres aquí?
O què estan envoltant?
Sí?
>> ESTUDIANT: Estan dient el vostè va a imprimir amb printf.
>> DAVID Malan: Sí, ells estan dient el que vostè va a imprimir amb printf.
O més en general, són que envolta les entrades de la funció.
Així que gairebé es pot pensar d'aquests parèntesis
com sent com el metall clip en aquest portapapers.
És el que està sostenint, és el que hi ha serà utilitzat per proporcionar arguments
en la funció, que en aquest cas es diu printf.
>> Així, en general, gairebé qualsevol vegada que cridem a una funció,
anem a veure un parell de parèntesis.
Potser amb alguna cosa en ell, com ara, potser res en ell.
Però això és on posaries les entrades o els anomenats arguments
a una funció.
>> Aquí està un d'aquests arguments.
He ressaltat tot entre les cometes,
perquè resulta que en aquesta llengua anomenada
C, quan es vol representar una string-- que és una paraula o una frase
o fins i tot un paragraph-- has de envoltar amb cometes dobles.
No cotitzacions simples, cometes dobles.
I això és exactament el que he fet aquí.
>> Mentrestant hi ha un covard símbol cap al final allà.
La barra invertida n.
Què vam dir que representava?
Sí?
>> ESTUDIANT: Una nova línia.
>> DAVID Malan: Nova línia.
Cert, no ho fa generalment premeu Enter quan
desitja que el programa escopir una nova línia.
Més aviat ho dius explícitament amb aquesta peça és cert arcà
de la sintaxi, la barra invertida n, que vols una nova línia per anar-hi.
Finalment, el punt i coma.
Nosaltres realment no parlem massa sobre això,
i fins ara, aquest serà la ruïna d'alguns de la seva existència pel primer problema
establir, quan simplement no es va adonar se li ha oblidat una cosa tan estúpid
com un punt i coma.
I, en general posada haurà arreglar aquest problema.
Però, ¿què és el que fa per a nosaltres, què li diries?
>> ESTUDIANT: [inaudible].
>> DAVID Malan: Ho sento?
>> ESTUDIANT: [inaudible].
DAVID Malan: Acabant un comunicat.
És una cosa així com el període en el final d'una frase anglès,
mentre que en aquesta llengua C està acabant un comunicat.
Una instrucció de programació codi que el que desitja és a dir,
Ja he acabat amb això.
Ara noti que és l'únic aquí.
Així que vostè no desitja aconseguir en el costum de posar punt i coma
després de cada tancament de parèntesi.
Per exemple no hi ha cap al costat del buit, i anem a
tornar en el futur al que significa buit.
Però en aquest cas el seu printf és una funció, o una declaració que s'utilitzi,
i així volem haver de terminal al final de la mateixa.
>> I estic intencionalment ficant amb C. I francament un munt de llenguatges com C, C ++,
Java, JavaScript, i qualsevol nombre de altres idiomes tenen una gran quantitat d'aquests
tipus de dades sintàctics.
Això certament si sou nou en programació pot realment ensopegar.
I vostè, marqui el meu És a dir, alguns de vostès
tenir aquesta experiència en horari d'oficina o tarda
en la nit treballant en algunes p-set, on el teu maleït programa simplement no compila,
no funcionar, vostè té ni idea del que està malament,
sembla completament lògicament correcte per a vostè.
I és perquè se li va oblidar una mena de colpejar
un punt i coma al final d'alguna línia.
>> Però aquests són els tipus de coses que vostè és va a aprendre immediatament per veure.
I de fet aquestes són les coses que i de la CA TF tenen
estat una mena de formació per veure molt més ràpid que tu.
I pel que aquest és només per dir, a mesura que submergeix-te en un problema conjunt 1, especialment,
no se senten frustrats per aquestes coses.
Una vegada que una espècie d'aclimatar- al món, que
començar a veure coses que no es poden veure a primera vista aquesta primera setmana.
>> Així que el codi font és una cosa així.
Volem passar-ho a l'anomenat compilador.
I això compilador com vam dir proporciona una sortida
conegut com codi objecte, el anomenada zeros i uns.
Però a partir d'aquí, el que ens dóna això?
Bé, ens dóna aquests patrons.
I de nou l'equip, seva Intel inside,
entén aquests patrons de zeros i uns.
I de vegades el patró representa un nombre decimal real
com vam veure la setmana passada, de vegades representa una carta
com vam veure la setmana passada, de vegades que representa una instrucció,
com imprimir alguna cosa a la pantalla.
>> Així printf per instance-- sinó més aviat, deixa rebobinar.
Hem estat prenent per fet que aquests zeros i uns són
produïda per aquesta comanda make.
Però maquillatge no és un compilador.
Fer no és la cosa en el medi que està produint els zeros i uns.
Més aviat que és només un molt convenientment programa denominat el propòsit a la vida
és essencialment d'esbrinar com compilar el programa.
I el fem servir en aquests primera setmana, ja que només
ens estalvia un munt de problemes.
>> Però el que és realment fent al compilar hola,
és, com hem dit l'última vegada, és cerca en el disc dur
oa la carpeta actual, per arxiu anomenat el que, pel que sembla?
Hola.c, oi?
Això és només una espècie de convenció.
És arbitrària, però això és com són les coses.
Fer, si només s'especifica el nom d'un programa que encara no existeix,
que va a buscar el codi font en un arxiu, per defecte significa hello.c.
I si ho troba, molt bé.
Es convertirà aquesta font codi en el codi objecte per a vostè.
>> Però cada vegada que m'he colpejat Enter després d'executar make hola,
Recorda haver vist per última vegada un bastant llarg i la seqüència críptica
d'altres lletres blanques i personatges a la pantalla?
Bé, això va ser l'ordre real, el compilador real, que s'estava executant.
Així el compilador real farem servir la major part de el semestre és una cosa que es diu so metàl · lic.
Alguns de vostès s'han utilitzat Abans de Visual Studio, o GCC,
o qualsevol nombre d'altres compiladors.
Farem servir so metàl · lic.
>> I Clang ens permet convertir en realitat que el codi font a codi objecte.
Què significa això en realitat significa en la pràctica?
Bé m'ho dius a mi anar a un les meves carpetes des de l'última vegada.
A l'interior de l'aparell CS50.
I m'ho dius a mi seguir endavant i crear aquest mateix arxiu, inclou E / S estàndard dot h.
Void main int.
I anem a tornar en el futur com al que int mitjans i el que significa buit.
Però per ara anem a fer-ho hola barra invertida món n,
Igual que vam fer al tauler.
>> Déjame guardar aquest arxiu anomenat hello.c.
I ara si vull compilar aquest Jo could-- m'ho dius a mi el zoom termini en--
fer hola entrar.
I això va ser de nou aquesta línia molt críptica.
Però ara almenys una paraula probablement salta a la vista.
Clang és que la línia que vam veure abans.
Ara hi ha un munt d'altres coses amb franquesa que anem a agitem les nostres mans a avui.
Però hi ha un parell de subconjunts, uns personatges que apareixen aquí
que són d'interès.
Però jo vaig a seguir endavant i fer això.
Vaig a la primera cursa hola, només per demostrar
que això està funcionant, ja que era dilluns.
Però ara vaig a esborrar el programa.
I igual que hem tingut aquests noms curts última vegada,
la comanda per eliminar alguna cosa és rm, eliminar, escriviu.
Vas a aconseguir una mica d' preguntes força críptics.
És difícil de creure que vostè pot fer fins i tot aquesta pregunta difícil d'entendre.
Però treure hola fitxer regular només mitjans fan que desitja eliminar hola.
>> I puc seguir endavant i escriure i per sí, Enter, i ara s'ha anat.
Què vol dir això ara, si m'aclareixo la pantalla,
és que en lloc de El fer hello-- vostè
sé què, m'estic tornant bo en això.
Vaig a executar el compilador mi mateix.
No necessito un programa per esbrinar el que el meu arxiu es diu.
Vaig escriure hello.c, I sé com es diu,
Estic clarament capaç d'escriure això.
Així que seguiré endavant i no Clang hola.c Retorn.
>> Sembla que funciona.
I no hi ha sortida addicional, perquè Clang és el compilador.
És el que la conversió de la codi font de zeros i uns.
Així que si ara ho faig punt slash hola Enter, hm.
Nou missatge d'error en l'actualitat.
Així que bash és només el nom de la parpelleig ràpid que estem fent servir.
Això és una simplificació excessiva, però per ara això és tot el que és,
és el símbol de parpellejar.
I és per això que està cridant a nosaltres.
>> No existeix el fitxer o directori està una mica més senzill.
Però segurament vaig fer aquest codi objecte.
Però el problema és, que si escric la comanda
per llistar el contingut d'aquest directori, que és el que?
ls per a la llista.
Hi ha un munt de coses aquí, alguns dels quals van arribar amb l'aparell,
com el meu carpeta Escriptori, Descàrregues carpeta, carpeta de Dropbox, i tots
aquestes coses.
Però el que és interessant és hello.c, que
He creat fa un moment amb gedit.
I el que és més rar l' mirant nom aquí,
potser això no ho vam fer vegeu l'últim moment a tots?
>> a.out, oi?
Així que de tornada al dia, s'acaba de decidir que quan
compila un programa per primera vegada,
i no s'especifica el nom d'un arxiu, anem a cridar a.
I a.out només significa això va ser la sortida del compilador.
Així que és un nom horrible per a un programa.
Però per aquesta lògica, punt slash per directori actual, slash a.out,
ha de significar que hi ha, de fet, hola el meu programa mundial.
Ara una mica d'escalfament d'exercici, també.
Si vull canviar el nom d'aquesta arxiu, resulta que
moure un arxiu d'un nom a un altre.
A.out Així mv, i després em pot dir-hola Retorn.
Així que aquest és una ordre de Linux.
DOS tenia això fa anys, Windows compta amb una finestra de terminal
d'algun tipus que es veu així, Linux i Mac
ordinadors tenen aquesta ràpida a parpellejar.
Tot i que la majoria de nosaltres probablement poques vegades, o mai, el fan servir.
>> Però el que he fet s'executa un programa, el nom és mv,
i jo he proporcionat amb dos arguments, per així dir-ho.
Dues entrades.
a.out és el nom original.
Hola és el nou nom.
Així que si ara ho faig slash dot hola, Intro, el que existeix.
I si ho faig a.out slash dot, ¿Què esperes que he de veure?
>> Bash, no existeix el fitxer o directori.
Perquè acabo li va canviar el nom.
Així que això pren una mica de temps per acostumar.
Però el problema conjunt 1 especificació serà veritablement
prendre la teva mà a través de una mica d'això minutae.
Com que aquest és un complet distracció intel · lectual
des del més interessant idees a la mà, que
és en realitat la creació de una mica de codi.
Però farem una modificació ara amb aquest programa.
>> Recordem que l'última vegada que vaig fer alguna cosa així, printf digui el seu nom.
I de fet que acabem de fer aquest a la pantalla gran per allà.
I després vaig fer cadena s aconsegueix GetString parin oberts, prop parin.
I parin només taquigrafia notació per parèntesis.
Llavors, ¿GetString pren cap argument?
No hi ha entrades que no, però que necessitats dels parèntesis,
perquè això és el que demarca la convocatòria d'una funció.
>> Així que vaig a seguir endavant i tractar de executar el compilador en aquest programa ara.
Clang hello.c, perquè no va canviar el seu nom pel moment.
I tinc un munt d'errors.
Anem a allunyar aquí.
Si em desplaço de nou, com vaig dir l'última vegada,
a la primera, el mateix error que em van donar l'última vegada.
En la línia 6 de hello.c vaig tenir una cadena d'identificador no declarat,
Què volia dir estàndard en?
No ho vaig fer.
Perquè el que error que he fet en aquest programa, si vostè recorda de l'última vegada?
Sí, necessitem la anomenada rodes d'entrenament
que només haurem de servir durant unes setmanes.
Però he d'especificar que també, en algun lloc dins de l'aparell,
és un arxiu que escrivim fa només uns anys.
A l'interior de les quals són funcions com aparentment GetString.
Així que ara si torno per aquí, zoom i re-executar Clang hello.c.
Maleïda sigui, un altre error.
Però no hem vist això abans.
>> Aquest és una mica més esotèrica d'esbrinar.
Però això és deliberadament a la pantalla, perquè volíem explicar aquesta història.
Al compilar hello.c, igual que la imatge de davant suggerir,
només estàs convertint aquesta codi font de zeros i uns.
Ara el personal CS50 fa uns anys va escriure CS50.h, i un arxiu corresponent,
CS50.c.
I nosaltres, fa uns anys, compilat aquests arxius
en un arxiu que passa ser cridat CS50.o.
>> O pot canviar el nom d'un algunes coses diferents.
Però això és una manera senzilla de pensar-hi.
Així que hem recopilat de CS50 biblioteca en zeros i uns.
Però enlloc he especificat que vull combinar els meus zeros
i els del meu món hola programa amb els zeros i uns
que el personal CS50 creat uns pocs anys fa en un programa complet.
Tot el que he especificat per escrit hola.c so metàl · lic és compilar hello.c.
>> Jo no he dit so metàl · lic a baula dels zeros i uns
que el personal CS50 creat per a vostè fa algun temps.
Així que és una solució fàcil, llançar-l per a l'enllaç, CS50.
I una altra vegada a veure aquest en poc temps una i altra vegada.
Però noti ara no hi havia cap queixa.
Així que ara si se m'acaben slash dot hola, ara que està funcionant.
Encara que això és una mica enganyós ja que acabo recreat el fitxer?
a.out.
>> Així que permetin-me rebobinar per un moment.
El programa que acaba de compilar té les tres línies de codi.
Quan em vaig trobar hola món, hola un moment fa, no vaig veure digui el seu nom.
I això és perquè em vaig trobar amb la versió anterior del programa.
Però si jo en veritat rotllana a.out slash dot Escrigui, digui el seu nom, Rob, hola,
món.
Hm.
Això és una cosa d'un insecte.
Probablement volia dir Rob, oi?
Així que quina és la solució aquí en codi.
ESTUDIANT: [inaudible].
DAVID Malan: Exactament.
Així que només he de fer aquest truc final, pel que estic passant en un marcador de posició,
com un farciment en l'espai en blanc, com ho vam fer fa un moment.
Però per cent s és ara que omplen l'espai en blanc.
Així que, finalment, anem a revelar una última detall perquè no hi ha màgia.
Vaig a seguir endavant i desfer-se de Helloween.
Vaig a seguir endavant i desfer-se de a.out.
Així que ara tinc cap programa, només el meu codi font.
I jo vaig a córrer una comandament lleugerament més llarg, Clang
llançar-o hola LCS50 tauler hello.c.
>> Ara això està començant a espècie d'anar per una orella i surt per l'altre, potser.
Però just esmicolar el que això està fent.
Clang és el compilador, LCS50 guió deliberadament al final
fa què en una frase?
Enllaços a la biblioteca CS50.
Agafa els zeros i què el personal es
i els abarrota en el meu propi programa.
Així que l'última qüestió que ens ocupa és, el que és ruixada o hola probablement
fer, fins i tot si vostè mai ha vist aquesta sintaxi abans?
>> Emissió d'un programa que és que no cridi l'a.out per defecte.
Més aviat s'ha nomenat hola.
Així que ara no hi ha a.out.
El fitxer o directori no existeix, perquè vaig dir explícitament
trucar a aquest programa hola, per la qual cosa Ara puc escriure un nom com aquest
i ha de comportar-se.
>> Ara, francament, noi és que poc interessant tenir
recordar tot això petita minúcia, oi?
Així que seguirem endavant i desfer-se de hola de nou.
I ara anem a tornar a un món en el que n'hi ha prou dir hola fan.
Però aquesta és la màgia que que està fent per tu,
aquest és el tedi que que està fent per vostè.
I com els nostres programes i problemes es tornen més complexos,
que serà veritablement el seu amic.
Com que no és massa llarg a partir d'ara
comptar amb programes que s'escriuen no amb un arxiu, però diversos arxius,
i fer que automatitzarà el procés de compilar tot això per a nosaltres junts.
>> Així que ara imprimir.
printf està dins d'aquest arxiu, estàndard I / O de punt h, que hem vist abans,
però hi ha més a printf que això.
Hi ha barra invertida n, però també hi ha un munt d'altres seqüències d'escapament.
I seqüència d'escapament és només un forma elegant de dir alguna cosa
que comença amb una barra invertida, no una barra, una barra invertida,
i ho fa alguna cosa especial.
I no ens aturarem en la majoria d'ells, però per què hi ha barra invertida doble cita,
Què et sembla?
Per què existeix aquesta seqüència estranya de caràcters, les cometes dobles barra invertida,
Per què podria ser això útil?
ESTUDIANT: [inaudible].
DAVID Malan: Exactament, oi?
Penseu de nou al nostre programa hola món que hem vist unes quantes vegades ja,
cada vegada que he vist aquest món hola programa hem tingut cometes dobles dins
dels quals és hola coma barra invertida n mundial.
Però pensa a si mateix, ¿Què passa si en realitat
volgut imprimir una cometa?
El seu primer instint podria ser, no ho sé saber per què jo podria voler fer-- aquí,
podem ser una mica passiva , Hola amic agressiva.
Podríem voler fer una cosa així.
>> Però per què és això ara problemàtic?
Fent cas omís de les cometes tipogràfiques de banda que keynote va fer per nosaltres automàticament.
Per què és això un problema?
>> Exactament.
Perquè tenim com 4 cometes.
Bé, la primera d'elles, probablement, va amb el segon,
i potser el quart va amb la tercera,
o, vull dir que no estic segur, ni és l'equip que serà.
Ordinadors de nou, compiladors una vegada més, són bastant ximple.
Ells només fan el vostè els diu que fer.
I si no és inequívoca que són probablement va a llançar un error.
>> Si no és inequívoca pel que fa a com fer una mantega de cacauet i gelea
coses estranyes podrien arribar.
És la mateixa idea.
Ara n'hi ha prou amb dir que hi ha algunes altres seqüències d'escapament,
però anem a arribar a aquells en poc temps.
Es tracta fonamentalment d'escapament seqüències representen alguna cosa
que és possible que no pugui amb massa facilitat en el teclat,
sense confondre a l'equip.
>> Ara mentrestant tenim marcadors de posició en printf.
Percentatge d, que també es pot escriure en gairebé tots els casos com cent i,
és un marcador de posició per al tipus de dades?
Quin tipus de valor?
Un nombre decimal.
Així que en realitat anem a començar usant cent i perquè és
una mica més simple, com un nombre sencer.
I per cent.
Un enter que passa a ser decimal.
>> Percentatge s ja vam dir era un marcador de posició per a una cadena.
Que és només una paraula, una frase, un paràgraf, un assaig, el que sigui.
És una seqüència de personatges de certa extensió.
I veurem en poc temps alguns d'aquests altres.
Però per cent c és per a un sol personatge.
Percentatge f és per a un nombre de punt flotant,
com un nombre real que té un punt decimal en el mateix, que
és clar que no un enter.
I hi ha un conjunt munt d'altres també.
>> Mentrestant, en C, i en una gran quantitat d'idiomes,
tenim diferents tipus de dades.
Els diferents tipus de bols de vidre si es vol.
El recipient que utilitza l'última vegada va ser per pilotes de taula,
però també podem emmagatzemar diferents valors com caràcters i cadenes
i nombres enters en un recipient, com una variable, i C té aquests.
Char és el tipus de dades, el tipus de variable,
en la qual pot emmagatzemar un caràcter.
Float és un tipus de variable en que pot emmagatzemar un nombre real.
>> Int és per descomptat per a un int.
I en lloc ridículament anomenat un llarg temps
és on es pot emmagatzemar en essència un nombre molt llarg, fins i tot amb
més dígits i després una típica botiga de força int.
Però anem a tornar a que en poc temps.
>> En CS50 punt h mentrestant l'altre fitxer de capçalera
que hem vist un parell vegades en ús, hi ha
dos tipus de dades que no existeixen en C normalment.
Un d'ells és la cadena, i ja veurem en unes setmanes realment què cadenes
estan per sota de la caputxa.
I un és bool.
I una bool és una variable que només pot tenir en determinats valors.
I just basat en la setmana de l'última explicació d'Scratch,
i més recentment C, Què faria vostè endevinar
són els dos valors possibles per algun contenidor que és de tipus bool?
>> Sí i no.
Un i zero.
Veritable o fals.
I de fet és l'última que tendeix ser convencional en una programació
llenguatge, dient alguna cosa com a veritable o fals.
>> Mentrestant la biblioteca CS50 ve amb un munt de funcionalitat
que el personal va escriure per a tu, a més de només aconseguir una cadena.
Escrivim en funcions avançades que pot aconseguir un nombre enter d'usuari,
obtenir un sol caràcter, aconseguir un flotador, que
és només un número amb punt decimal.
Obtenir un llarg temps, una realitat gran valor des de l'usuari.
Així que només hem vist això en acció en forma de GetString.
Però a través d'aquestes funcions aviat serà capaç d'escriure
programes que reben l'entrada de l'usuari.
>> Mentrestant considerar aquest programa, i considerar
la forma en què ara podríem començar a sumar a la mateixa amb noves construccions.
Un viatge llampec ràpida i després veurem
en algun escrit alguns programes manualment nosaltres mateixos.
A partir d'ara, si volem aplicar una condició,
no va a semblar una petita meravella de puzzle bastant.
Es va a mirar una mica més arcà.
Però aquesta és la canònica estructura d'una condició en C.
>> La paraula si, dos parèntesi, dins de la qual
hi haurà algun tipus de l'expressió booleana.
Ara el slash slash en el medi, és a dir
en aquest moment una mena codi de marcador de posició pseudocodi.
Però més aviat, cap línia de codi en C que comença amb slash slash
és un comentari.
>> És com una nota adhesiva que et poden posar en un assaig, imprès en paper.
És una nota per a vostè mateix.
No té funcional impacte en el programa.
És una mena de recordatori, és la seva pròpia documentació pel que fa al que està passant.
Així que fer això en aquest moment és una espècie de marcador de posició
per al que hi ha dins d'aquestes claus
finalment es va a fer alguna cosa.
>> Mentrestant vostè té dues bifurcacions en el carretera, un if-else construir així.
Vostè pot si, elseif, Else.
Ara val la pena assenyalar, especialment si vostè ha estat al voltant de google
en línia per als recursos de cada curiositat, o si vostè pren
un el curs de Llibres recomanats sobre C,
vostè veurà que els éssers humans tenen un munt de diferents preferències sobre com
per expressar-se en el codi.
Algunes persones els agrada posar la claus com ho he fet aquí.
Algunes persones els agrada posar l'arrissat suports per exemple fins aquí.
>> Algunes persones els agrada posar la vigilés aquí i després això aquí.
Hi ha un nombre de maneres de codi d'escriptura, i cap d'ells
tenen raó per se.
Encara que hi ha uns quants que són bastant malament.
Però hi ha no-- si això és en última instància, un debat molt religiosa.
De fet, un dels més molestos coses de la informàtica
és com obstinat els informàtics poden ser.
I trobareu amb el temps que fins i tot a desenvolupar preferències personals
que fa a com el codi ha de mirar.
>> No només es comporten, no només crear una sortida, però la manera com ha de ser estèticament.
Així que el que farem és que et guiarà al llarg el camí cap a, almenys per ara,
un estil CS50 estàndard que almenys manté les coses uniforme i fàcil de llegir.
Però més en els distincions d'aquí a poc.
>> Una expressió booleana en C, si volgut dir si aquesta condició és vertadera
i això és una altra condició cert, no s'escriu la paraula
i, com ho faria en anglès.
En el seu lloc, utilitza ampersand ampersand, per raons que tornarem a.
Si vols dir o utilitza dos barres verticals, que en un teclat dels EUA
generalment per sobre de la Intro següent tecla a la barra invertida.
I això vol dir simplement si aquesta condició o aquesta altra condició és vertadera fer-ho.
>> Mentrestant hi ha aquesta El més boig, que
tindràs ocasió per utilitzar de tant en tant.
Però és només una alternativa manera d'expressar-se.
Això, per ara, anem a estipula, és només
una altra manera covarda d'expressar si, elseif, elseif, elseif, elseif.
És només el format en termes dels casos, en què, literalment,
enumerar els valors que és possible que vulgueu comprovar.
>> Mentrestant bucles.
Vam veure una comparació de Raspe amb un bucle.
I jo vaig a agitar la mà en el que cadascuna d'aquestes coses vol dir.
Però noti que un bucle molt sovint comencen amb la paraula clau per.
O s'iniciarà amb la paraula clau temps.
O s'iniciarà amb la paraula clau fer, i acabar amb la paraula clau quan.
>> Però el que estem a punt de veure és el més els agrada.
Aquí està, en general, en C, com et poden declarar una variable i donar-li un valor.
En C no és suficient, com en Scratch, que acaba de
dir dóna'm una variable anomenada alguna cosa.
Has de dir-li a C, i dius seu compilador, més específicament,
quin tipus de valor li vol posar en el recipient de vidre.
>> És un nombre enter?
Si és així, vostè ha de dir, literalment, int i després
el nom de la variable, a continuació, un punt i coma.
Si en comptes volies corda i vas cridar que s com vaig fer el meu codi aquí avui,
vostè diria coma cadena s.
Una vegada que vostè vol donar-li un valor a continuació, pot utilitzar el signe igual,
també coneguda com la operador d'assignació.
I noti com cada d'aquestes línies de codi
té el punt i coma al final de la mateixa.
>> Però, francament, això només sembla una mica lleig.
Per què no puc dir a l'ordinador, donar em una variable i inicialitzar a zero.
És a dir, em dóna un bol de vidre buida.
Mentre que vostè pot.
I així un de la sentència et crida vaig haver de fer amb el temps estilísticament
És a dir, s'escriu el codi d'aquest tipus, o Quin tipus de netejar i impressionar
la gent per escriure dues línies com un de sol.
I això seria considerat generalment una forma més elegant
d'escriure el seu codi estilísticament.
>> Funcions estem per descomptat vist.
Ells van a tenir aquest format.
El nom d'una funció, alguns parèntesi, i després potser alguns
el que hi ha dins.
O és possible que vegi els usos de banda múltiples funcions
al costat de l'altre, com si alguna cosa com això.
Ara, com una tangent, ho fa aquesta broma ara tenen sentit?
>> [Rialles]
Això no vol dir que és divertit, però és no potser fer una mica més de sentit.
Així que ara anem a entrar al Aparell CS50 per un moment.
I m'ho dius a mi obro teaser aquí.
>> I, de fet una de les raons per introduir Catàleg IKEA
i el parpelleig de la imatge l'iPhone fa una mica
era lligar junts realment a la fet que fa tot just uns anys, el 2007,
aquesta peça de codi era en llibertat, que va ser
un de la primera aplicació d'una peça de programari
que fa el que s'anomena jailbreaking.
Per aquells no familiaritzats, jailbreaking una mena telèfon o un iPhone
significa essencialment esbrinar trobar la manera de fer les coses
amb el que l'empresa que ho va fer no tenia la intenció.
Igual que vol instal · lar certa programari que no està a la botiga d'aplicacions,
jailbreaking seu telèfon que fer les coses d'aquesta manera i més.
Però el que va ser molt divertit en 2007-- i ha hagut
dotzenes de diferents versions d'aquestes coses des de llavors,
en tot tipus de les Llengües és que aquest programa aquí, anomenat iUnlock,
en realitat va ser escrit en C. I així em aixecat el codi font d'aquest,
només per mostrar amable de la seva part de les similituds amb els constructes
que hem estat discutint fins ara.
Ara hi ha molt més complexitat aquí el que hem vist ja a classe.
Permetin-me desplaçar-se cap amunt una mica aquí.
>> Però notem estos-- així ens adonem d'alguns coses-- notar aquestes línies aquí,
incloent I / S estàndard dot h.
I tots-- línia 24, favor-- compte d'E / S estàndard
dot h i un munt d'una altra Els arxius que pel que sembla altres persones
han escrit.
I si ens desplacem a través d' això, poc arbitràriament,
Avís que no sé com escriure tot això a mi mateix necessàriament, però,
però no si.
Així que pel que sembla això té una branca.
>> I si em desplaço una mica a més hi ha un altre cas.
Si em desplaço, crec voltant de la línia 100 que vaig veure per.
Així que no estic molt segur com funciona això, però,
però això és un bucle que va a m'ho dius a mi iterar un nombre de vegades.
I si em desplaço tots la forma de la part inferior
Veig que hi ha una funcionar aquí anomenat
principal, i alguns crèdits addicionals per al seu plaer de la lectura.
>> Així que això només es dir-- i posarem aquesta línia entre la font del curs
codi avui-- que fins i tot alguns d'aquests dispositius que donem per fet,
al final del dia que segueixes utilitzant aquestes construccions bàsiques que hem
introduir estat ja fins ara.
Ja n'hi ha prou d'això.
Molt bé, així que ara anem a realment construir alguna cosa.
>> Anem a anar més enllà d'una cosa així com hello.c, i obrir aquest,
anem a escriure aquest programa aquí.
Vaig a seguir endavant i escriure un programa anomenat adder.c,
el propòsit en la vida serà com la meva primera calculadora super simple
que només suma un parell de nombres.
No per això és un disc problema, sinó perquè
em permet ara lligo junts un parell de coses.
Així que vaig a seguir endavant i incloure I / S estàndard dot h i CS50 punt h.
Vaig a dir void main int.
I de nou en el futur anem a tornar-hi
en aquest context i mitjans buits.
>> I ara vaig a dir alguna cosa com printf, dóna'm un enter.
I ara en la meva segona línia, Com m'expresso tal
que vull declarar una variable això va a emmagatzemar un int?
Literalment el que puc escriure si vull crear una variable que emmagatzema un int
Què li diries?
int a igual getInt.
És clar, per la qual cosa funciona.
I només per la coherència amb el codi que
veure en línia, em canvi de deixar que això a x, només perquè x
és un nom de variable comú utilitzar, almenys en àlgebra.
Ara vaig a seguir endavant i fer printf nou.
Dóna'm un altre sencer.
I ara me'n vaig a classe d'aprendre d'aquest patró,
Vaig a dir int i arriba a getInt.
>> I nosaltres no hem fet servir GetInt abans, però només
com GetString va i es posa una cadena, com Javier va fer de l'audiència,
de manera similar fa getInt començarà a parpellejar el símbol.
I eficaç d'espera per a l'usuari per donar-li un sencer, escrivint en
i prémer la tecla Enter.
Ara, finalment que faré això, la suma printf de--
i m'ho dius a mi ara-- luxe i cent i el percentatge de I està present
i exclamació punt barra invertida n.
I què creus que em vaig a posar en ara com les entrades addicionals
a printf?
>> No vull dir literalment citar x fi de la cita.
Vull classe en x i llavors, i ara anem a obtenir de fantasia
i anem a suposar podem fer el que volem.
El que vull dir a continuació?
x més i.
I de fet que funcionarà.
Ha programació mínimament idiomes fer entendre l'aritmètica bàsica,
i pel que aquest deu fet la feina.
>> Així que m'ho dius a mi anar endavant i fer-ho fer escurçó en la meva finestra en blanc i negre
aquí baix, Enter.
Línia de Cryptic però cap error missatge, pel que és bo.
Dot slash escurçó, dóna'm un enter, 1.
Dóna'm un altre nombre enter, 2.
La suma d'1 i 2 és 3.
>> Molt bé, així que una força trivial programa, però què es fa?
Es em va permetre utilitzar una funció cridar aquí, cridar a una altra funció aquí,
dues trucades a getInt un tercera crida a printf,
i després l'ús d'aquests marcadors de posició.
Així que és una mica més sofisticada que l'última vegada.
Però el que si vull aconseguir una mica més de luxe?
>> Déjame anar per davant i ara faig això.
Deixin-me seguir endavant i crear un nou arxiu anomenat condicions zero.
I em vaig a guardar algun temps per a les classes ares
i simplement enganxar en aquesta codi com un punt de partida.
I ara només posaré alguna cosa nova aquí al centre.
Així printf m'agradaria un sencer per favor.
I tot el codi està disponible a la pàgina web del curs,
vostè no ha d'escriure tot cap a fora a classe si vostè preferiria no fer-ho.
int, i ara vaig a utilitzar, en lloc de x i y,
Vaig a utilitzar n, que és probablement el nom més comú
per a un nombre sencer en un programa d'ordinador.
I ara vull fer una poc judici aquí.
Vaig a veure si n és més gran que 0, llavors
Vaig a dir Whoops printf--, printf-- que va triar un nombre positiu,
exclamació punt barra invertida n.
Tanca aquesta.
Else Vaig a imprimir printf que va triar un nombre negatiu.
>> Ara abans que em crides, anem a executar aquest programa.
Déjame anar per aquí.
I com puc compilar un programa anomenat condicions tauler 0?
Feu condicions tauler 0.
Tipus d'un nom estúpid, pero-- maleïda sigui.
Bé, bé moment d'ensenyament.
Per què va esclatar?
>> Què vaig fer accidentalment dic aquest fitxer?
Pot tipus d'inferir des de la fitxa fins aquí.
Així que no és dolent que va fer això, perquè això
que passarà potser per a alguns de vosaltres.
Així que vaig posar el nom del meu accident font de codi de condició 0.
Però la meva codi font per convenció ha estar en un arxiu anomenat condició 0 tauler c,
o el que sigui punt c.
>> Així que m'ho dius a mi arreglar això.
Igual que Microsoft Word puc pujar a desa i faci condició 0 punts c.
Ara acaba de ser ordenada estic seguirà endavant i eliminar
condició 0, que era el meu vella versió.
I ara farem fer condició 0, Retorn.
Bé, sembla bona.
>> Condició 0, Retorn.
M'agradaria un enter favor, 50, que va triar un nombre positiu.
Ara què hi ha de negatiu 50?
Vostè va escollir un nombre negatiu.
I ara, 0.
Bastant segur 0 no és negatiu.
>> Així que això és una espècie d'error lògic.
Com puc solucionar això?
Perquè si n és menor que 0, fer això, la resta podem tenir una sucursal a tres bandes,
printf vostè va escollir 0.
Així que ara si em torneu a executar aquest programa, després de la compilació
de nou amb la marca, i ara tornar a executar condició 0, ho vaig a veure aquí
és 0 em dóna aquesta sortida.
Llavors, on anem amb això?
>> Bé, és molt fàcil perdre de vista del bosc pels arbres.
I així ens permeten concloure amb aquest video de 2 minuts i mig
que en última instància és una mica d'un anunci de Google,
però que realment és testimoni de el que fins i tot utilitzant aquests edificis bàsica
blocs que en última instància, podem fer un cop tenim una mica de programació
espavilats en el nostre haver.
>> [REPRODUCCIÓ DE MÚSICA]
>> Saroo Brierley (Veu): Va ser fa 26 anys,
i jo estava a punt de complir 5.
Arribem a l'estació de tren i abordem el nostre tren junts.
El meu germà acaba de dir vaig a quedo aquí, i vaig a tornar.
I vaig pensar, bé ja saps, Pot ser que també acaba d'anar a dormir
i ell només em despertarà.
I quan em vaig despertar la següent dia, el conjunt de carro
estava buida en un tren fora de control, un fantasma tren em prenent no sé on.
>> Jo vaig ser adoptat a Austràlia, a una família australiana.
I mare havia decorat la meva habitació amb el mapa de l'Índia,
que es va posar al costat del meu llit.
Em despertava cada matí veure aquest mapa, i per tant
quin tipus de manté viu el record.
La gent deia, ets tractant de trobar una agulla
en un paller, Saroo mai el trobarà.
>> M'he flashejat dels llocs que em solia anar, els centelleigs de la meva família
enfronta.
Allà hi havia la imatge de la meva mare, seure amb les cames creuades,
només veient plorar.
La vida és tan difícil.
Aquest era el meu tresor.
I jo estava buscant a Google Map i adonat que hi ha Google Earth també.
En un món on es pot fer zoom a, Vaig començar a tenir tots aquests pensaments
i quines possibilitats que això podria fer per mi.
Em vaig dir a mi mateix, ja saps, no tens tinc tots aquests records fotogràfics
i punts de referència d'on vostè està, i vostè sap el que la ciutat s'assembla.
Això podria ser una aplicació que que pot utilitzar per trobar el camí de tornada.
>> Vaig pensar, bé vaig a posar una punt a l'estació de tren de Calcuta,
i una línia de ràdio, ja saps, que ha de buscar en aquesta zona.
En certa manera em vaig trobar amb aquestes vies del tren.
I vaig començar a seguir, i Vaig arribar a una estació de tren que
reflecteix la mateixa imatge el que estava en els meus records.
Tot igualat.
Només vaig pensar que sí, em saber on vaig.
Només vaig a deixar que el mapa que tinc en el meu cap
em porten i em porti de tornada a la meva ciutat natal.
>> Vaig arribar a la porta de la casa en què vaig néixer.
I caminem per uns 15 metres al voltant de la cantonada,
hi havia tres senyores de peu exterior, al costat de l'altra.
I el del mig va fer un pas endavant, i Només vaig pensar, aquesta és la teva mare.
Ella es va acostar, em va abraçar, i estàvem allà durant uns cinc minuts.
>> Ella em va agafar la mà i ella em va portar a la casa
i es va posar al telèfon, on ella sonar la meva germana i el meu germà
per dir que, ja saps, el teu germà té només
de sobte va aparèixer com un fantasma.
I després la família es va reunir de nou.
Tot està bé, Vaig ajudar a la meva mare,
no ha de ser treballar com a esclaus.
Ella pot viure la resta de la seva vida en pau.
>> Era una agulla en un paller, però l'agulla hi era.
Tot hi és.
Tot el que tenim al món que està en el toc d'un botó.
Però vostè ha de tenir la voluntat i la la determinació de voler-ho.
>> [REPRODUCCIÓ DE MÚSICA]
DAVID Malan: Meravellosament dolça testimonial
només el que pugui ara veure amb la tecnologia.
Ens veiem la setmana que ve.