[Powered by Google Translate] Lexi ROSS: Bé, hola a tots. Benvinguts a la primera CS50 supersección. Aquesta serà l'única setmana de supersections. Després d'això, se li regular amb la seva secció assignat TF. Però aquesta setmana, la nostra feina en una mica d'una diferent format, tot i que el format actual, com s'anirà durant la següent hora i mitja més o menys, serà bastant similar al que se li veiés per la resta del semestre. Llavors, què farem és començar per anar a través de la secció part del seu conjunt de problemes. Així que si vostè ha llegit sobre el conjunt p, que esperem que pugui tenir, veuràs que hi ha una part que es diu "A la Secció de Preguntes ", i aquests estan destinats a estar fora de nou en les seves seccions. Així que tens un avantatge per ser aquí, en què s'arriba a repassar aquestes qüestions més conceptuals basats. I després d'això, anirem en els dos últims preguntes secció, que són més busseig a preguntes de codificació de tipus. Així que estem realment tindran vostès prendre uns pocs minuts per a cada pregunta, tracti de resoldre'ls pel seu compte, i llavors anem a reunir-se amb el nou CS50 Espais d'eines i repassar les respostes perquè tots tinguin la codi correcte per a la seva revisió. Així que un parell d'anuncis. No s'oblidi que hi ha horari d'oficina cada nit d'aquesta setmana en Annenberg 8 a 11, de manera que prenen avantatge d'aquells. I també, no arrenqui el p massa tard a la setmana. Comenceu aquesta nit o demà a la nit com a molt tard. Vostè es penedirà si vostè espera massa temps per començar i que tingui problemes. Així que el nostre consell i definitivament començar d'hora. Això serà una bona manera de començar a treballar amb aquestes preguntes de secció. Així que estic Lexi, per cert. Sóc un TF. I aquest és Donen, que també és un TF. Donen Bradley: Hey, nois. Lexi ROSS: I ell va a aconseguir començar amb les preguntes. Donen Bradley: Molt bé. Així que vaig a introduir una mica compilador parella qüestions que parlarem i només ha d'anar a través de algun tipus d'idees conceptuals que hem d'executar realment codi, ja sigui en un aparell o amb la nostra espècie de fals electrodomèstics, Executar CS50 i Spaces. Així que anem a veure si algú en l'audiència té alguna idea sobre el que estem parlant. Llavors, què és una biblioteca en el context del codi? Algú té alguna idea? Bé. Sweet. PÚBLIC: Igual que un balanç de les funcions que una altra persona ja està programat que podem construir? Donen Bradley: Exactament. Així que una biblioteca és un estoc de funcions que una altra persona ha programat ja que no ha de ens torna a posar en pràctica. Així que tenim coses com l'estàndard d'E / S de la biblioteca, el cs50.h biblioteca, que són coses que el món, la Internet, el personal ha fet que fa que la nostra vida més fàcil com codificadors. Llavors, ¿com imprimir les coses a una pantalla? No tinc ni idea, printf ho fa per mi. És una cosa que algú més ja ha fet que sigui impressionant i funciona bastant bé. Bé. Així que per utilitzar les biblioteques, d'altra banda, però, té per fer realitat alguna màgia extra amb el seu codi. Així que cal usar coses com aquesta # include. Què significa això? Quin paper ha de jugar quan ho tens en un programa? AUDIÈNCIA: Et permet fer ús de totes les funcions que són [Inaudible] biblioteca pel simple ús de les definicions que ja tenen [Inaudible] biblioteca. Donen Bradley: Molt bé. Et permet tirar les funcions de biblioteca en el codi, però ho fa d'una manera que no és exactament el mateix que com -Lcs50, que arribarem a un minut. Simplement deixa que el compilador sap que hey, no són aquests funcions que sorgiran en el seu codi. Tingueu en compte que si no estan completament descrits en el codi que està davant teu, hi ha alguna cosa de funció de biblioteca que es farà càrrec d'ella. Així, en el cas de printf, que anem a repassar un parell els temps d'avui, és l'estàndard d'E / S de la biblioteca. Així que encara que no es defineix printf qualsevol part del meu codi això, la estàndard d'E / S s'encarrega d'això per a mi, i vaig a fer # include stdio.h, i que es tiri en aquestes funcions que no sempre han definit. Llavors, ¿quina és la diferència, doncs, entre el # include i-lcs50? Què fa-lcs50 faig quan ho passen a la compilador, com Clang? Algú té alguna idea? Bé. Sí? AUDIÈNCIA: Li permet accedir a la biblioteca CS50? DONEN BRADLEY: Permet accedir a la biblioteca CS50 en que li diu al compilador, Clang, que bé, aquí és on de seguir per aconseguir aquestes funcions. Així que el # include diu que hi ha aquestes funcions en algun lloc. El lcs50-diu, vaig a aquest lloc en l'equip - aquesta és la biblioteca CS50 - i tiri cap amunt el codi real per aquestes funcions. Això té sentit, tothom? Així que aquestes són totes les coses que ajudaran al seu compilador juntament amb fer que el codi executa realment. Una pregunta ràpida. La gent sap el que és un compilador? Bon sentit? Es tracta bàsicament de obtenir les escrit que vostè té, convertir a binari, la conversió en codi de màquina, per la qual cosa l'ordinador pot entendre. I sense més preàmbuls, anem a entrar en la més actuals exercicis de codificació que vostès van a passar una bona estona enfonsant les dents en, i Lexi a anar sobre això. Lexi ROSS: D'acord. Awesome. Així que anem a anar més de dues preguntes aquí. Així que la primera és en realitat, es pot veure, és una mica petit aquí, però essencialment li està demanant que escriure un programa per prendre una mica d'entrada de l'usuari. No estic segur de per què hi ha un quadrat negre allà. És misteriós. Ha d'estar bé, però. Per tant, vol que vostè prengui una entrada d'usuari en graus Celsius, convertir aquest a Fahrenheit, i després indicar a l'usuari quina és la temperatura estaria en Fahrenheit. Així es pot veure una mostra d'entrada / sortida de seqüència aquí. Les entrades d'usuari - després de Celsius, la negreta es refereix a d'entrada de l'usuari. Així l'usuari introdueix 100, i les sortides de programa Fahrenheit, 212,0. I una distinció important en aquest programa és que estem tindrà un sol decimal, així que anem a veure com es fa que també. I una altra cosa a tenir en compte és que estem usant a.out perquè Clang, el compilador automàticament els noms de la seva binari arxius a.out llevat que s'especifiqui amb una bandera determinada per donar que el seu propi nom, però per ara només utilitzarem el defecte, a.out. Així que realment prengui uns minuts i tracti d'escriure una mica de codi per aquests mateixos. Així que és 4:15. Així que a les 4:20, anem a tornar i - oh bé. Espais. Cool. Això és com el que anomenem codi esquelet en què és un esquelet, però cal omplir la carn de la programa per fer realitat l'executi. Així que vostè pot veure les directives # include incloure-hi CS50 i stdio. Vaig assenyalar en un comentari de la fórmula actual per a la conversió de Celsius a Fahrenheit, en cas que no recordo alt ciències de l'escola o el que sigui. I això és només un esquelet per la funció principal real. Així que tot el que escrigui s'anirà aquí. I per tal d'aconseguir realment a aquest espai - Espais per CS50 es pot accedir usant aquesta URL, que Dan és va a escriure a la pissarra, i vaig a dictar també. DONEN BRADLEY: cs50.net/spaces-- Lexi ROSS: / qWLc - Em sap greu, i. DONEN BRADLEY: I?. Lexi ROSS: No, no, no, no. Això està bé. qYLcYWfg. Per tant, hauria de veure tipus de tots els noms d'aparèixer aquí. Awesome. Això es veu molt bé. Això vol dir que les persones s'estan unint a l'espai. Així que si vostè no ha tingut l'oportunitat de jugar a Espais però, això és realment el que utilitzarà amb els teus TFS a la secció durant tot el semestre. Com funciona és classe de tot el món escriu el seu propi codi, i ningú ho pot veure fins que es prem el botó Guardar botó, el que estic assenyalant en aquest moment. Així que vaig a pressionar Guardar, i si van tots al meu nom, que ha de ser capaç de veure en persones d'aquest Espai, que és Lexis Beryl Ross. Llavors, com es veurà es fa clic en el meu nom, i veuràs Revision 5, que és l'última revisió. Copiar només Revisió 5 en el seu espai fent clic sobre ella. Està bé. Així que anem a anar a través d'aquest problema junts, i estic en realitat va a escriure el codi aquí dalt a la pantalla. Pots ampliar una mica. I després, un cop que hagi acabat, vostè pot copiar la meva última revisió en el seu espai, si vols veure la solució final. Ara, Spaces té la capacitat de que em vagi a veure qualsevol de el codi que vostès han escrit, però només perquè és una secció gran i en realitat no tenen la mateixa tipus de capacitats de discussió com una menor secció, només anirem a través i em vaig sol per escriure el codi. Però definitivament m'atura amb preguntes en qualsevol moment. Anem a anar a través d'ell espècie de pas a pas per fer assegurar-nos que entenem cada part del que està passant aquí. ¿Tot món pot veure aquest text en aquesta llista? Algú vol més gran? Llavors, què és el primer que farem aquí? Bé, en essència, ja que volem obtenir l'aportació de la usuari i volem que sigui una espècie de bona experiència per al usuari, que en realitat vull dir-los el que estem buscant. Així que anem a imprimir exactament el que volem formar part de l'usuari. Així que no et molestis a aixecar la mà, només ha de recitar d'una tirada. Quin és l'ordre per imprimir alguna cosa a la pantalla? AUDIÈNCIA: printf. Lexi ROSS: Awesome. Bé, per printf. AUDIÈNCIA: Hey, Lexi? [Inaudible]? Lexi ROSS: Clar. Així printf, com hem vist amb freqüència en la conferència, és el enviar a imprimir alguna cosa en la seqüència de sortida estàndard. Per això volem demanar a l'usuari que introdueixi un temperatura en graus Celsius. I ara, en realitat vol prendre l'entrada que donen nosaltres i emmagatzemar-lo en una variable. Així que hem après una mica sobre els tipus. Pot algú recordar el tipus que vol per a una variable amb una xifra decimal-hi? AUDIÈNCIA: Float. Lexi ROSS: Float. Sí, impressionant. És un flotador. Així que. I com anem a - gran pista - obtenir el surar per part de l'usuari? AUDIÈNCIA: GetFloat. Lexi ROSS: Això és. Cool. I l'usuari es podrien dir i tractarem de donar una nombre negatiu, però no es preocupi per això per aquest problema ara. Vostè va a preocupar-se que una mica més en la seva tasca en el conjunt de problemes. Així que anem a suposar que ens donen un bon nombre, i ara ens en realitat han de convertir aquest flotador de Celsius a Fahrenheit. Així que anem a mirar les nostres fórmula fins aquí, i crearem un nova variable i en diuen Fahrenheit. Vaig estudiar l'ortografia. És una mica boig, ho sé. I anem a tenir l'ordre de les operacions a tipus de fer seu treball aquí, però utilitzarem parèntesi per estar completament detallat i clar. Així Celsius 9 vegades dividit per 5. Me'n vaig a allunyar una mica el que aquesta pot encaixar en una línia, però vaig a acostar de nou per a aquells que no poden veure, més lluny en la part posterior. Em sap greu. Estranyes qüestions cursor. Plus 32. Bé, algú té alguna pregunta sobre com posar en la fórmula, o algun problema amb això? Si. PÚBLIC: Hem de posar printf abans de la flotació Celsius, Fahrenheit surar línies de guió? Importa l'ordre en què estem? Lexi ROSS: Llavors la pregunta era, què hem de printf abans que realment demanar el flotador? La resposta és que ho fem. D'aquesta manera, que el cursor que l'usuari arribi a la seva entrada flotador es produirà després que l'imprès c, oi? I té sentit si ho penses lògicament, com li demanem a l'usuari una pregunta, i llavors estàs rebre una resposta. Per tant, imprimeix c, i després hi ha un cursor, llavors el usuari pot introduir el valor, com veurem més endavant, quan ens demo. Sí? AUDIÈNCIA: Per què utilitzar un flotador i no una doble? Lexi ROSS: Llavors, un doble, essencialment, com el seu nom indica, ens dóna el doble de la quantitat de precisió com un flotador. Però en general en C, en aquest cas, per un nombre de raons, farem servir flotadors. I això és realment tota la precisió que necessitem només per tipus de conversions de temperatura bàsics. En general, els dobles són més utilitzats en el llenguatge Java, flotadors són més comuns en C. Tots impressionant dreta. DONEN BRADLEY: Una més. Lexi ROSS: Una més. Sí? PÚBLIC: On posar la barra d'espai? Igual, [inaudible] la barra d'espai [inaudible]? Importa? Lexi ROSS: Oh, no. Així que no importa. En realitat hauria d'haver posat un altre espai aquí. Però el que importa és que vostè és consistent tot el codi. Així que si vostè decideix utilitzar un estil d'espai, assegureu-vos mantenir tot el codi complet, per no patir estil punts deduïts. Així que la consistència és la clau. Donen Bradley: Crec que ell estava parlant d'aquest espai. Lexi ROSS: Oh, estàs parlant d'aquest espai? Per la C actual? AUDIÈNCIA: Si. Lexi ROSS: Oh, així que això és només per les mirades, oi? Així que d'aquesta manera quan executa el codi, si no tinguéssim aquest espai aquí, si era així, l'usuari inicia escrivint el nombre i seria aixafat per la dreta en contra dels dos punts després de la C, i es veuria una mica millor si hi havia un espai. I es pot veure que una mica millor una vegada que en realitat executar aquest codi, quan ens acabat. Awesome. Sí, una pregunta més. PÚBLIC: He de posar un punt decimal després d'un dels [Inaudible]? Lexi ROSS: Així que no ho fan, a causa de l'ordre de operacions. Així doncs Fahrenheit ja és un flotador, igual que Celsius, no cal convertir explícitament cap d'aquestes altres nombres com flotadors, encara que en un altre circumstàncies, quan vostè està tractant amb enters, és possible que ha de posar un punt de tirar-ho explícitament com un flotador. Sí? AUDIÈNCIA: Em preguntava si els assumptes de capitalització en aquestes comandes com GetFloat? Lexi ROSS: Sí, bona pregunta. Per tant el dubte era, què hi fa capitalització a ordres com GetFloat? La resposta és sí, així és. Així GetFloat és, com Dan descrivia anteriorment, una biblioteca funció a la biblioteca CS50, i va ser escrit com a capital G, capital F. Així que si no ho escric amb aquests capitals allà, el compilador no entendrà el que funció que et refereixes. Bé. Sí? AUDIÈNCIA: És el principal argument per sempre buit? Lexi ROSS: Sí, aquesta és una altra gran pregunta. Així que el codi que va copiar del meu espai erròniament tingut arguments una mica més. Per tant el dubte era, és l'argument de la funció principal sempre buit, que essencialment significa res? La resposta és no. Vostè pot notar que el codi que va copiar del meu anterior revisió tenia el que es pot veure com res del que realment fa sentit en aquest moment, alguns char * argv, argc. No et preocupis per això ara, però trobaràs més endavant en què fan la diferència. Però si vostè no està utilitzant aquest tipus de funcionalitat que aprendràs més endavant, nul està completament bé. Està bé. I tenim un pas més, i és que volem realment mostrar a l'usuari el que la temperatura es converteix. Així que de nou, farem servir printf, i diguem f, només per mantenir la coherència. I ara farem alguna cosa una mica complicat. Així que anem a utilitzar una marca o un tipus especial de notació, comptar printf per imprimir només un decimal. I algú assabentat del que va a veure agrada, abans que m'escrigui a terme? Sí? AUDIÈNCIA: 0,2% f? Lexi ROSS: Sí, sí. Així que en realitat, és molt estreta. 0.01f de 01% f, i llavors hem de recordar incloure l'altre argument de printf, que és la pròpia variable, que és n. Un últim pas. Pot algú recordar el que està en la nostra funció principal? Sí, allà dalt. AUDIÈNCIA: Return? Lexi ROSS: Exactament. Així que ja que es tracta de retorns principals int, volem també tornen a int. DONEN BRADLEY: Percentatge necessita estar a l'altra banda. Lexi ROSS: D'acord. Em sap greu, nois. Això va ser un error. Així el percentatge ve abans de 0,01. Així que és% 01 f. Els que són una mica difícils de recordar. Moltes persones, com jo, només ha de mirar cap amunt cada vegada que els fem servir. Sí, allà dalt. PÚBLIC: Per què és 0,01 i no 0,2 o 0,1? Lexi ROSS: No ho sé, la veritat. Sap vostè? Donen Bradley: La raó és 0,01 enfront a 0,02, o 0,2, 0,1, és bastant arbitrària a la manera com el programador originalment dissenyat. AUDIÈNCIA: Això no és el que volia dir. No estic demanant la raó. Raó [inaudible] per què. Ho tinc escrit com 0,2, i ofereix dues - Donen Bradley: Si. Així que només ens anàvem a voler un. AUDIÈNCIA: Oh, està bé. Així que vostè podria 0,01 llavors. Donen Bradley: 0,1 probablement també funcionen. 0,01 funciona tan bé. Lexi ROSS: Oh, el 0 podria ser la de mostrar zero, si que és menor que un. DONEN BRADLEY: Sí, crec que té raó. Així el 0,01 mostraria un valor zero si no té res que tornaria a anar-hi de forma natural. Així que si vostè fos, per exemple, posar en el 100 per a C, que seria surten a 212 normalment en graus Fahrenheit, igual que 212 exactament. Si vostè té el 0,01, es mostrarà 212,0, com enfront de només 212. Lexi ROSS: Això és correcte. Així que, bàsicament, li diu a la lectura printf, imprimiu un punt decimal, i imprimir un 0 si és necessari. Si no és així, imprimiu la posició decimal. DONEN BRADLEY: I anem a explorar alguns d'això quan estem que en realitat executa el codi. Lexi ROSS: Això és. AUDIÈNCIA: Així que vaig posar 0,1. Encara imprimeix el seu zero. Donen Bradley: Encara imprimeix el seu zero? AUDIÈNCIA: Si. Donen Bradley: Hm, està bé. Lexi ROSS: Cool. Està bé. Més preguntes sobre el codi abans de compilar i executar? Algú veu algun error aquí, en primer lloc? Algú va veure alguna cosa que hauria d'estar aquí? Si aquest fos el conjunt de problemes, el que seria aquí que no és hi ha en aquest moment? Sí, molt bé. Així que no va incloure comentaris perquè els estic lliurant per via oral, però si jo estigués escrivint això en un conjunt de problemes, ho faria Definitivament vull posar comentaris per indicar el que sóc fent, essencialment, al programa. I et tipus d'aconseguir una sensació per a ella, mentre es mou a través de el semestre, la quantitat de comentaris. No vull ser massa verboso i les línies posades i línies de comentaris per cadascuna de les seves línies de codi, però Tampoc vull no ser prou detallat i deixar el lector a tractar d'esbrinar què diables el codi està fent. D'acord, genial. Tractarem d'executar aquest codi. Bé, em vaig a allunyar una mica. Cool. Així t'adonaràs que hi ha un botó Reproduir aquí. Anem, feu clic a Reproduir. Així t'adonaràs d'aquí, com en l'especificació del problema establert, hi ha el. / a.out. a.out és el nom de l'executable binari, que és una paraula llarga per a un arxiu que conté el codi binari que l'equip s'està executant. Així com ho esperàvem, tenim C aquí. Així que truqui a un nombre. AUDIÈNCIA: 23. Lexi ROSS: 23. DONEN BRADLEY: El programa va tenir molt de temps per executar-se. Només has de córrer de nou. Lexi ROSS: Oh, my bad. Bé. Spaces és exigent de vegades. Es vol que pensis en els teus peus. Bé, 23. Awesome. Tothom creu això? Cool, perquè funciona. Bé. Intentarem un parell més. Anem a provar un cas extrem aquí. En informàtica, quan parlem de casos extrems, ens referim a casos per al programa a executar que són una espècie de al molt vores d'entrades raonables o que les cantonades de prova determinats la lògica del seu programa, i això té més sentit quan fer programes més complicats. Tractarem de 0. Awesome. Tots sabem això. Cool. Alguna pregunta més sobre això abans que es mouen a al següent programa? Molt bé, genial. Així que ara, anem a - Vols fer servir només el meu ordinador? DONEN BRADLEY: Sí, això és bastant fàcil. Molt bé, així que vaig a anar a parlar sobre la fabricació de percentatges. Així que som en essència, en aquest petit exercici següent, serà prendre dues entrades senceres per part de l'usuari, amb l'esperança d'un no negatiu numerador i un denominador positiu, i bàsicament, dividint i la sortida del que surt com una percentatge. Per això volem que accepti només no negatius numeradors i acceptar només denominadors positius, i segueixi preguntant per altres nous si no ha aconseguit el que vol. ¿D'acord? Així que donar-li una oportunitat. Lexi ROSS: Ah, sí, vols fer el - oh, potser la gent hauria copiar la. Donen Bradley: Si. Lexi ROSS: [inaudible] Espais. AUDIÈNCIA: Tinc una pregunta. Si estic fent servir espais i vull salvar [inaudible] el Fahrenheit conversió, puc guardar i després fer una nova - Lexi ROSS: Podríem fer un nou espai, o simplement pot voleu copiar i enganxar-lo en un arxiu de text o cosa per la qual el tinguem. DONEN BRADLEY: Vaig a canviar el meu nom. Lexi ROSS: Pel que acaba de guardar l'última revisió de tofahrenheit.c, així que si vols AAAA Lexis Beryl Ross, vostè pot entrar i copiar aquest últim codi, a continuació, començar en aquest nou, que crec que Dan va a proporcionar un codi esquelet per també. Bé. Donen Bradley: La revisió més recent que tinc a la meva, així que és a dalt aquesta vegada, és la revisió 4, i que tindrà el que necessita per començar. Lexi ROSS: Tot correcte, i copiaré que a la meva també. Donen Bradley: Molt bé. Crec que començarem a anar just per això, si a algú li interessa. Lexi ROSS: Tots estem interessats. DONEN BRADLEY: Anem a començar amb només declarar algunes variables. Així que tenim un numerador, i en nom de la Ara, vaig a començar simplement amb el valor -1, i després vaig a crear un bucle do-while. Mentre que - així que quan ho vull per bucle? Quan vol que segueixi preguntant - ¿Si? AUDIÈNCIA: Quan és menor que o igual a zero. DONEN BRADLEY: Per què no pot ser igual a zero? AUDIÈNCIA: [inaudible]. Donen Bradley: Si. Així que per al numerador, és només mentre el numerador és menor que zero. Té sentit per a la gent? Mantenim un bucle mentre que el numerador és menor que zero, seguim preguntant per dades noves, i seguir exigint que entrada de noves coses. Així que vaig a tenir una mica printf aquí, no negatiu núm -. I després fer el mateix que abans, excepte que fem un GetInt, només perquè volíem fer-ho el més percentatge de intercepcions. Així numerador = getInt. Bé, ara un parell de coses. Necessito aquesta -1 aquí? AUDIÈNCIA: [inaudible]. Donen Bradley: No Per què no? AUDIÈNCIA: Com que vostè està rebent un valor aleatori per part de l'usuari. Donen Bradley: Exactament. Però vull tenir la declaració per aquí? Sí Per què? AUDIÈNCIA: Vostè ha de trobar la part exterior del bucle. En cas contrari, no tindrem la variable per a la resta del programa. Donen Bradley: Exactament. Àmbit d'aplicació. Sweet. Té sentit per a tothom? PÚBLIC: Es pot dir que una vegada més? Donen Bradley: Molt bé. Així que si jo fos a declarar aquest numerador dins del bucle, si Tenia això en comptes de ser numerador numerador int, i em vaig desfer d'això del tot, numerador desapareixeria. No existiria fora d'aquest bucle, perquè tot Està dins de l'abast d'aquestes claus. Té sentit? Bé. Així que per denominador, fem una cosa bastant semblant, int denominador = - i no necessito els iguals - fer, i per al temps en aquest cas, què és el que vull? En quines condicions ho vull encara a llaç a? AUDIÈNCIA: Menys que o igual a 0. DONEN BRADLEY: Menys que o igual a 0. Denominador <= 0. No s'oblidi dels seus punts i comes, nens. Així que fem el mateix que abans, un positiu printf denominador, i obtenim int des d'aquí. Aquí anem. GetInt. Bé. I després, al final, volem imprimir un percentatge. Així que per fer això, el que ha de ser la nostra cadena sembla? printf. Alguna altra idea del que puc fer aquí? Sí? AUDIÈNCIA: Potser el 0,2% [inaudible]. Donen Bradley: Yep. Bé. Vaig a començar amb el primer bit,%% 02%, cometes, coma. I vaig a llançar una nova línia d'aquí, només perquè com noves línies quan estic fent les coses. Quin tipus d'expressió matemàtica puc tenir aquí? PÚBLIC: Els parèntesis i el flotador. Donen Bradley: Good. Per què vull tenir-ho en carrossa? AUDIÈNCIA: [inaudible]. DONEN BRADLEY: Bé, bé. Float. AUDIÈNCIA: Numerador. Donen Bradley: Numerador? Bé, per la qual cosa faig numerador flotador. AUDIÈNCIA: Dividit per - Donen Bradley: Dividit per? AUDIÈNCIA: Denominador. DONEN BRADLEY: Faig només denominador, o faig flotador denominador? AUDIÈNCIA: Just denominador. Donen Bradley: Molt bé. AUDIÈNCIA: I es pot multiplicar per 100. Donen Bradley: I jo que es multipliquen per 100. AUDIÈNCIA: I llavors parèntesi al voltant de l'expressió completa. Donen Bradley: Yep. Bé. Lluir bé? Anem a intentar-ho. -50. Bé, 50. 0, i 100, 50%. Tot va sortir com volíem. Té sentit aquest codi a les persones? Jo en guardar perquè pugui obtenir una còpia. Sí? PÚBLIC: Per què no s'ha de posar [inaudible]? DONEN BRADLEY: On? AUDIÈNCIA: Com, quan dius denominador és igual a [Inaudible]. Donen Bradley: Quan tinc aquí? Per què hauria jo int abans? AUDIÈNCIA: Com que l'altre té int abans d'ella. Donen Bradley: Bé, pel que no estava en un bucle, oi? Així ho declaro int denominador per sobre del bucle, i jo no el tinc al circuit perquè seria declarant un munt de vegades, i no seria en realitat dur a a qualsevol altra part del programa. Lexi ROSS: Sí, l'important és recordar que variables només cal declarar una vegada. Així que imagino que és com introduir una nova variable al món cridant int o float o el que sigui, i una vegada que ha declarat, tot el que heu de fer per canviar-és només en diuen pel seu nom: denominador, o x o i. Només ha de trucar en realitat un int sola vegada. Donen Bradley: Si. AUDIÈNCIA: Pots explicar la diferència entre% d i f% i si mai es declari un variable com un decimal? Donen Bradley:% d i% f Llavors aquí? Lexi ROSS: Llavors d refereix realment a només un dígit, no decimal, que és una mica confús. No hi ha cap tipus de dades real anomenat decimal, i quan voleu imprimir un int, que es refereixen a ella com d%, o %-El que sigui-d. F és per flotador, que t'ho pensaria Seria jo, però en realitat és d per int. DONEN BRADLEY: Sí? AUDIÈNCIA: Així que en l'altre programa, per què no acabem de fer el mateix quan vostè està dient Fahrenheit? Per què no posem, com -? Donen Bradley: En el fons aquí? Vostè podria tenir. Hauria estat completament legítim. M'agrada fer-ho d'aquesta manera, altres persones com separar a terme en diverses línies de codi. De qualsevol manera funciona bé. Què hi ha de nou? AUDIÈNCIA: Pot vostè explicar el que el%% [Inaudible]? Donen Bradley: Bé, de manera que el per cent, per cent. Bé, em passaria això. El percentatge primera s'anomena caràcter d'escapament, i només ho diu que la cosa darrere d'això no és en realitat codi. Així que aquest percentatge en primer lloc, a la dreta, el% 02 f, totes aquestes% 02 f signifiquen alguna cosa per printf com una funció. %%, Jo només volia que en realitat només imprimir una signe de percentatge. Així que no estic dient que hi hagi res important darrere d'ell. Només estic dient que hi ha un signe de percentatge darrere d'ell. Si us plau imprimiu un signe de percentatge. Així per cent, i després un altre per cent. AUDIÈNCIA: Pot demostrar el que seria si vostè té surar sobre la base d'una altra línia? Donen Bradley: Oh sí, clar. Així que estic demanant per mostrar el que es veuria com si jo tingut aquest numerador flotador, tot això matemàtiques, en una altra línia. Així flotador per cent = - i m'agradaria desfer-me d'això i només cal posar en percentatge. I està fent exactament el mateix, només tenen una altra variable. AUDIÈNCIA: [inaudible]. DONEN BRADLEY: Desplaceu-vos cap avall per a què? PÚBLIC: Per a poder veure [inaudible]. DONEN BRADLEY: Què no veus? AUDIÈNCIA: Ho sento, jo estava [inaudible]. Donen Bradley: Si. AUDIÈNCIA: Llavors, si estem reemplaçant el caràcter d'escapament, Suposo que volia tenir un signe de dòlar en comptes, només per exemple, darrere d'un signe de dòlar per cent? Donen Bradley: Nope. És només un dòlar, un sol signe de dòlar, pel fet que un dòlar signe no significa res per printf. La pregunta era, he de tenir un caràcter d'escapament per símbols com signes de dòlar? AUDIÈNCIA: espècie de manera relacionat, existeixen altres casos que hem de saber quan una cosa així com el percentatge signe pot significar alguna cosa [inaudible]? Lexi ROSS: Sí No és necessàriament el signe de percentatge, però la barra invertida veure, com tenim aquí reacció final? Diguem que en realitat volia imprimir un contraatac, tindríem per escapar d'això - i això va a sonar confús - amb una altra barra invertida. Així que si volem imprimir \ \, ho faríem Només has d'escriure allò, o per obtenir informació addicional barra invertida, un altre escapament. I una altra, si volem imprimir una cotització - així Bàsicament, qualsevol cosa que denota una mica de tipus especial dins d'una cadena, volem escapar. Així que diguem que realment vull tenir una cita aquí, ho faríem vull fer \ ". AUDIÈNCIA: Així que és generalment una barra invertida? DONEN BRADLEY: És generalment una barra invertida. Lexi ROSS: Això és. Per alguna raó, aquí, és un signe de percentatge. AUDIÈNCIA: [inaudible]? Donen Bradley: Aquest noi? Això és només per dir, el que està sent dividit aquí és serà tractat com un flotador per al bé de la divisió. Així en el cas de 50 dividit per 100, si no tenen la surar, que només seria 0. Això és tot el que sortiria, perquè 50 dividit per 100, si vostè no està incloent els decimals, és 0. - i tot després de la coma decimal es trunca just fora. AUDIÈNCIA: Um, Per què no ho posem abans denominador també? DONEN BRADLEY: Llavors la raó per la qual no ho posi davant de denominador és perquè quan estàs dividint per alguna cosa un nombre enter, funciona molt bé. Tenir un major nombre en la part inferior no canvia res. Es pot dividir per nombres enters molt bé. Simplement no importa realment. Podria, això no canviaria res. AUDIÈNCIA: Així que si volia tres decimals, ho faria poses 0,03 per cent? Donen Bradley: Yep. Vostè posaria a 0,03% si volies tres decimals. PÚBLIC: I manaments, quina és la diferència entre i que acaba de fer, mentre que a la part superior? DONEN BRADLEY: Així que un document while davant d'un bucle while són dos ordres bastant similars. L'única diferència és que executi el codi un cop, es corre el codi dins del bucle un cop abans fer qualsevol comprovació real. Així que és també la raó per la qual podem dir sense donar denominador un nombre. Així que si et digués int denominador, a continuació, mentre que (denominador <= 0), mai podria fins i tot executar el codi a l'interior. Es farà el registre d'entrada abans - tan aquí. Així que si jo tingués aquest bucle mentre que aquí, jo hauria de tenir denominador és igual, per exemple, -2 o un nombre menor que o igual a 0 pel que en realitat es tracti d'executar el codi interior primer. Així que en termes generals, vol utilitzar un bucle do-while en lloc d'un bucle while quan vostè està demanant la entrada de l'usuari perquè una vegada que s'executa el codi, demanant una cosa que l'usuari li donarà a vostè és en general la millor solució, en lloc de a només confiar en el que poses per començar. PÚBLIC: I sempre és seguit per un temps. DONEN BRADLEY: Do és seguit per algun tros de codi que desitja executar i, a continuació, mentre que algunes condició. Lexi ROSS: Penseu en això com una mena de comandament trencat en dues parts. És un document while, no com aquí hi ha un fer, i després sóc jo va a afegir un temps, és només un document while. AUDIÈNCIA: Entenc la raó per la qual està utilitzant el dos signes de percentatge, però pots explicar per què hem de té el [inaudible]? Donen Bradley: Bé, de manera que el signe de percentatge s'està dient printf, aquí és una ordre que vull que omplir amb algun número. Així que vull que vostè ho ompli amb dos decimals i un surar, i trobarà el flotador al final de la ordre, és aquest percentatge. Això té sentit? AUDIÈNCIA: Yep. Donen Bradley: Molt bé. AUDIÈNCIA: Hi ha alguna cosa sobre el bucle do-while que si la condició no es compleix, si s'obté un nombre negatiu per al numerador, ho seguiré preguntar i se segueix preguntant l'usuari? Donen Bradley: Si. Llavors, si la condició de temps no es compleix en l'extrem de el do-while, que funcionarà de nou al començament. És només un bucle. Així que és com un bucle while que la malaltia no ha estat complert successivament. Només s'executa una vegada més. Si. AUDIÈNCIA: Així que si vostè està fent això, oi, pel teu temps, va posar dues condicions? DONEN BRADLEY: Pots. Depèn del que estàs demanant. Així que vostè pot posar dues condicions en un bucle while si el té tot dins d'una espècie d'operador booleà, que sona lleig, però és bàsicament aquest denominador és menor o igual a zero, o bé retorna vertader o fals, no? O és menor que o igual a zero o no. Així que vostè pot fer altres operadors booleans que vaig a dir, mentre això també és veritat o mentre que aquest també és fals. Així que coses com el i el numerador és més gran que zero, no? Això és demanar, això va sol bucle while denominador és menor de zero i té un numerador positiu. AUDIÈNCIA: I que fas les dues AND, oi? Donen Bradley: Dos AND. Lexi ROSS: Anem a cobrir que més tard. PÚBLIC: Què passa si algú no posa de manera positiva denominador? Si posen en un numerador negatiu, pot sol · licitar a, per exemple, posar en un numerador no negatiu i tenen una ordre per això? Donen Bradley: Podries. AUDIÈNCIA: En aquest moment només diu no negatiu numerador. El que s'utilitza perquè? DONEN BRADLEY: Llavors vostè tindria si una condició, de manera que si voleu numerador és menor que zero. Lexi ROSS: Vostè probablement només vull dividir-lo en més passos, no? Així que la primera vegada que es posa a l'entrada, que acabava de dir donar nosaltres un numerador o el que sigui. I si ho fan malament les coses, aquest podria ser el cas per a un bucle mentre que, en lloc d'un document while, perquè tenim la primera vegada que tenim la getInt, a continuació, mentre que l'entrada és dolent, seguim demanant entrada addicional amb un tipus diferent de text, com que no va funcionar o fer-nos una no negatiu numerador per contra, aquest tipus de coses. DONEN BRADLEY: Sí? PÚBLIC: Com es resolen les coses que [inaudible] el terminal? Lexi ROSS: Bé. DONEN BRADLEY: Sí, no es pot escriure-hi. Lexi ROSS: En realitat, no es tracta d'un terminal real. La pregunta era com esborrar aquestes coses allà baix? La resposta és que no és un terminal real, però direm que estan en un terminal real. Clear. Oh, és un gat. Donen Bradley: [inaudible]? És així, oi? Lexi ROSS: No, això és tot les meves coses. Donen Bradley: [inaudible]. Lexi ROSS: Això és. DONEN BRADLEY: Sí? PÚBLIC: funciona clar si vostè té - com, per exemple s'executa un programa [inaudible] i s'està demanant per alguna cosa, i no vull fer-ho. La forma de fer-ho - Donen Bradley: Control + C? Lexi ROSS: Això és. Així que si vostè està funcionant un programa i hi ha alguna cosa que no va pel manera que vostè ho vol i el que desitja per sortir del conjunt programa, Control + C. Fins i tot si estàs en un Mac, no Apple + C, Control + C. AUDIÈNCIA: Vostè té la versió correcta de la revisió en el seu perfil? Donen Bradley: Crec que ha salvat, no? Si. Lexi ROSS: Aquest és l'espai. Si. Crec que és revisió 11. DONEN BRADLEY: Sí? Audiència: C fer cap suposició sobre el que és un variable és si es defineix una variable però no assigna cosa que immediatament? DONEN BRADLEY: Així que només vaig a acceptar sencers en aquest lloc. Així que si es declara - AUDIÈNCIA: Si jo acabo de fer int denominador punt i coma, ho fa assumeix que és igual a zero o qualsevol nombre -? Donen Bradley: Nope. Així que si no s'assigna, per exemple, int denominador en qualsevol valor, podria ser qualsevol cosa. És la memòria d'edat que es trobava en aquest lloc. Per tant, podria ser negatiu 2 mil milions, podria ser positiu 2 mil milions, i podria estar en qualsevol lloc en el medi. Així que si vostè està realment manejant les coses, assegureu-vos que vostè assignar un valor a les variables. Això, no importa perquè som immediatament assignant el valor, però en termes generals, sí. Alguna altra pregunta? Lexi ROSS: També es pot simplement prendre preguntes en general en aquest punt en el material de lectura, material p set, tot el que tinc estat preguntant, aquest és un bon moment per fer això. AUDIÈNCIA: Així que en els tutorials, Zamyla esmentar la funció d'arrodoniment. Li faria res elaborar sobre com implementar això? Lexi ROSS: És clar, com implementar això? AUDIÈNCIA: Em va dir que era rodona. Lexi ROSS: Oh yeah. Així que, així que tots tenim el mateix vocabulari i aquestes coses, implementar generalment significa realment escriure des de zero. Així que no crec que ella estava parlant d'una espècie d'escriptura la funció d'arrodoniment. Probablement només volia dir com usar-lo. Implementar significa alguna cosa així com crear. Així que en general, un temps en què voleu utilitzar la funció d'arrodoniment que es És a dir, una mena de, per exemple, si vol arrodonir. Em pot donar un context una mica més sobre el que el problema era? AUDIÈNCIA: Per evitar les imprecisions de decimals de manera que un flotador. Lexi ROSS: Això és. Així que el problema amb els flotadors que hem al · ludit tipus d'és que, a causa de la manera com està emmagatzemat a la màquina, no és 100% precís en la manera com es podria pensar la calculadora emmagatzemar. És difícil per a mi per mostrar un exemple sense saber el que el context era. No sé, pots pensar en alguna cosa, Dan? Donen Bradley: Així que si vostè està demanant, per exemple, els números de major de 10 i que està utilitzant flotadors, i va a afegir un a un flotador cada vegada, de vegades va a esperar fins que hagi arribat al 12 abans que dirà que això és realment un nombre més gran que 10. Flotadors tenir alguns problemes seriosos només entre el 32 º i el lloc 33 decimal que anirà, de manera que podria 9,9999999, o podria ser 10.0000001, oi? En realitat no distingir entre els dos, així que si ets esperant que les coses superiors o iguals a 10, és possible que no arribar al que creus que és la iteració 10. És possible arribar al 11. Lexi ROSS: En essència, sí. Quan estàs recórrer una gran quantitat de carrosses, que és quan el imprecisions succeir. AUDIÈNCIA: Em sembla, pel que, bàsicament, és com en el p establert, vol que arrodonir el valor float, i si es posa en 4,24 per a la quantitat de canvi que necessita de nou, si vostè acaba de fer per 100, el que realment canviarà en 423 - Donen Bradley: De vegades, si. AUDIÈNCIA: Així que crec que és igual, com utilitzar la ronda funció en el codi real perquè així no es fa això? DONEN BRADLEY: Així que si estàs arrodonint 424 multiplicant per 100 i el que el converteix en un nombre enter, algunes vegades serà fa 423 pel fet que la imprecisió. I així les coses que vostè pot fer és simplement afegir 0,0000003. AUDIÈNCIA: Però crec que, en realitat, volen que usem la ronda. Donen Bradley: La funció de ronda? Probablement hi ha una funció matemàtica, alguna cosa al matemàtiques de la biblioteca. AUDIÈNCIA: # include matemàtiques. Donen Bradley: # include , i hi ha probablement una funció d'arrodoniment. AUDIÈNCIA: Igual round () -? Lexi ROSS: Bàsicament, perquè es va a arrodonir a cèntim més pròxim. Donen Bradley: Anem a arrencar les pàgines de manual. Així que una eina molt útil, si vostè no sap - que tiri cap amunt el terminal - és que si vas a les matemàtiques home. Lexi ROSS: Cool. Així que vostè pot veure, l'home és l'abreviatura de manual no, home, i que li permet buscar més informació sobre un determinat funció o biblioteca que vostè pot estar tractant. Així que m'acaba d'escriure en matemàtiques home. Permetin-me zoom in DONEN BRADLEY: Podem intentar ronda home, també. Lexi ROSS: Clar. DONEN BRADLEY: I això mostrarà a terme - matemàtiques home a enumerar tot el que hi ha a la biblioteca de matemàtiques, que anem a incloure. Sí, també tenim tot l'any. Lexi ROSS: Així que acabo de fer tot l'home. Es pot veure aquí a la sinopsi, que diu # include , així que és una cosa així com cs50.h, stdio.h. I sembla que en realitat està sobrecarregat, el que significa que pren diferents tipus d'arguments, de manera que es pot arrodonir dobles o flotadors. Donen Bradley: Round davant roundf. Lexi ROSS: Roundf. Sabia Zamyla esmentar roundf o rodona? PÚBLIC: Al tutorial, que era només round (). Donen Bradley: Està bé, així que probablement estava fent servir el doble, a continuació, en contraposició a un flotador. Bé, així que hauria de multiplicar per 100 i després s'arrodoneix, i s'obtindria el nombre més proper a ell, crec. Lexi ROSS: Llavors la funció round retorna la integral valor més proper a x arrodoniment de reinserció dels casos fora de 0, independentment de la direcció actual d'arrodoniment. Per tant, bàsicament, que es va a arrodonir només una vegada que estàs en un valor sencer, de manera que es multiplica per 100 i després tot l'any. ¿Això té més sentit? AUDIÈNCIA: Per utilitzar aquesta funció en un arxiu de C, el que necessita per posar flotador rodó, com si la variable es denomina q, què posar round (float) q, i després d'un parèntesi, o pot simplement cal posar tot l'any, i després q entre parèntesis? Donen Bradley: Així que si estàs tractant d'utilitzar aquesta funció en realitat, hauria de prendre q, q és un flotador, o com es declara? AUDIÈNCIA: Q és un flotador. Donen Bradley: Llavors si q es declara com un flotador, ho faria acaba de prendre tot l'any, i després donar-li q. Vostè podria haver de declarar com un doble en aquest cas. Lexi ROSS: És bo sempre que voleu utilitzar roundf. AUDIÈNCIA: tan sols pogués utilitzar roundf, i llavors q entre cometes? Donen Bradley: No, no, entre cometes, només q. AUDIÈNCIA: Ho sentim, no entre cometes, parèntesis. Donen Bradley: En els parèntesis, si. Lexi ROSS: Em sap greu que va ser una mica confús. Una mica més preguntes? DONEN BRADLEY: Sí? AUDIÈNCIA: només rodons Així anada i tornada als nombres enters? Lexi ROSS: Sí Donen Bradley: Sí, rodones rondes només a nombres enters. AUDIÈNCIA: Així que si volia tenir alguna cosa exacte que necessitava ser [inaudible] multiplicat per 100 i després dividit per 100 de nou si volia - Lexi Ross: Així que si volia entrar en una forma decimal? AUDIÈNCIA: Bé, l'exemple, per exemple, [inaudible] que tenen 1,25, i després [inaudible] 1,24, si es volia mantenir això com 1,25, ho faria multiplicar per 100, s'arrodoneix, i després es divideix per 100 de nou per obtenir 1,25? Lexi ROSS: Això és. Per tant el dubte és, ja que l'arrodoniment, ja que la pàgina de manual diu, s'arrodoneix al valor sencer més proper, significa que un vol multiplicar per 100, el arrodoniment, i es divideixen en 100 de nou per, per exemple, obtenir la correcta dòlars i centaus de valor? I la resposta és - Donen Bradley: No Vull dir, si vostè està rebent un valor en coma flotant, si s'inicia amb un valor flotant de 1,25, això és el que serà interpretat. Així que si ho multipliquem per 100 i després dividir per 100, encara serà interpretat com 1,25, o possiblement 1,249 ... .. 999. Lexi ROSS: Crec que el dubte era, oi es multipliquen, a continuació, utilitzar tot l'any, i es divideix, pel que és - Donen Bradley: Si. Jo encara no crec que canviï res, però. Crec que és encara. Lexi ROSS: Perquè ronda fa - que utilitza nombres enters. Així que si vostè tracta de prop de 1,25, que acaba d'obtenir 1. Així que crec que per tal d'obtenir com la precisió addicional, si això és el que estàs parlant. AUDIÈNCIA: Llavors en quins casos s'utilitza tot l'any, llavors? DONEN BRADLEY: Així que en aquest cas, si voleu, per exemple, el nombre de centaus de $ 1,25, que et multipliqui per 100, ronda, obtenir 125, i deixar-ho com que, com centaus, en lloc de tractar els converteixen a dòlars i centaus. Lexi ROSS: Oh sí, sí, segur. PÚBLIC: Per què necessita per arrodonir que [inaudible]? DONEN BRADLEY: Així que si ho multipliquem per 100 i després immediatament convertir-lo en un enter, que és el més forma útil, és quan vostè ens encarreguem que imprecisió, oi? Així que podria ser 124.999999, i si és així, a continuació, convertir aquest un enter, es deixa caure tot el que fos que està per sota de el decimal. AUDIÈNCIA: Així que et dono [inaudible]. DONEN BRADLEY: Exactament, en lloc de 125, que és raó per la qual desitja arrodonir. AUDIÈNCIA: Em sap greu, podria repetir el que ha dit vostè ha de fer front al que no has de fer? Donen Bradley: Molt bé. Així que el que ha de fer és si vostè comença amb 1,25, multiplicar per 100, i després que la tornada de nombre sencer, que 125 o 124.9999, i aconseguir que l'enter més proper. AUDIÈNCIA: Així que si vostè voltant, que posa l'enter més proper? Donen Bradley: Si. PÚBLIC: Hi ha una manera de limitar, si vostè demana un flotador el que vulguis fer, hi ha una manera de limitar la quantitat de decimals llocs que es poden ingressar un flotador? Lexi ROSS: No s'utilitza la implementació del CS50. Vull dir, vostè pot comptar amb la mida de l'entrada ve donada per l'usuari, però que requeriria una nova implementació de GetFloat, i per això no s'ha de preocupar per això. DONEN BRADLEY: Així que si, per exemple, l'entrada de 1,256, només podria utilitzar 1,25, o vostè podria fer 1,26. De qualsevol manera, crec que l'aplicació diu que pot - AUDIÈNCIA: Vostè només pot haver volta a - DONEN BRADLEY: Sigui el que vol, sí, sempre i quan ho fa algun tipus d'arrodoniment. Alguna cosa més? No ha de ser d'arrodoniment. Lexi ROSS: Sí? AUDIÈNCIA: Si volem comprovar si l'estil de la nostra codi és adequat o el millor estil que pot ser, és que el tipus de coses que calia aparegui en secció, o en hores d'oficina, o és que el tipus de coses podem publicar en privat a la cosa, en la discussió, a continuació, assessorar-se sobre? Lexi ROSS: Llavors no ho fem, en hores d'oficina o en CS50 Discutir, nosaltres en realitat no qualificar el seu conjunt p per endavant per l'estil, però crec que probablement el més útil cosa que podia fer era mirar exemples, i ha de ser capaç de trobar que en el codi de la secció, que ha de ser distribuït en línia, així com les transparències de classe, hi ha han de ser exemples de codi. Però si vostè té preguntes individuals sobre un determinat qüestió d'estil, sens dubte no dubti en fer que el CS50 Discutir, i les hores d'oficina, o en el seu propi temps. Però si és més una mirada general al meu codi, el millor és tipus d'exemples d'ús i tractar d'adaptar al seu codi per això. I crec que és una guia d'estil en - DONEN BRADLEY: Aquí està la guia d'estil. La guia d'estil és impressionant. Se li ensenya tot el que necessita, i cobreix bastant molt tots els exemples coneguts per l'home, o almenys que jo conegui. Alguna cosa més? Està bé. Cool Guys,. Lexi ROSS: Que tinguis un dia genial. DONEN BRADLEY: Gràcies per venir.