JASON Hirschhorn: Benvingut a CS50 secció, tothom. El meu nom és Jason Hirschhorn. Sóc una gran quantitat de TFS seu, però una gran quantitat de persones amb sort s'uniran a nosaltres , Estudiants d'extensió o estudiants en línia tractant de mirar a través de la secció si perdut la seva secció d'aquesta setmana o simplement posar-se al dia si volien revisar alguns materials. Així com pel programa d'estudis, que tots els que ha llegit, correcte? Veig un munt de moviments de cap. Les seccions li proporcionen oportunitats per explorar el curs del material en un ambient més íntim, així com submergir-se en activitats pràctiques. Així que això és bàsicament el que estem va a fer cada setmana. Anirem a través del que tenim determinada com la més important temes tractats en la conferència, i els que probablement també més útil i més probabilitats d'arribar als butlletins de problemes i en proves, i en la seva codificació vida fora del CS50. Així que entrarem en aquests temes, parlar-ne, anar-hi, respondre a qualsevol pregunta que vostès tenen, i llavors farem un munt de problemes de la pràctica en la codificació. Tots vostès van portar ordinadors portàtils, la qual cosa és fantàstic. Aquesta és una classe de ciències de la computació. No obstant això, molts dels exercicis que fem, vostè no necessitarà els seus ordinadors portàtils per. Pot fer-ho en un full de paper. Això és el que vas a fer-ho en els qüestionaris. I de fet, això és una gran manera d' sap molt bé que ho facis alguna cosa si no tens Consulta 50 a invocar ni fer dependre d', comptant vostè va fer cap error. Per tant us convidem a codi en el aparell o run.cs50.net, que és una eina que et permet codificar en línia, però també recomanaria, si no s'ha intentat, mitjançant un full de de paper i tractar aquestes pràctiques problemes en un full de paper. Perquè de nou, això és en última instància, el que serà a instància de proves. Així que anem a començar amb la nostra ordre del dia d'avui. Anem a repassar algunes normes de la secció, anem a bussejar en matrius, funcions, i la línia d'ordres arguments, que és el que vostès han cobert la setmana passada a la conferència i després el dilluns, i el que va a cobrir més de demà. I, finalment, anem parlar PSet2. Si pogués aconseguir una votació a mà alçada si No he mirat al problema de dos sets especificació. Anem a dir tots. Fantastic. Parlarem dels butlletins de problemes en una mica, però si vostè llegeix el conjunt de problemes especificació, que és tot el que ha de fer. Si has llegit abans de venir a classe i la secció de dimarts, es ser una gran posició. Podem passar pel conjunt de problemes, que és el que a fer al final. Anem a anar a través d' la lògica, assegureu-vos tothom està en la mateixa pàgina. Vull que vostè sigui capaç de deixar dimarts sentir-se molt còmode amb el que haurà de fer per conjunt de problemes d'aquesta setmana, i si no ho fa, ho faré amb alegria quedar-se després i treballar amb vostè. Però això és una cosa que has de faig, però crec que seria molt intel · ligent, només per llegir el butlletí de problemes especificació de la classe el dimarts, que sona com un molts de vostès ho va fer. Vaig a començar amb un programa de cada classe per saber on anem. Això també és útil per observar la gent en línia, ja que cada secció es codifica color, així que si vols venir enrere i simplement veure 10 minuts en lloc que tot el tram de 90 minuts, es només pot anar a la secció de codi de color i mirar aquesta part. Així que he intentat trencar en bon mòduls que li permetrà - si desitja tornar i revisar, o d'altres estudiants que són veure una secció per revisar - per trobar la cosa específica que de prestar atenció a la i aprendre més sobre. Sweet. Normes. Sóc un líder de FOP al campus. No sé si algú ho va fer FOP. Algú fa FOP? Una persona va fer FOP. Dues persones van fer FOP. Impressionant. Així FOP és el primer any a l'aire lliure Programa d'Orientació. Prenem estudiants de primer any al bosc i fer les experiències més màgiques de la seva vida, oi? Si. Sona bastant bé. Així que només volia començar la nostra primera secció discutint algunes normes per a la classe i la nostra relació perquè crec són molt importants. En primer lloc, com els que són la meva secció han rebut i s'ha discutit en la qual correu electrònic, m'encanta això. Aquesta és la meva part favorita de l'any. He estat tan emocionada. He estat aquí durant hores d'avui. No he sortit d'aquest edifici, excepte per anar a dinar perquè m'encanta CS50 secció, estimo l'ensenyar, m'encanta treballar amb vostès. Un dels meus grans prioritats, si no és el meu prioritat número u, no només per la categoria, però com la meva altra classes i extracurriculars, és a donar suport a vostès, i ajudar a vostès, i fer tot el possible per assegurar-se que nois tenen un meravellós, divertit, productiu, atractiva, apassionant experiència en aquesta classe. Això és el que estic compromès. És per això que m'encanta fer això. Aquest és el meu número d'una cosa, suport a vostès. Si vostè té alguna pregunta sobre conferència, el conjunt de problemes, secció, vida, fins i tot si vostè vol parlar la vida, no dubti en apropar-se per favor. Tens el meu número de telèfon mòbil, tens el meu correu electrònic direcció, vostè té la meva GChat. Pots contactar amb mi en qualsevol o tots els els cada vegada, però probablement no obtindrà una resposta cada vegada. Tracte de tornar dins de 24 hores. Sovint serà d'aquí 20 minuts o 24 minuts. Hauria d'haver dit que perquè sigui paral · lel. No obstant això, vostè rebrà una resposta molt ràpidament. Si em text d'una hora abans de la conjunt de problemes és degut, et calmarà cap avall i fer exercicis de respiració profunda amb vostè, però si vostè no ha començat, vostè probablement no va a acabar, i Realment no puc ajudar-lo allà tot i que vaig a tractar el millor possible. Així que vaig a fer tot el Jo puc recolzar. Posi arribar si us plau que es troba a la secció de nou, en hores d'oficina si em veus, o fins i tot fora. Estic feliç de fer una cita per reunir- i el treball a través dels problemes amb o revisar material. Així que és el número u, el suport. Faré tot el que pot donar-li suport. Número dos, reunits al centre. Per molt que m'agradaria ser, estic no és omnipotent o totpoderós o que tot ho sap, així que no sé tota la temps si el que estic fent és cada vegada tot, si la forma en què estic ensenyant el esquema l'ajuda a aprendre, o si es confonen en un tema, però no ho fan que aixequi la mà o em pregunten o bé, enviant un correu electrònic. O fins i tot si, de nou, està confós sobre alguna cosa en el conjunt de problemes. Si no s'arriba a mi, Jo no puc saber del cert. Jo faré el meu millor esforç per check-in a nois, assegurar-se que tot és va bé, tractar d'ensenyar les coses d'una manera que serà propici per a la major part de seus estils d'aprenentatge, però si hi ha Puc fer alguna cosa, m'ho saber. En aquest sentit, si vols una mica d'ajuda amb el conjunt de problemes, estic més que feliç d'ajudar amb el conjunt de problemes. Anem a fer un munt de que cap al segon mitjà d'aquesta secció. Però si vostè no ha llegit el problema dels conjunts còpies i que no han vist el passeig a través i no han vist els curts i esperant que et ensenyi tot el que s'ha gravat en vídeo en línia o que es poden trobar al CS50 estudi, això no és realment just amb mi o amb els seus altres companys. Així que si us plau, estic més que feliç d'ajudar vostès, però vostès van arribar a reunir amb mi a el medi. Tenim un munt de recursos per Està disponible al CS50. He esmentat algunes d'elles. Si us plau prengui avantatge d'ells. Si vostè està confós, estic més que feliç perquè els expliqui en d'una altra manera, però no és just que estudiants presentin en hores d'oficina, no han començat gens, i és Dijous a la nit i que estan esperant la TF a caminar a través de cada un dels cosa per al problema que estableix al migdia de l'endemà. Té sentit? Un cop més, si us plau reunir-se al centre. I, finalment, les altes expectatives. Jo estaré de classificació tots els que són en la meva secció, o anotar el seu butlletins de problemes. No s'ha tornat un problema establir zero o un encara. Ho sentim per això. Ens va prendre un temps per finalment instal · lar seccions, i ara podem començar classificació. Els portaré de nou a vostè tan aviat com sigui possible. Aquests són alguns dels meus assessorats per aquí. Els portaré de nou a vostè tan aviat com sigui possible. I per al problema de joc de dos, estarem en HORARI I anem a començar perquè facin a vostè molt ràpidament després d' activa que in En arribar al seu problema d'un retrocés, que obtindrà resultats, com saben des de llegir el pla d'estudis - correcció, disseny, abast, resultats i estil. També obtindrà els comentaris. Els comentaris són més importants que les puntuacions. Crec que és segur dir que. Les puntuacions són només un nombre d'un a cinc. És difícil de llegir en ells. És difícil millorar d'aquells. No obstant això, les observacions s'assenyala específica coses que van fer bé o àrees pot millorar i donar-li una mica de idees per al futur o alternatives formes de fer les coses. Així que per favor, per favor, llegeixi a través dels comentaris. Vaig posar un munt de temps en aquests comentaris. Si us plau, llegiu a través d'ells i no fer precisament desplaçar-se cap avall a la part inferior de la PDF, busqui la seva puntuació, o visiteu el lloc i trobar el seu puntuació i, a continuació, passar per alt els comentaris. Aquesta no és la forma en què està va a millorar. Així no és com es va a augmentar la la seva puntuació final, només mirant les puntuacions. Si us plau mira els comentaris. I al llarg de la línia d'altes expectatives, de nou, com he dit, poden ser qualificats d'un a cinc. Dos, tres i quatre potes són el gran majoria de les puntuacions vas a estar rebent. Uns i cincs són alhora molt rar. Sempre hi ha coses podem fer-ho millor. Cada vegada que codificar un programa, hi ha sempre alguna cosa que podria haver fet millor. Així que en lloc de dir s'obté un cinc tot el temps en tot i ho va fer tot perfecte, no crec que cap de nosaltres realment creiem que nosaltres - o amb sort, no fem tot el perfecte tot el temps. Així que no et preocupis si no va arribar a cinc. A cinc anys no s'assigna a una A, un nen de quatre no s'assigna a una B, a tres fa No en un mapa C. Això no és com funcionen les puntuacions. Igual que David ha dit moltes vegades, en final del semestre tots els seus resultats i aportacions de mi, el teu TF, s'uneixen i determinar una qualificació final per a vostè. Però, de nou, no és cinc, Una, quatre, B, etcètera. Així que vaig a tenir altes expectatives per a vostès. Vaig a esperar una bona problema jocs i donaré vostè regeneració com a tal. I no significarà que ets va a obtenir una qualificació pitjor. Se li qualificarà en termes de seu progrés des de la setmana zero al final del curs. I, finalment, en termes d'alta les expectatives de la classe, m'encanta quan persones hi participen. Entenc que algunes persones se senten més o menys còmodes participant. Altres persones estan participant no mitjançant l'augment de la mà i parlant tot el temps. Però en aquesta classe serem fent un munt de petits problemes, molts de mini preguntes, i després alguns més gran de codificació problemes. Així que definitivament el treball a terme aquests exercicis quan els fas en el teu ordinador o en un full de paper. Però jo també vaig a donar una mica de temps abans de Algú alguna vegada ha de respondre a algunes de les preguntes que li demano. Així doncs vaig a donar-li una mica de temps per pensar-hi, perquè anem fer les coses de socis de vegades, Vaig a esperar a tothom a comprometre una mica. I a falta d'un terme millor, no probablement serà l'anomenada freda, que és que tothom tindrà l'oportunitat de per pensar en la resposta, i després Vaig a trucar a vostè, i després que dirà la resposta. No et preocupis ni t'espantis per això. Ho he fet en el passat i que he trobat que és molt més èxit, També llegiu la investigació educativa en el mateix per determinar si era o no un bona tàctica. És molt útil, sobretot si donar als estudiants temps per pensar sobre la respostes i no les fan només vénen i dir que la dreta del pal. Però si vostè no se sent còmode contestar, jo també sóc molt bo en sentint que fos, i no anem a el va posar en el lloc, especialment en la càmera, tot i que cap d' vostè està en càmera ara mateix. Així que aquestes són les normes que tinc. Una cosa més en la línia de conèixer en el medi. Vaig a donar a vostès un munt de comentaris. Si us plau, dóna'm retroalimentació. Hi ha un lloc web, sayat.me/cs50. Així que és una retroalimentació honesta. Si vols donar-li a la secció, Rebo un correu electrònic cada vegada que passa. Anem a prendre un descans en una estona, així que vaig a mirar a través dels comentaris a continuació. Si alguna vegada té algun comentari, si us plau, m'ho donen allà. Si vostè em dóna retroalimentació sobre la Q, que és meravellós, però aquesta és la guia que ho faci al final. Però això serà al final del semestre per No seré capaç de prendre res d'això informació i convertir-la en l'ensenyament vostès millor. Així que si us plau, si vostè té qualsevol retroalimentació, dóna-me'l. M'encanta retroalimentació. Tornar a la FOP, s'obté retroalimentació tot el temps. Vostè em pot donar avantatges, coses bones, deltes, coses que puc millorar. Vostè pot fer comentaris sobre la meva roba. Això no serà tan útil, però vostè és benvinguts a comentar sobre qualsevol tot. Si us plau, si us plau donar-me la regeneració. El valoro molt i significa molt per a mi. Una norma més divertit. Tindrem un munt de diversió. Esperem que en aquest curs, se li tenir un munt de diversió. Tindrem dolços en secció. Tindrem música. Esperarem conèixer altre una mica així, pel que vull que això sigui una experiència divertida i atractiva. Sé que alguns de vostès han dormit a les conferències que tenia el dia d'avui, així que espero que no ho farà ser el cas ara. I si és el cas ara, no roncar, perquè això podria ser captat per la càmera. Sweet. Qualsevol consulta, comentari o inquietud abans de passar per res que hem parlat? Gran. Així que anirem en matrius primera. Aquesta és la forma de fer un arranjament. Hem vist això abans. Vostè té un tipus de dades, vostè té un nom, i llavors vostè té una mida. Just aquí, puc crear dos arrays. La primera és una sèrie de caràcters, i compta amb 26 espais. La segona és una sèrie de partitures, i compta amb tres espais de tres nombres enters. Sí? ESTUDIANT: Són totes aquestes diapositives disponible en algun lloc per nosaltres? JASON Hirschhorn: Molt bona pregunta. La pregunta era, són tots Aquestes diapositives disponibles? Sí Totes aquestes diapositives estaran disponibles, i en el futur, vaig a enviar per correu electrònic a abans de la secció. Però avui en dia, ja que és la primera setmana, vam tenir un inici tardà. Així que en general, obtindrà aquestes diapositives, però estaran disponibles en línia i Te'ls enviarem per correu electrònic just després de classe. Alguna altra pregunta? Així que de nou, les matrius són caixes, per falta de una paraula millor, que mantenen múltiples elements d'un tipus de dades, i són un al costat de l'altre en la memòria. I així, un cop més, es tracta de com es pot fer dos tipus de matrius. Així que després d'haver fet la seva matriu amb aquesta primera línia - resultats int, suport 3, claudàtor de tancament - que vol que l'inicieu. Vols posar alguns valors en aquest país. I aquesta és la forma de posar alguns valors en allà, només triar l'índex i escriure el número. Anem a dibuixar això a la pissarra. Tots poden veure? Tothom pot veure. Sweet. Així que serà la meva array anomenat Scores. Com es pot veure, és la mida 3. Hi ha tres caixes en aquest país. Cadascú pot adaptar al que tipus de tipus de dades? ESTUDIANT: Integer. JASON Hirschhorn: Enter en aquest. Escrivim resultats int, i la primera paraula és el tipus de dades que va a anar a les caselles d'aquesta matriu. Així que puc encaixar 3. Per què tinc zero fins hi ha al taulell? Per què diu és igual a zero puntuació d'1? Em recordes al teu nom. ESTUDIANT: Kurt. JASON Hirschhorn: Kurt. ESTUDIANT: Sí JASON Hirschhorn: Per què? ESTUDIANT: Com que el primer índex és zero, comencem a comptar des de zero. JASON Hirschhorn: Així que vam començar a comptar des de zero. Això és exactament correcte. Aquesta és la part confusa i viatge de voluntat vostè, especialment quan vostè està intentant recórrer arrays, el que farem en un moment. Comencem a comptar des de zero. Així que si vull fer referència a la primera quadre, no és un quadre. Per desgràcia, és quadre de zero. El segon és un quadre d'un, i en aquest cas, la tercera és de dues caixes. Què passa amb caixa de tres? On és caixa de tres? O si el que vull fer comptes, suport 3, claudàtor de tancament, què és això? Pel que va dir el caràcter nul. Alguna altra idea? Què és el grup de puntuació de tres bracket? ESTUDIANT: En realitat no existeix perquè només es va definir com puntuacions, suport de tres. JASON Hirschhorn: Així que vostè diu que en realitat no existeix. En alguns casos, quan estem tractant amb cadenes, en general posarem un nul caràcter al final. Ja arribarem a això en un segon. Però en aquest cas, cal hi ha una tercera caixa aquí. Així que l'última caixa en qualsevol matriu és de grandària almenys 1. Així que si tenim un arranjament de grandària n, la primer quadre està en zero, l'últim és a n almenys 1. I en aquest cas, no existeix. Hi ha alguna cosa aquí a la memòria, però no és el nostre. No som amos d'ella. Nosaltres no demanem. Així que si s'intenta accedir a ell, el que anem a fer una mica, probablement anem a ficar-se en problemes. En aquest cas, estic inicialitzar el meu matriu amb tres variables. Estem posant un a la caixa zero, dos en una caixa, i tres en el quadre dues. Algú té alguna pregunta sobre la inicialització d'una matriu? Així que ens vam anar en aquest moment. Partitures, suport de tres, a prop del suport, que no existeix. Estem zero indexades en ciències de la computació, així que vam començar a comptar des de zero. L'última casella disponible per a nosaltres, és el tercer quadre, però es diu caixa número dos. Més avall, això és una alternativa manera de inicialitzar matrius. Així que en lloc de la creació de la matriu en un line, emplenant el primer quadre, i després el segon quadre, el tercer quadre, vostè pot fer-ho tot en una sola línia. Així, en aquesta línia, ambdues matrius. Això crea el mateix array exacta el que hem creat aquí, però només ho fa en una línia. Ara hem creat la nostra matriu. En general, una vegada que es crea una matriu, voler fer alguna cosa amb ell, ja sigui que es completi o aconseguir coses fora d'ell i imprimir a la pantalla. En aquest cas, anem a la nostra puntuacions matriu, que hem inicialitzat a la primera línia aquí en gris. I després a la segona línia, s'inicia iteració a través de la matriu. Algú té alguna pregunta sobre l'estructura d'un bucle? Així que aquest és el bucle. Tenim la nostra condició inicial, i després nostra condició final, i després iteració, i, cada bucle. I en les claus d'aquest per llaç, què passa si jo fos a córrer aquest programa? Pot algú dir-me el que anava a aconseguir? [? Matu? ?] MATU: Imprimir totes les puntuacions en cada línia. Seria imprimir cada puntuació en una línia separada. JASON Hirschhorn: Què és exactament caldria imprimir? ESTUDIANT: Seria imprimir una, després dos, després tres. JASON Hirschhorn: Exactament. Seria imprimir una, després dues, després 3, cadascun en línies separades, perquè anem a través de la matriu i se li veure que la segona, el printf declaració, partitures i. Així que en la primera ronda a través del nostre bucle, i és igual a zero, el que significa que estem obtenir el valor a zero punts - que, si ens remuntem a nostre diagrama, és un - i ompliment en - oh, diu c. Això hauria de ser% d. Vaig a arreglar això en un moment quan I part que a vostès. Però estem presentant un nombre enter pel que ha de ser% d aquí, no% c. Què és% c per? ESTUDIANT: Caràcter. JASON Hirschhorn: Caràcter, exactament. Quina és l'altra? Si no vols fer% d per a una sencer, què més es pot fer? ESTUDIANT: i. JASON Hirschhorn:% i, exactament. Així que qualsevol dubte sobre la iteració a través de la matriu? Llavors, què passa si fem això? En comptes de fer i és menor que 3, nosaltres i és menor que o igual a tres. Què passa quan ens trobem aquest codi? Sí, Annie? ESTUDIANT: Es van a imprimir coses rares en la quarta línia. JASON Hirschhorn: Això dit, és que va a imprimir coses rares al quarta línia? Algú té una resposta a la seva pregunta? Així que el més probable és que quan arribem a la - el que en la quarta ronda a través de la nostra llaç, igual que vostè va pensar, Annie, que serà suport de les puntuacions de tres, el que que ja hem descobert no Existim, i tractarem i accedir a aquesta, imprimir a terme, l'utilitzen alguna forma. Així que l'equip probablement s'enfadi amb nosaltres. Tens tota la raó. Pot sortir del programa complet. Podeu imprimir una cosa molt estrany. No es pot dir amb seguretat. El més probable és que probablement obtindrà enutjat vostè i amb prou feines surti immediatament. Però això és un error comú que tindrà on està just al costat d'un a Al final, i això és un error que es la pesta que tot el seu codificació. Una manera que m'agrada fer és només en una pissarra, anar a través de cada iteració del circuit en caixa o en paper per veure el que està succeint, i després generalment es donen compte, oh espera, que no hauria han anat a menys d'o igual a tres. Hauria d'haver deixat als dos, que és què passa si la seva condició és menys de tres. Qualsevol pregunta fins ara? Sweet. Així que tots vostès tenen els seus equips oberts. Anem a donar-li 2:58 minuts per escriure un programa que crea una matriu amb els sencers un a través de cinc i després imprimeix cada sencer en una nova línia. I si vostè té alguna pregunta, aixequin la mà. Estic feliç d'aconseguir. Com he dit, anem a prendre tres minuts per escriure això. Estan tots bé si vaig a un nova finestra i tancar aquesta? Ho sento si no ha tingut l'oportunitat de fins al final, però ho farem junts ara mateix. Així que a la pantalla, he # include cs50.h, # include stdio.h. Pot algú dir-me què aquestes dues línies fan? Michael? ESTUDIANT: S'inclouen les biblioteques CS50 i que va fer que Steve té excepte per al seu ús amb fer la seva vida més fàcil. JASON Hirschhorn: Així que va dir que incloure les biblioteques, una que CS50 fet, cs50.h, i un que és sol estàndard, ve amb el pack C, stdio.h. Com que inclou les biblioteques, però? Es pot ser una mica més específic? ESTUDIANT: Ho fa perquè pugui utilitzar certes paraules de codi per tenir una funcionar ocórrer sense haver d'anar i fer que la funció c tu mateix. JASON Hirschhorn: Pot donar-me un exemple? ESTUDIANT: Igual que printf és un que pot utilitzar. JASON Hirschhorn: Printf. Així que va dir printf és un dels funcions en lloc d'haver de printf escriure pel seu compte, printf és inclosa realment en stdio.h, per la qual cosa només pot utilitzar-lo i assumir que va a treballar. En stdio.h, si s'obre aquest arxiu, caldria incloure com printf obres, tot el codi de printf? Per què sacseges el cap? ESTUDIANT: Com que l'arxiu de capçalera només inclou la declaració de la funció. JASON Hirschhorn: Exactament. L'arxiu de capçalera només inclou la declaració de la funció. Així que, bàsicament, al compilar aquest, colpejar Feu el compte que ho farem en un segon, el compilador sap que si utilitza printf, printf existeix. Es va a definir en algun lloc. No és un problema per a vostè usar-lo. I més tard, que va a incloure la uns i zeros que realment contenen printf de l'aplicació i fusionar amb el seu codi. Com assegurar-se que inclou el uns i zeros, per exemple, reben corda? ESTUDIANT: Obtenir cadena té cs50.h. JASON Hirschhorn: Sí. Així que diu arribar cadena existeix, la declaració de la funció. Però llavors els uns i zeros, el binari arxiu que inclou la realitat implementació de cadena get? Com assegurar-se que va amb el seu programa? ESTUDIANT: Passada el connector en l'argument de línia d'ordres. JASON Hirschhorn: Passi el connector en l'argument de la línia d'ordres. Com fer això? ESTUDIANT: És la l línia al Clang JASON Hirschhorn: Exactament. Vostè diu-l CS50, oi? Això inclou als uns i zeros. ESTUDIANT: Però què fer que per a vostè, oi? JASON Hirschhorn: Exactament. Fer ho fa per vostè, però amb el temps, no hauràs Fer o vostè haurà de fer una fer pel seu compte, pel que és una El millor de recordar. Si es va a usar un d'aquests altres biblioteques, no només té vostè escriure # include i a continuació, la biblioteca. També cal connectar polz I aquestes dues coses són diferents. L-CS50 és diferent del # include cs50.h. Llavors tenim int main void arrissat aparells, i ara anem a codi interior principal. La primera línia que tinc aquí és un comentari que diu, crear una matriu amb ints u al cinc. Què és una bona paraula per descriure el que tenen en aquests moments a la pantalla, només comentaris dins principal? Com es diu això? ESTUDIANT: Pseudocodi. JASON Hirschhorn: Pseudocodi. Gràcies, Jeffrey. Això és exactament correcte. Pseudocodi. ¿Han vist pseudocodi abans? Aixequeu la mà si vostè ha utilitzat pseudocodi anterior problema d'un conjunt. Al voltant de la meitat de vostès. Jo recomanaria l'ús de pseudocodi per descompondre els problemes en més petit, més fàcil de mossegar trossos. A més, si vostè fa el pseudocodi, es que els seus comentaris ja en gran mesura incorporat, pel que no ha de tornar enrere i intentar esbrinar el que estaves fent. Llavors, pot algú donar-me aquesta primera línia per crear una matriu d'enters d'un a través de cinc? Vostè? ESTUDIANT: Int i llavors vostè pot trucar qualsevol que sigui el nombre i, a continuació, plaça suport de cinc. JASON Hirschhorn: Números Així int, claudàtor 05:00. ESTUDIANT: igual, i llavors claus. JASON Hirschhorn: igual, claus. ESTUDIANT: Un, dos, tres, quatre. JASON Hirschhorn: Un, dos, tres, quatre, 5. ESTUDIANT: I ​​llavors claus i després punt i coma. JASON Hirschhorn: I arrissat claus i punt i coma. Excel · lent. Imprimiu cada int en una nova línia. ¿Algú més pot donar alguna jo aquest codi, si us plau? [? Matu? ?] Endavant. ESTUDIANT: Per ( JASON Hirschhorn: Per ( ESTUDIANT: int i = 0 JASON Hirschhorn: int i = 0 ESTUDIANT: Punt i coma i menys de cinc. JASON Hirschhorn: Punt i coma, i de menys de 5. ESTUDIANT: Punt i coma, i + +. JASON Hirschhorn: Punt i coma, i + +. ESTUDIANT: parèntesi tancat, a continuació, clau oberta. JASON Hirschhorn: parèntesi tancats i dues claus. Entre les claus? ESTUDIANT: I ​​llavors printf "% d / n" JASON Hirschhorn: No, espera. Printf "% d / n, pressupost tancat. ESTUDIANT: I ​​després cita tancada, coma, compte, suport d'i. JASON Hirschhorn: Coma, recompte, suport i. ESTUDIANT: Ho sentim, el nombre de suport de i. JASON Hirschhorn: Números, suport i. ESTUDIANT: Ho sento. I després va tancar parèntesi, punt i coma. JASON Hirschhorn: Tancat parèntesi, punt i coma. Vaig a guardar això. Farem recompte. I com puc executar compte? ESTUDIANT: Barra inversa. ESTUDIANT: Dot barra diagonal - JASON Hirschhorn:. / Compte, exactament. Gràcies. Compte. /. Un, dos, tres, quatre, cinc línies noves. Sembla que va funcionar. Sí, Noah? ESTUDIANT: També podeu fer menor o igual a quatre, igual que i és menor que o igual a quatre? Hi ha algun avantatge de fer menys de cinc, o simplement una forma diferent de escriure? JASON Hirschhorn: Així que la pregunta que es podria haver fet i és menor o igual a quatre en lloc de i és menor que cinc. Tant de bo que han treballat el mateix? ESTUDIANT: S'hauria. JASON Hirschhorn: Si. És totalment hauria de funcionar de la mateixa. Estilísticament, és generalment menor que, i veuràs en un segon quan fem cadenes, podem fer servir alguna cosa anomenat strlen, que has vist abans, per obtenir la longitud de la cadena. I no es pot fer menys que o igual strlen. Vostè pot fer igual o igual strlen menys un. Així que és millor per fer menys que strlen. Sí? ESTUDIANT: I ​​en l'actual concursos, fer hem de formular observacions sobre la nostra codi, així? JASON Hirschhorn: La pregunta estava en proves, et de proporcionar comentaris? Així que anem a parlar més sobre concursos quan que sorgeixen, però en general, un bon regla d'or és sempre que estigui escriure codi, formular observacions. Si vostè rep un codi incorrecte però el comentar la dreta, podria obtenir alguna de crèdit, tant de mi si jo estava qualificant que en un conjunt de problemes o en un concurs. Així que els comentaris són sempre bo per oferir. Sweet. Compti. Excel · lent treball. Anem a passar. Strings. Strings. Hem vist això abans en la conferència. Això em va deixar al · lucinat quan em troba primer això. És probable que no trobava a ningú passa allí, però això està bé. Les cadenes són arranjaments de caràcters i acaben amb, com vostè ha dit abans, el terminador nul, el qual És aquest caràcter / 0. Si anem a dibuixar una cadena a la taula, anem a dibuixar per aquí. Quant de temps és aquesta cadena? Ho sento. Quant dura aquesta cadena? ESTUDIANT: [inaudible]. JASON Hirschhorn: Quatre? ¿Per què quatre? ESTUDIANT: A causa de que el cinquè punt és per al caràcter nul. JASON Hirschhorn: Així que el cinquè punt és per al caràcter nul. Així que si jo fos a córrer en strlen això, em donaria 4. Corregir. I la matriu, però, si hagués de inicialitzar la matriu, el nombre d'espais hauria de demanar? ESTUDIANT: Cinc. JASON Hirschhorn: Cinc. Hauria de demanar 5, però no puc només posar quatre personatges aquí perquè he de posar aquest nul terminador a l'extrem. Així que anem a escriure en "ohai" i posar el terminador nul al final. Anem a dir això és una cadena s és igual a aquest. Què és s abraçadora zero? s Suport zero, Annie? ESTUDIANT: O. JASON Hirschhorn: O, exactament. s bracket un? s abraçadora 5? s abraçadora 5? ESTUDIANT: No existeix. JASON Hirschhorn: No existeix. Exactament. Genial. Una pregunta sobre la comprensió cadenes com arrays de caràcters? Bé, llavors. Un dels programes més per a vostès. Escriviu un programa que demana a l'usuari una cadena i després imprimeix cada personatge en una nova línia. Així que anem a prendre tres minuts per escriure aquest programa, i després anem a codificar com un grup. Ho sento. Vas a veure això? ESTUDIANT: No JASON Hirschhorn: OK. Donarem ni un minut més per codificar això, o almenys començar a treballar-hi. Així que vostè pot seguir treballant, però em vaig per començar a anar a través d'ell. Així com abans, tinc a la pantalla # Include cs50.h, # include stdio.h. int void main. Dins de les claus dels principals, no tinc dos comentaris, pseudocodi. Una d'elles és demanar una cadena de l'usuari. La segona s'imprimeix els personatge en una nova línia. Així que Anna, pots donar-me demano per a una cadena de l'usuari? ESTUDIANT: Printf. JASON Hirschhorn: Printf? ESTUDIANT: Sí ( JASON Hirschhorn: ( ESTUDIANT: "dóna'm una cadena. JASON Hirschhorn: "donar em str - emergents - cadena. ESTUDIANT: / n ") i coma. JASON Hirschhorn: Posar fi a la cadena, tancaments de parèntesi, punt i coma. ESTUDIANT: Sí I després la següent línia, corda s = Get string. JASON Hirschhorn: String s = Get string. ESTUDIANT: Sí I a continuació, () JASON Hirschhorn: () ESTUDIANT: Punt i coma. JASON Hirschhorn: Punt i coma. Fantastic. Així que em vaig a posar una cadena i Vaig a guardar en què? Quina és la variable anomenada que ha creat? ESTUDIANT: String s. JASON Hirschhorn: La variable es diu s. És tipus cadena. Exactament. El següent que volem és imprimir cada personatge en una nova línia. Qui em pot donar aquest codi? [Inaudible]? Es pot donar a mi? ESTUDIANT: Per descomptat. JASON Hirschhorn: Anem a fer-ho. I ho sento. No m'agrada repetir el que diu perquè vostè està fent bé, però haver de repetir de manera que quan es transcriure això, poden obtenir tots els el text sobre les transcripcions. Així que vostè pot seguir parlant. Per desgràcia, no tinc dir que sobre tu. Ho sento, però - ESTUDIANT: Això està bé. Per int i = 0 JASON Hirschhorn: Per int i = 0 Estudiant: menys de - JASON Hirschhorn: Punt i coma. ESTUDIANT: Abans d'això, podem posar un variables perquè pugui obtenir int longitud del nom? JASON Hirschhorn: Oh, no ho fa vol posar el punt i coma? D'acord. Llavors, què és el que vols fer després de zero? ESTUDIANT: Vull obtenir el longitud de la cadena de s i establir que a una variable? JASON Hirschhorn: OK, així que com ho faig? Estudiant: Llavors que fas int length = JASON Hirschhorn: Int longitud = ESTUDIANT: S-T-R-L-E-N. JASON Hirschhorn: S-T-R-L-E-N - ESTUDIANT: Per s. Suports. JASON Hirschhorn: (s). ESTUDIANT: I ​​llavors jo crec que cal posar un punt i coma entre els dos enters. JASON Hirschhorn: Un punt i coma després de zero? ESTUDIANT: Sí A continuació, posar un punt i coma després d'això, i vostè diu, i menys de longitud. i de menys de longitud, el qual és la variable. ESTUDIANT: I ​​llavors coma. JASON Hirschhorn: Punt i coma. ESTUDIANT: i + +. JASON Hirschhorn: i + +. Aquí està el nostre bucle per. Bé, dins del bucle. ESTUDIANT: I ​​després fer printf. JASON Hirschhorn: Printf. ESTUDIANT: Els claudàtors. JASON Hirschhorn: parèntesi, cometes. ESTUDIANT: Els parèntesis, cites,% c / n. JASON Hirschhorn:% c, OK. ESTUDIANT: / n. JASON Hirschhorn: / n. ESTUDIANT: cites tancades. JASON Hirschhorn: cites tancades. ESTUDIANT: Comma. JASON Hirschhorn: Comma. ESTUDIANT: S. JASON Hirschhorn: S. ESTUDIANT: Bracket i. JASON Hirschhorn: Bracket i. Estudiant: I llavors parèntesi tancats. JASON Hirschhorn: parèntesi tancat. ESTUDIANT: I ​​llavors coma. JASON Hirschhorn: Punt i coma. Fantastic. Així que anem a guardar això. Assegureu-vos de lletrejar. Oh boy. Tinc un parell d'errors. Primer error a la línia 11, que diu, espera expressió, i està donant em un error que el segon int, aquí està l'error. Hi ha alguns errors per aquí. Algú sap el que és l'error? Kurt? ESTUDIANT: Crec que se suposa que ser una coma, no un punt i coma. JASON Hirschhorn: OK, una coma en lloc d'un punt i coma. Així és que tots hem d'arreglar? ESTUDIANT: No JASON Hirschhorn: Què més hem d'arreglar? ESTUDIANT: Hem d'incloure string.h. JASON Hirschhorn: Incloure string.h. On he d'incloure això? ESTUDIANT: El mateix lloc que està inclosa les altres coses, a la dreta després d'incloure stdio.h. JASON Hirschhorn: Anem a veure si això funciona primer perquè en general, m'agrada per arreglar una cosa primer i, a continuació, executeu i, a continuació, veure els errors que tenim. Així que anem a alliberar el terminal amb el control de n, farem i fan encanteri. Així que un altre error a la línia 11. Coma esperat. I encara estic rebent errors en aquesta línia. Així que no m'ha donat un error que diu que no entén el que és strlen, però em dóna errors d'aquest línia, així que què més hi ha de dolent? Mark? Marcus. ESTUDIANT: Cal eliminar la segona declaració int? JASON Hirschhorn: Eliminar la segona int. Intentarem això. Ara alliberar el terminal. Assegureu-vos de lletrejar. Error. Implícitament declarar biblioteca funció strlen. Així que ara que veiem que l'error. Què hem d'incloure? ESTUDIANT: string.h. JASON Hirschhorn: Incloure string.h, Farem # include string.h a la part superior de la pantalla. Anem a guardar, fer encanteris. Ara compilat. Així que de nou, les coses que necessitaven recordar la línia 12 en el nostre bucle per quan estem que el crea, int i = 0, longitud = strlen (s). Aquesta és una estratègia fantàstica. L'estil d'aquest és gran, la disseny d'aquest és molt gran. Podem anar a les raons més tard, però aquesta forma només haurà de trucar strlen vegada en lloc de cada un dels vegada que s'executa a través del bucle. No obstant això, cal utilitzar una coma allà i no cal tornar int. Si vostè està declarant tant els variables juntes, que no cal tornar int. I llavors, si vostè va a utilitzar strlen, que és una altra biblioteca la funció no s'inclou en stdio.h o cs50.h, fan Assegureu-vos d'incloure string.h. Kurt? ESTUDIANT: Llavors si no cal diuen què longitud tipus és, això vol dir que ha de ser un int? No podia tenir dos diferents tipus hi ha? JASON Hirschhorn: pel que podria tenir dos tipus diferents. La longitud és un enter aquí, però. La longitud és un int perquè és comes i a continuació, la mateixa cosa. ESTUDIANT: Així que se suposa que es va a ser el mateix que el primer? JASON Hirschhorn: Exactament. No farem això ara, però pot incloure dues variables en la mateixa línia amb un tipus de dades. Així int x, i crearien dues variables. Així int x, i, si fem això, dóna em una variable x i i no utilitzada per nosaltres no fem servir. Així que posar buit abans és només un truc de luxe si no s'utilitza cosa que, al utilitzar-lo. Però com veus, crec xiy en la mateixa línia amb una coma. Es tracta de crear dos enters allà mateix. Així que sí, totalment possible crear dues coses en la mateixa línia separats per una coma. Anem a desfer-nos, però. Així que no hi encanteri. Gràcies nois per codificar per a nosaltres. Anem a fer-ho una vegada més, executar-lo. Dóna'm una cadena. [Inaudible], que va fer la major part. Quina és la seqüència? ESTUDIANT: Hola. JASON Hirschhorn: Hola. H-I-L-L-O, cada caràcter en una línia. Es veu molt bé. Anem a córrer de nou. Sempre va a comprovar per a casos extrems. Què és un bon exemple de la cantonada per al registre d'entrada? ESTUDIANT: Un nombre? JASON Hirschhorn: Varis. Així que vaig a posar en l'1, i s'imprimeix 1. No és demanar cartes, per la qual cosa sembla que els números de treball. Bon cas de la cantonada per comprovar. Quin és una altra bona cantonada cas per comprovar? ESTUDIANT: Una cadena en blanc. JASON Hirschhorn: Hm? ESTUDIANT: Igual que una cadena buida. JASON Hirschhorn: Cadena buida. Així que no posarem en res. I què s'imprimeix fora? ESTUDIANT: Res. JASON Hirschhorn: Res. Sembla que funciona. Vostè podria tractar més casos de cantonada, però en general nombres, una de dades és diferent genial per provar, i no és res. Res, zero, negatius són sempre grans coses per tractar de coses que haurien prova, les coses segurament anem a provar i verificar les 50 posarà a prova per. Una pregunta sobre spell.c? OK, anem a el cap cap enrere. Tinc un programa més per a vosaltres a escriure. Es diu students.c. Aquest és un programa que demana a l'usuari cinc noms, a continuació, tria a l'atzar i imprimeix un dels noms. Aquest programa és una mica més participem de les dues últimes que va escriure, així que per què no ens prenem cinc minuts per codificar de forma individual, i després anem a codificar com un grup. Aquest programa també implica algunes coses potser no hagi vist abans, així que si vostè té una pregunta sobre, com fer Faig això, aixequin la mà. Vaig a venir una i va assenyalar que en la direcció correcta. Però també ho fem perquè aquest serà una bona manera d'introduir alguns temes que són difícils. Així que funciona, no? ESTUDIANT: Sí JASON Hirschhorn: Cada vegada que vostè dóna volta en un conjunt de problemes, hi ha moltes maneres de fer , Però alguns són més elegant que altres. Anem a bussejar polz # Include cs50.h. # Include stdio.h. claus principal int buit. Dins de les claus, Tinc dues observacions. La primera d'elles és que demani al l'usuari durant cinc noms. La segona és, triar a l'atzar i imprimir un dels noms. Així que farem el primer, pregunti l'usuari durant cinc noms. Qui li ha demanat a l'usuari durant cinc noms i em pot dir com fer això? Només dues persones van fer la primera part. Tres persones van fer la primera part. Quatre, cinc. Tom, com ho fas? ESTUDIANT: Vostè es declari una cadena i després el nom, suport 5. JASON Hirschhorn: String Nom Grup 5. Llavors, què és aquesta línia fent, nom de la cadena bracket 5? ESTUDIANT: Vostè es declari una matriu de cadenes. JASON Hirschhorn: Es tracta d' una matriu de cadenes. Quantes cadenes van per encaixar aquí? ESTUDIANT: Cinc. JASON Hirschhorn: Cinc. Excel · lent. Anem a cridar noms perquè tindrem diverses. Bé, ara? ESTUDIANT: I ​​llavors tenir un bucle for - JASON Hirschhorn: bucle For. ESTUDIANT: - per a i = 0. JASON Hirschhorn: for (int i = 0. ESTUDIANT: Punt i coma. JASON Hirschhorn: Punt i coma. Estudiant: menys de cinc. JASON Hirschhorn: I inferior a cinc. ESTUDIANT: Punt i coma. JASON Hirschhorn: Punt i coma. ESTUDIANT: i + +. JASON Hirschhorn: i + +. Estudiant: I llavors parèntesi tancats. JASON Hirschhorn: parèntesi tancat, i algunes claus. Dins de les claus? ESTUDIANT: I ​​llavors printf. JASON Hirschhorn: Printf. ESTUDIANT: parèntesi oberts, name% d. JASON Hirschhorn: Com? ESTUDIANT: Nom. JASON Hirschhorn: Nom. ESTUDIANT: I ​​llavors l'espai, i després% d. JASON Hirschhorn: Nom, espai,% d. ESTUDIANT: I ​​llavors / n, i després la va tancar. JASON Hirschhorn: Nom Per tant, l'espai, % D / n, parèntesi de tancament. ESTUDIANT: Coma, i + 1. Ho sento. Pressupost tancat, i després coma, i +1. JASON Hirschhorn: Tancat cita, coma, i +1. ESTUDIANT: Sí I després la següent línia - JASON Hirschhorn: i + 1. ESTUDIANT: Sí I després la següent diapositiva és suport de noms i. JASON Hirschhorn: Next línia és suport de noms i. ESTUDIANT: = get cadena. JASON Hirschhorn: = Get - capital de G-I-T - cadena. Vaja, ho sento. ESTUDIANT: obertes, tancades parèntesi i després - JASON Hirschhorn: obert, tancat parin. ESTUDIANT: Punt i coma. JASON Hirschhorn: Punt i coma. Acceptar, pel que s'inicialitza el conjunt de cadenes, noms, i després passen per un per al llaç, i cinc vegades s'imprimeixen alguns demanarà a l'usuari i després emmagatzemar cinc cordes. Algú té alguna ajustos a això? Tom, crec que tothom està d'acord amb vostè. Es veu molt bé. D'acord. Per què vas fer i +1, encara? ESTUDIANT: És a dir, no té ser, però i +1 perquè sigui nom d'un per nomenar 05:00. En cas contrari, seria nom zero a anomenar quatre. JASON Hirschhorn: Així que va fer i +1 perquè del contrari hauria de imprimir zero a quatre, perquè així és com pensen els ordinadors, però els éssers humans realment no llegir així. Aquesta és una altra cosa et trobaràs. A vegades, a l'imprimir alguna cosa per a l'usuari, haurà de fer una poc més bonic, i fent i +1 en aquest cas és un camí per fer-lo més atractiu. També veig a cinc vegades, nom de la cadena és cinc, i és menor que cinc. Jo sé d'on vas treure els cinc. Ho tens de dir-me que cinc noms. Però si volem que el codi d'un poc més robust, una cosa que podria fer és aquí, fora d'int, podríem fer alguna cosa com això, # Defineix, i que podríem fer NOMS 5. Així que, bàsicament, en la mesura que escric de capital N, el capital A, M majúscula, majúscula, S majúscula, aquesta cadena, es reemplaçarà que amb 5 en el codi. O anem a cridar - anem a només ho diuen NOMBRE. Així que estic definint totes les tapes NOMBRE ser 5. Així que ara sempre tinc el número 5, que pot reemplaçar amb tot NOMBRE caps. I ara, si vull canviar el nombre de noms, tot el que necessito fer és aquesta línia, la línia de quatre, en què tinc # Defineix el número 5, canviar això a 10, o canviar a 4. Quan el codi es fa més llarg, no està anem a recordar tots els llocs als quals posar la quantitat de noms que volia, i en Perquè no es perdi un, això és una bona manera de fer-ho, per trobar alguna cosa sobre de la tapa i després només ha d'utilitzar aquesta frase a tot arreu del seu codi. Marcus? ESTUDIANT: Això és estilísticament preferida de definir un nivell mundial n constants? JASON Hirschhorn: Així és que estilísticament preferit que globalment definir una constant n? Així que estàs dient que podia fer, int número = 5? ESTUDIANT: Tenen les consonants en C o no? JASON Hirschhorn: O const - a parts iguals. Estàs dient que només una variable global? ESTUDIANT: Sí JASON Hirschhorn: Així estilísticament, no hi ha necessàriament un dret resposta, però ambdues coses són millors que simplement llançant aquests l'atzar els números en tot el seu codi. Nosaltres els anomenem nombres màgics. Quan miro al seu codi o quan Algú està llegint a través d'ell, es no volen només aquests números aleatoris que no té sentit. Fins i tot el número 26, que en general és el nombre de lletres en l'alfabet, és millor definir ALFABET sobre de la tapa i guardar el número 26 en aquesta cadena, si això té sentit. O el problema d'establir un, en lloc de - de nou, no parlem d'això en el temps, però en comptes de tirar en un 25 o un 10 per tot arreu, es pot guardar el número 25 com a quart o 10 com a DIME, i això fa que sigui més fàcil per el que està llegint a través del seu codi de entendre per què va triar aquest nombre. I també perquè, si alguna vegada vols Actualitza el teu codi, es fa una mica més robust. Sí? ESTUDIANT: És aquest codi també va que estigui disponible per a nosaltres després? JASON Hirschhorn: Tots aquests codis que hem escrit junts són serà enviat per correu electrònic nois i disponibles. Sí Així que demana a l'usuari durant cinc noms. Triar l'atzar i imprimir un dels noms. Qui va fer aquesta línia? Aquesta és la línia més difícil aquí. Ho sento, Tom. Has fet una bona feina, però això és una mica més complicat. Marcus, endavant. Estudiant: Bé, primer, que va a ha d'incloure stdlib.h i time.h. JASON Hirschhorn: Estàs dient que en la part superior, inclou dues biblioteques més. Vols que m'incloc S-T-D-L-JO-B punt H, Biblioteca estàndard, i què era l'altre? ESTUDIANT: Time.h. JASON Hirschhorn: # include time.h. Així que aquests són dues biblioteques més. Suposo que ara utilitzarem funcions que es troben en aquests dos, pel que vostè necessita per incloure'ls? ESTUDIANT: Llavors, el primer que has voldrà escriure srand. JASON Hirschhorn: srand. ESTUDIANT: (time (0) JASON Hirschhorn: Ho sento. Srand (time ( ESTUDIANT: 0. JASON Hirschhorn: 0. ESTUDIANT :)), punt i coma. JASON Hirschhorn: Un altre parèntesi tancat? Punt i coma. Vaig a simplement reemplaçar el zero amb NULL. Et va a fer el mateix, però Generalment, vostè veurà NULL, que parlarem d'això línia en un segon. ESTUDIANT: Estilísticament millor? JASON Hirschhorn: Generalment, les persones NULL raó, però el mateix. ESTUDIANT: I ​​llavors el nom int. JASON Hirschhorn: Nom Int ESTUDIANT: = JASON Hirschhorn: = ESTUDIANT: Rand. JASON Hirschhorn: Rand. ESTUDIANT: () JASON Hirschhorn: () ESTUDIANT: nombre de mòdul. JASON Hirschhorn: Què hi ha de mòdul? El personatge? El caràcter de percentatge? ESTUDIANT: caràcter de percentatge. Mòdul NOMBRE que ha definit dalt. JASON Hirschhorn: Mòdul NOMBRE. ESTUDIANT: I ​​llavors coma. JASON Hirschhorn: Punt i coma. ESTUDIANT: I ​​llavors nova línia printf. JASON Hirschhorn: Printf. ESTUDIANT: ( JASON Hirschhorn: ( ESTUDIANT: " JASON Hirschhorn: " ESTUDIANT:% s / n JASON Hirschhorn:% s / n ESTUDIANT: " JASON Hirschhorn:% s / n " ESTUDIANT: Coma, noms d'espai. JASON Hirschhorn: Space - ESTUDIANT: Oh, suposo, el que No ho diem aquí? JASON Hirschhorn: En diem noms. ESTUDIANT: Suport Open, nom. JASON Hirschhorn: Suport Open, nom. ESTUDIANT: suport tancat. JASON Hirschhorn: suport tancat. ESTUDIANT :) JASON Hirschhorn :) ESTUDIANT: Punt i coma. JASON Hirschhorn: Punt i coma. OK, anem a guardar. Fem d'aquest codi. Estudiants. Anem a executar aquest codi. Estudiants. No / Estudiant. . / Estudiants. Anomena un. Anem a dir David. Nom 2, RJ. Anomeneu tres, Rob. Nom 4, Lucas. Anomeneu cinc, Joseph. I després imprimeix Joseph nou. Així que em quedo de nou. Déjame fer els mateixos noms. David, RJ, Rob, Lucas, Josep. I em va donar a David aquest moment. Així que vaig fer el mateix, però li vaig donar em una cosa diferent, i això és perquè, per descomptat, estem demanant un nom a l'atzar. Així que crec que, sobre la base de sobre errant voltant de la sala, que la majoria de les persones probablement ens van donar la primera part de la dreta, la creació de la matriu i després aconseguir tots els noms. Estic parlant de les línies 10 a 16. Però les línies 18 a 21 són, probablement, algunes coses que no ha vist abans, així que anem a anar a través d'ells. Aquesta línia, srand temps NULL és essencialment - ho sento, anem a saltar cap avall una línia, rand (). Això et dóna un número a l'atzar, un enter aleatori. I si es colpeja rand home, que molts de vostès ho va fer - M-A-N l'espai R-A-N-D - a la terminal d'aquesta manera, M-A-N espai R-A-N-D, premeu Enter. Es podria arribar a la manual i seria capaç de llegir que el rand sortides de comandaments num bytes pseudoaleatoris després de la sembra el nombre aleatori generador d'una vegada. Així que això és una descripció. Això és el que fa rand, dóna que un nombre aleatori quan truqui a aquesta funció. Per desgràcia, en realitat no és aleatòria perquè si vostè acaba de trucar a l'atzar sense aconseguir que part de la llavor, alguns punt de partida, sempre triarà la mateixa i que utilitza una fórmula per determinar la següent. Així que si vostè diu rand, que vaig a li donarà el mateix. Serà molt predictible. En realitat, no serà aleatòria. Així que el que hem de fer, per Marcus Instruccions per a mi, eren rand llavors amb una altra cosa, que és el que la funció srand fa. Sembra rand amb una cosa una mica més l'atzar de la mateixa cosa, i que està sembrant amb NULL temps, el que És a dir, només per convenció, el corrent temps en segons. Així que vostè està assumint que tot el món no és va a executar el codi en l'exacta mateix segon, pel que és una aposta segura que NULL temps va a ser diferent cada vegada que s'executa aquest codi. Aposta segura que per tant, srand voluntat rand llavors amb alguna cosa diferent cada vegada. Així que, per convenció, quan ho fem volem un nombres aleatoris, escrivim aquesta línia, srand NULL temps, ens donarà una llavors més a l'atzar, i després correm rand, el que ens dóna un número a l'atzar. Sí? ESTUDIANT: Es pot dir el que vol dir amb llavor? JASON Hirschhorn: Seed com en - així rand va a recollir un nombre i que va a utilitzar alguns fórmula per arribar-hi. Així que va a començar amb alguna cosa i després convertir-lo en alguna cosa basat fora d'aquesta fórmula. Si sempre fas el mateix, que sempre va a convertir en el el mateix. Així que el primer que da és la llavor. Així que vostè vol donar alguna cosa diferent per començar amb, i per el convertirà en una cosa diferent. I, finalment, la línia 20, aquest% es crida l' mòdul, i que és confús. Això és una cosa que és una mica diferent aquí que realment no tenir en matemàtiques la vida real. Però, en essència, si es pren un gegant nombre i que es divideixen en C, el que que passa amb la resta? ESTUDIANT: No es trunca. JASON Hirschhorn: No es trunca. Així que 20 dividit per 3 és què? Què vol dir tornar a vostè, 20 dividit per 3. Ho sentim, 10 dividit per 3. Què vol dir tornar a tu? ESTUDIANT: [inaudible]. JASON Hirschhorn: 10 dividit per 3 només torna 3, No 3 residu 1. Llavors, ¿què 10 modul 3 torna és només la resta, 1. Així que si vols saber el que 10 dividit per 3 en realitat era, ho faria fa 10 dividit per 3, s'obtindria el 3, i després que faries 10 mòdul 3, i vostè aconseguiria 1 gener. Així que t'adones que 10 dividit per 3 és 3, la resta 1. I en aquesta línia, rand podria ser qualsevol nombre enter, essencialment. Així mòdul està dient, es divideix per nombre, que és en aquest cas 5. I si alguna vegada es divideix per un nombre, el nombre enter sempre ha de ser inferior a aquest nombre. Així que si estàs dividint per un nombre de 5, la resta sempre serà zero a quatre. Així és com funciona la matemàtica. Així, un gran nombre moduloed per una més petita nombre sempre tornarà resta i sempre tornar algun nombre que és menor que el nombre que dividit per. Algú té alguna pregunta sobre mòdul, ja que li serà molt, molt pràctic, així que vull assegurar-me tothom ho entén? Genial. I vam veure que aquest programa va funcionar. Bé, seguim. Així que la propera, entrarem en funcions, i anirem per la resta d'aquesta matèria bastant ràpidament perquè vull arribar a arguments de la línia d'ordres. Així funcions són essencialment, Com hem vist, les caixes negres. Prenen les coses de trucades paràmetres, fan alguna cosa a ells, ja sigui les o crear alguns efectes secundaris, i, finalment, s'escupen alguna cosa fora, que és el valor de retorn. Pot algú donar-me una raó què faríem servir funcions? Algú? Una raó per la qual faríem servir funcions? Algú? Vaig veure a dues mans. Què és una bona raó? Marcus? ESTUDIANT: Si ha de trucar a la mateixa tros de codi diverses vegades. JASON Hirschhorn: OK, si cal per cridar a la mateixa part de codificar diverses vegades. Jeff, va tenir una raó diferent? ESTUDIANT: Només perquè pot codificar menys. JASON Hirschhorn: Pot codificar menys. Dreta. Si vols fer alguna cosa molt - en el codi anterior, que podria tenir escrita obtenir string cinc vegades, però una per al llaç fa que es vegi més bonic i vostè ha d'escriure menys codi. Les funcions són una idea similar. Si jo vull fer el mateix molt, moure a una funció i trucar a aquest funcionar cada vegada. Això farà que la cosa per a vostè. Aquesta és una gran raó per utilitzar les funcions. Així anatomia d'una funció. Una funció de la voluntat general, aquest aspecte. Va a començar amb el tipus de canvi, llavors obtindrà el nom. Prendrà els arguments, en cas contrari conegut com els paràmetres, ia l'interior les claus, se li escriure el codi. Hem vist una funció molt. Això és important. Aquí és el principal superposada a que l'anatomia que tenia abans. Què int aquí voldrà dir? Què significa int? Quan escric int main (void). ESTUDIANT: Tipus de valor retornat? JASON Hirschhorn: Com? ESTUDIANT: El tipus de retorn. JASON Hirschhorn: Int és el tipus de retorn, tota la raó. Inici retorna un int. Quin és el principal? ESTUDIANT: Nom de la funció. JASON Hirschhorn: principal és la nom de la funció. Exactament. I buit? Què és el buit dins dels parèntesis? ESTUDIANT: No es necessita qualsevol valor extern. JASON Hirschhorn: Així buit - dreta. Dins dels parèntesis, posem l' paràmetres o els arguments de les funció pren, el que passa dins del quadre negre. Quan s'escriu sense efecte, està dient això no treu res polz Void main Així int principals mitjans de No tenint res polz Dins de les claus, tenim algunes codi, i després veiem al final tornar zero. Què significa el retorn a zero? Bé, parlem sobre el tipus de canvi. Inici ha de retornar un int. Això és el que fa aquesta línia. Retorna un enter, zero. Per descomptat, no hem vist que molts causa que en la programació que fem amb les màquines que fem i els compiladors que fem servir avui en dia, no necessiten aquesta línia. Principal és prou especial que sap quan arribi al final de principal, just tornar zero si tot ha anat bé. De fet, si alguna cosa no va bé, principal es tornen sovint a una altra persona número amb el significat que alguna cosa que va sortir malament amb el seu programa. Així que en general, quan veu el codi, que no escrigui retorn a zero, però és bo saber que està succeint darrere de l' escenes, perquè cada vegada que escrius un altre tipus de funció, vostè va a haver de incloure una línia de retorn. Si estàs dient que vaig a retorna un int, cal escriure retornar alguna cosa. Si dius buit aquí a la principi void main, per buit exemple, llavors no tornar res - buit significa res - pel que no és necessari que la línia de retorn. Però alguna vegada escriure alguna cosa que no és anul · lar per al tipus de retorn, necessita una línia que diu retorn i de posar alguna cosa aquí que coincideix amb el tipus. Una pregunta sobre això? Sweet. Àmbit d'aplicació. Això és una cosa que hem tocat així. Totes les variables, com sabem, té una cert abast, i això és bàsicament parlant que la variable pot o no pot ser referenciat. I m'agrada dir el que succeeix entre claus es queda dins de les claus. Així, per exemple, si ens fixem en el codi, estem definint una variable global fora del principal, int a, aquí a la part superior. Estem trucant a un altre int un interior principal. Tenim alguns suports més arrissat i estem cridant a altre un int. Tenim tres A en el codi. Aquests no són la mateixa cosa. He creat tres variables diferents. A continuació, dins d'aquestes arrissat interior claus, em diuen que a = 4. Què és una que parla de la primer, el segon, o el tercer? ESTUDIANT: El tercer. JASON Hirschhorn: Està parlant sobre la tercera. Tots els que una és en realitat pot haver parlat en aquest particular, exemple, a causa al seu abast tot va en aquestes claus més íntims. No obstant això, al trucar a les coses de la mateixa nom, hi ha una cosa que es diu la clandestinitat. Així que només s'ocupen amb o corregir o utilitzar el variable més recent, o l'un més propera a vostè. Així que aquí dins, això està més a prop d'un terç a aquesta línia, a = 4, per la qual cosa afecta la tercera. I l'última línia, a = 2, que és un que parlar de la primera, segona, o un tercer? ESTUDIANT: Segon. JASON Hirschhorn: Està parlant sobre el segon un. Per descomptat, la tercera és la més pròxima a un en el codi, però el tercer un no existeix fora aquestes claus. Quan arribi a aquesta tancada arrissat cotilla, és com s'ha anat, essencialment. Així que els únics que en queda són els primer dos, i per descomptat, ara que està més a prop de la segona. Així que això és una bona cosa per recordar sobre el seu abast. Per exemple, estic segur que li ha sorgit això en un bucle Do While. Si inicialitza la variable dins el Do While i després intenta accedir-hi fora, probablement té alguna advertència com, això no existeix variable. Això es deu a la idea del seu abast, que les coses només existeixen dins d'aquestes claus. Les claus són com una abraçada gegant que vostè està donant al seu codi, és un altre manera de pensar-hi. Així que aquesta és una altra funció, una cosa per vostès en el codi, hellofunction.c. Anem a passar que, per ara, però això és una cosa que us animo a practicar pel seu compte. Escriviu un programa en el qual els principals trucades altra funció que imprimeix un salutació a l'usuari. Es tracta de prendre essencialment hola món i abstracció que printf en altra funció. Però no farem això ara mateix perquè no tenim tant de temps esquerra com m'hagués agradat. Així declaració de la funció. Hem vist això abans també. Si voleu escriure una altra funció, cal deixar que l'ordinador coneix i principal sap que existeix. Així que el que faig és per sobre de principal, s'escriu el tipus de canvi, el nom i la paràmetres, i després cap avall per sota de principal, aquí, en realitat ens copiem aquesta línia i després escriure el codi real. Així d'aquesta manera, si es crida a la funció a principal a la part superior, el principal sap que hola hi ha, per exemple, si jo fos cridar hola, i després es veu a l'aplicació de sota. Què passa si no s'inclou aquest s'alineï la part superior, anul hola (void)? Si no incloc aquesta línia i demana principals hola, sóc va a aconseguir un error. Vaig a tenir un error perquè el compilador no sap que existeix aquesta cosa. Això és similar a la raó per la qual no # include cs50.h. El que essencialment cs50.h està fent està posant obtenir string allà. És posar aconseguir int allà. S'està posant a tots aquells funció prototips abans de principal, de manera que quan se'ls anomena en el principal, el principal sap que aquestes coses existeixen. Això és el que els arxius. H fan. I pel que si vostè va a fer el seu propi funció, has d'assegurar- poses aquest prototip fins allà. Una pregunta sobre això fins ara? Arguments de la línia d'ordres. Això és el que anem a acabar a, i després esperem veure't estrènyer en algun conjunt de processadors. No sé si serem capaços d'esprémer en què per manca de temps, però amb vostès que són aquí, i si nois volen dir que després d'una estona, ens pot anar fora. Però anem a acabar amb arguments de la línia d'ordres durant els últims 15 minuts. Ens desperta, Michael? Estàs despert? Bé. No sé si vostè dorm amb els ulls tancats. Seria difícil. Arguments de la línia d'ordres. Són una forma de passar informació en un programa. Finalment, ens trobem amb els altres. Però, en essència, que deixarem de escriure int main (void) si volem prendre alguns arguments de la línia d'ordres. Anem a escriure això anomenada int main (int argc, cadena argv, entre parèntesis. Això és confús. Això és un munt de cartes que no estan en Anglès humana, pel que anem a desempaquetar els arxius en aquests moments. Argc significa recompte d'arguments - i una altra, tots ells estarà disponible en línia - i aquest és el nombre d'arguments. Argv significa vector argument i aquests són els mateixos arguments. És una matriu de cadenes. Hem vist en realitat un array de cadenes abans d'avui. Creem una a l'últim PROGRAMA codifiquem. Així que aquí està un exemple. Escric. / Ohai CS50 secció en la meva línia d'ordres. Argc en aquest cas és igual a 3. Argv suport 0 és ohai, argv suport 1 és CS50, argv suport 2 és la secció. Un cop més, argc és el nombre d'arguments, i per ensopegar una mica poc, sempre comptem el nom del funció que el primer argument. Així doncs, en aquest cas, hi ha tres arguments, el nom de la funció i després els dos que he escrit polz A continuació, anem a salvar els mateixos arguments argv. I de nou, tal com hem vist abans, ho vam fer això en l'últim programa codifiquem. Us podeu moure a través de la matriu de argv i obtenir aquestes cadenes. Això és bàsicament el que vam fer a Al final del nostre últim programa. Triem un nom a l'atzar i després vam anar a noms suport el i imprès la cadena es troba allà. A més de només una varietat, perquè pròpies cadenes són arrays, com parla, vostè pot tenir matrius de matrius, és que essencialment el que és argv. Una manera de pensar aquest és files i columnes. Puc dibuixar això en aquest moment. Així argv - això no és esborrat. Dibuixem sota ohai. Així que si jo vaig escriure a la secció CS50 ohai, Vaig a truncar secció per a aquest exemple. Però, en essència, la meva multidimensional array, ohai CS50, farem secta. Així que aquí, puc accedir - si em dono argv un nombre - això està malament. Què està malament en aquest diagrama? ESTUDIANT: Comença a zero. JASON Hirschhorn: ha començar amb zero. Probablement hauria també girar, però ja que jo ja he dibuixat a, estic anem a deixar-ho aquí per ara. Però comença en zero. Això és correcte. Ho sento si això és petit. Poden vostès espècie de veure? Així que si ho faig argv 0, vaig a obtenir tots ohai. Si ho faig argv 1, vaig a aconseguir tots CS50. Si ho faig argv 2, vaig a aconseguir tots secta. Però ara, com hem dit, les cadenes són les pròpies matrius. Així que el que puc fer és que puc tractar aquesta com una matriu multi-dimensional, i pot fer alguna cosa en la línia de argv 0, 0, que m'és igual el caràcter 0. Argv 0, 1, que m'és igual h. Argv 1, 3, que m'és igual aquest 0 aquí a CS50. Així que a causa de les pròpies cadenes són arranjaments, estem posant que en una altra matriu. Ara tenim matriu de matrius, i pot indexar en la nostra primera matriu i llavors índex en la segona matriu. I com era d'esperar, ho fem amb només posar els dos - fem els claudàtors només just al costat d'un a l'altre. Així, en aquest exemple, argv 1 és CS50 i argv 1, 2, com hem dit, és 5. Algú té alguna pregunta sobre matrius multidimensionals? Vostès estan fent genial. Sweet. Així que tenim un altre programa aquí, i aquesta és l'última cosa que estem farem ara. Així que vull que escriguis un programa que pren el nom complet d'un usuari, i només dos dos arguments de línia de comandes i, finalment, imprimir una salutació a la usuari que inclogui el seu nom de pila. Llavors, per què no et portes tres o quatre minuts per fer això, i després anirem més que com un grup, i llavors nosaltres acabarem? I de nou, aquí, quan nosaltres diem prendre un nom complet de l'usuari i per la descripció d'aquest problema, que hauria de ser comanda arguments de la línia, no fer servir obtenen cadena. Sí, Marcus? Estudiant: Llavors quan dius dos comandaments arguments de la línia, és que, a més de . L'/ RUN, o bé - JASON Hirschhorn: Bona pregunta. Do, incloent el. / Run, tres arguments de la línia d'ordres. O com el. / Personalitzat, en aquest cas, perquè aquesta és la nom d'aquest fitxer. Així argc seria 3. Però vull només dos arguments donat al programa. He de precisar que. Faré que el canvi abans de publicar ells i enviar-los a vostès. ESTUDIANT: Què passa si vostè tenir un segon nom? JASON Hirschhorn: Si vostè té un mitjà nom, estàs de sort. Ho sento. O si vostè va només per Shakira, també està de sort. Sí? ESTUDIANT: Llavors, quan la gent no té cs50.h, Com defineixen argv com char estrelles argv? O és que encara s'anomena cadena argv? JASON Hirschhorn: Si. Així cadena, de nou, màscara sobre el exactament el que està succeint allà. Això serà desempaquetat potser el dimecres, però aviat. És com rodes d'entrenament. Perquè en essència, és la mateixa cosa. Així que prenguem un minut per programar això, i després anirem més de com un grup i, a continuació, com he dit, concloure. I crec que segueixen sent dolces extra, pel que vostès han de tenir sort això, o si us plau prengui això. Ho sento si segueixes escrivint, però vull bussejar i ens pot acabar junts. Així que he escrit en, # include cs50.h, # include stdio.h. int main (void), clau de, arrissat suport, dins de tres línies d' pseudocodi, pren el nom complet d'un usuari, dos i només dos de línia d'ordres arguments, imprimeix una salutació a la usuari que inclogui el seu nom de pila. Així que la primera, prendre nom complet de l'usuari. Qui pot ajudar-me a prendre el nom complet d'un usuari? Com puc fer aquesta part? Vostès fan això primera part? Prengui el nom complet d'un usuari. Doncs bé, perquè una línia d'ordres argument, què he d'escriure? Què he de canviar a la meva declaració de la funció? ESTUDIANT: No vol que sigui anul · lada més. JASON Hirschhorn: Exactament. Jo no vull que sigui anul · lada. Què vull ser? ESTUDIANT: argc Int JASON Hirschhorn: int argc. ESTUDIANT: argv String. JASON Hirschhorn: String argv. ESTUDIANT: Bracket, suport. JASON Hirschhorn: Bracket, suport. Això és exactament correcte, i això és realment la forma en què vaig a aconseguir nom complet de l'usuari. Ells posaran allà. Així que un ha fet. Així que ara vull dos i només dos arguments de la línia d'ordres. Així que Noè, el que és una manera de que pugui comprovar el nombre de comandes arguments de la línia que tenen? ESTUDIANT: Vostè fa una sentència if. JASON Hirschhorn: Si declaració, exactament. Què vull que la condició? ESTUDIANT: Si argc més gran que 3. JASON Hirschhorn: Si argc és més gran que 3. Si argc superior a 3, què faig? ESTUDIANT: Retorn 1. JASON Hirschhorn: Retorn 1. Això assegurar que tinc dos i només dos? ESTUDIANT: No Si argc és més gran que 3 i menys de 2. JASON Hirschhorn: Si argc és major de 3 i argc és menor que 2. Quin és una manera que puc escriure això en tan sols una línia, o sense l'ús que i l'operador booleà? ESTUDIANT: No és igual a 2. JASON Hirschhorn: Si argc no és igual a 2. Exactament. Així que si argc no és igual a 2, que em donarà aquest programa, personalitzat, quan ho executo, i que em donarà el nombre de arguments de la línia d'ordres? Quantes vaig a comprovar? Ho sento. Deixeu-me reformular això. Si argc = 2, quantes coses va fer l'usuari escriu en la línia? ESTUDIANT: Primer. JASON Hirschhorn: Només un. Així que abans, tenies raó, Noah. Què és el que realment necessito posar aquí? ESTUDIANT: Això és igual a 3. JASON Hirschhorn: argc no és igual a 3. Vull ser igual a 3 perquè vull personalitzada a més dels altres dos. Així que si argc no és igual a 3, retorna 1. Per què vas dir tornar 1? ESTUDIANT: Com que vol dir que està malament. JASON Hirschhorn: Això vol dir que està malament, I el que és que va a fer? ESTUDIANT: Re-demanar a l'usuari. JASON Hirschhorn: Es va a deixar de fumar el programa, de manera que haurà de córrer de nou, però no tenim res aquí per demanar de nou. Jo no demano això. Això és exactament correcte. Tornar 1 només tanca el programa. Gran. E imprimir una salutació per a l'usuari que inclou el seu nom. Com puc fer això? Anna? ESTUDIANT: Printf. JASON Hirschhorn: Printf. ESTUDIANT: (" JASON Hirschhorn: ( ESTUDIANT: "hola JASON Hirschhorn: "hola ESTUDIANT:% s JASON Hirschhorn:% s ESTUDIANT: / n JASON Hirschhorn: / n ESTUDIANT: ", JASON Hirschhorn: ", ESTUDIANT: argv JASON Hirschhorn: Com? ESTUDIANT: argv JASON Hirschhorn: argv ESTUDIANT: Els claudàtors 1. JASON Hirschhorn: Els claudàtors? ESTUDIANT: 1. JASON Hirschhorn: 1. ESTUDIANT: I) i coma. JASON Hirschhorn :) i coma. Correm això. Fer personalitzada. . / Personalitzada. S'acaba de deixar. Per què deixar de fumar? ESTUDIANT: No vas posar cap argument. JASON Hirschhorn: No ho vaig fer posar cap argument polz Es veu molt bé. Nois clavat. Així que de nou, vostè va entrar en argv i comprovat al argc principi. Aquests són dos importants coses per recordar. Així que en l'última dos minuts abans que deixar, no anem a arribar al conjunt de processadors de dos, però com he dit, si vol quedar-se després durant 10 minuts, m'agradaria que feliç d'anar de nou amb vosaltres la lògica per a aquests conjunts de problemes. Teníem molt de cobrir avui així que no vaig arribar a ells. En general, m'agrada incloure que en l'extrem. Així que si vols quedar-te, quedar-se per 10 minuts. Ho farem. Llavors, com vaig dir al principi, PSET zero i un, anem a aconseguir que la retroalimentació amb vostè el aviat com sigui possible. L'objectiu és aconseguir un conjunt de processadors retroalimentació, la part dels comentaris, abans PSET 2 cal. Així que si vostè va fer alguns errors o estilísticament, les coses podrien ser millors, vostè tindrà la informació perquè no va a fer les mateixes coses en PSET 02:00. I després, en el futur, vostè aconseguirà tot de la seva regeneració PSET i comentaris de tornada abans de la propera cal. Finalment, si podia posar en un altre endoll per a la retroalimentació. Aquesta és la seva primera secció. Va ser la meva primera secció l'ensenyament d'aquest any. Anar-hi. Escriu coses, bones i dolentes, i faré servir per fer secció millor la propera vegada. I finalment, de nou, si cal res, que em faci saber. Estic més que feliç d'ajudar a vostès. Si el que desitja dolços, em tindrà dolços addicional. Estic content de portar-lo a vostè. Aquest serà un curs increïble. Aquest és un, si no és el meu favorit Per descomptat, jo he pres a la meva vida, i jo espero que sigui que meravellós per a tu. Així que el que vull fer tot el possible per fer que impressionant per a vostè. Vaig a enviar un correu electrònic si vostè està en la meva secció o Noé, i va a tractar de concertar amb cada un vostès un temps de fer el check in a l' pròxim parell de setmanes, així que pot ser un sentit del que el seu fons és CS, I també m'ajudi a adaptar aquests seccions que s'adapten millor a les seves necessitats. Així que això és el que tinc alineats. Un cop més, ens veiem fora si vostè vol ser-hi. Aquesta va ser la segona setmana secció. Gràcies nois tant.