PROFESSOR: Així que l'ordre del dia de aquesta setmana, no és que la quantitat de coses. Però esperem que molt, molt útil i rellevant per a vostès aquesta setmana. Però anem a passar potser 15, 20 minuts parlant només de forma ràpida sobre la llista d'enllaços. Llistes d'enllaços van a ser coberts en el qüestionari. Així que potser seria molt útil per aprendre una mica sobre el que és. Anem a passar la gran majoria de la secció actual repassant problemes de pràctica concurs zero. I després salvarem potser 20, 30 minuts al final de les preguntes pendents algú té. I després, l'últim cinc minuts, vaig per donar una bomba fins la parla per al concurs. Vostès tots volen estar aquí per això. A causa de que serà un bon moment. Molt bé, pel que alguns el material a la llista d'enllaços. Com en general estan estructurats és vostè té el que es diu un node, oi? Vostè té aquestes coses anomenades nodes, que són estructures. Vaig a anar sobre com crear un node en la següent diapositiva. Però, en essència tots ells vinculats llistes es tracta de dades que ha estat enfilats a través de punters. I així, l'avantatge que tenim d'utilitzar una llista enllaçada més, potser, com una matriu, és el fet que en una matriu vostè necessita un bloc contigu de memòria tot en el mateix lloc, un després d'una altra, per poder tenir això. Considerant que la llista enllaçada, vostè podria tenen petits trossos aleatoris de la memòria tot l'equip enfilats per punters. I d'aquesta manera pot accedir a la informació que ve un després una altra, després de l'altra sense necessitat de només un tros enorme de la memòria en el seu ordinador a algun lloc. I pel que aquest és un dels principals raons per les quals utilitzem llista d'enllaços. En segon lloc, és molt fàcil de forma dinàmica canviar la mida de la llista d'enllaços perquè en conjunt, quan es declara una matriu, vostè té un cert valor establert. Diguem que jo volia crear un arranjament de 10 punts. Puc crear una matriu de 10 nombres enters, i això és tot. És 10. No sé què fer després d'això. Si volia fer 11, no pot fer-ho. Si vull que sigui 9, no pot fer-ho. Mentre que en una llista d'enllaços, pot afegir i esborrar i inserir on vulguis. Vostè pot canviar la mida de forma dinàmica la seva estructurar aquí, la seva estructura de dades. I això ens dóna molta més flexibilitat afegida que no ho fem normalment tenir amb matrius. Qualsevol persona confosa en el bàsic estructura de com una llista d'enllaç és o per què hem de fer servir un sobre una matriu? Sí, anem a repassar detalladament com crear en realitat un. Però això és només una mica el sentit general en aquest moment. Fresc. I així matrius s'enfilen d'aquestes encantadores petites coses anomenats nodes. Tot el que un node està és un tipus d'estructura. Recordeu, una estructura és si volies per a construir un tipus de variable en C que encara no existeixes, que, com a programador, en realitat pot crear vostè mateix. I així, aquest tipus de dades estructura s'anomena un node, en realitat ha estat creat per nosaltres, perquè no existeix en C per si sol. I la forma en què vostè creu un és que tens la capçalera de typedef struct, que li diu al compilador que sóc a punt de crear una estructura. Anem nom de "node". I a l'interior anem per declarar una variable en, que es va a emmagatzemar un valor. I llavors també anem a haver un punter anomenat "següent" que apunta a la següent node de la llista d'enllaços. I després d'acabar que fos amb només repetir node nou per el compilador sap, OK aquest és el final de la meva estructura. I així, d'aquesta manera, estem tipus de crear un petit arsenal valent tipus de coses amb un i amb un valor punter. I vostè pot vincular a tots ells juntament amb els punters. Perquè puguin ser de tot tipus enfilats en una cadena. Fresc. ¿Es pot saber que una mica millor? AUDIÈNCIA: Sí. PROFESSOR: Molt bé. Així que la forma en què, com vostès poden veure, una llista d'enllaços típica s'estructura és que tens un cap. Vostè té el valor del cap que no és sent assenyalat per qualsevol altre punter. Però va assenyalar, o de referència, un altre node. El node després que es va a fer referència a la node després d'això, i així successivament i així successivament fins que finalment va colpejar Al final de la seva llista d'enllaços. I vostè no tindrà un punter allà. I així, pensar com, en una cadena, o fins i tot si algun de vostès fets, no sé, igual que amb Fruit Loops quan eres petit. Vostè faria unir-los i el desgast al voltant del seu coll. Creu que és exactament el mateix. Vostè té aquestes petites coses que vostè pot encadenar aquest punt a 01:00 després d'ella, a la qual després de , I així successivament i així successivament fins que tingui una cadena d'una estructura de dades que es poden utilitzar com més t'agradi. Així que la forma en què això es faria solen inserir o eliminar qualsevol node des d'un enllaç la llista és molt diferent depenent d'on aquest node és. Així, per exemple, perquè punters són sempre apuntant a un valor específic, quan s'elimina o s'insereix un node, vostè vol assegurar-se que el punter és tot el que apunta a les coses correctes. Així que si vostè volia potencialment inserir un nou node amb el valor d'una dins d'un enllaç ordenada llista, tots sabem aquí de la imatge que va a Entra al mig del cap i dos, no? A causa que un s'adapti a la dreta allà. Però la forma en què ho faria és per primera dereferencing el punter del cap i l'enviament que a un. Però entrem en un problema aquí. Algú pot veure quin és el problema és si haguéssim de primer eliminar la referència el punter del cap a un? Quin problema podríem córrer en si tractem per afegir aquesta al capdavant de la nostra gamma? AUDIÈNCIA: [inaudible] PROFESSOR: Exactament. Així que aquí tenim un punter que era una vegada que apunta des del cap als dos. Però si vostè desfer-se d'aquest punter, apunten a un, ara tenim ni idea a on anar per trobar dos. A causa de que com ja he dit abans, vostè té un tros gegant de la memòria en el seu ordinador. Tots aquests nodes podrien ser intercalades a l'atzar en qualsevol lloc en l'equip. I vostè no sap com fer per trobar això. I així cal tenir punters assenyalant a tots els nodes a l'extrem. O bé si accidentalment eliminar la referència d'un sense primera assignació un valor primer, ets només va a perdre tot després. Llavors, què anem a fer és, ho faria primer que vulgueu crear un punter a el node que voleu inserir. Apunt a on vostè vol inserir a, i després després que podria apuntar el cap cap enrere a un. ¿Això té sentit per a tothom aquí? Gran. Penseu en això com la mateixa manera que una cadena. Si s'agrega una cadena, que és una mica intuïtiva com et va sobre la inserció d'això. Acceptar, per la qual cosa és en realitat molt més curt del que vaig pensar que seria, una llauna de cinc minuts en les llistes d'enllaços. Només perquè vostès tenen la idea bàsica del que és. Aquí tenim el programa de prova zero. No deixis que això et intimidi. Sé que és una gran quantitat d'informació. Es veu molt aterridor. És també una gran quantitat de, jo pensar, CSC tipus de termes. Coses com cadenes hexadecimals, punters, les assignacions de memòria dinàmica són termes que sonen molt por. Però anem a trencar- baix, fer alguns problemes de pràctica perquè vostès tots estan preparats per a aquesta prova. Quants de vostès tenen ja va començar a estudiar? OK, vostès probablement vulgui per començar a posar-se en marxa en això, pel fet que el concurs és demà. O dijous per a alguns de vosaltres. Sí, així que anirem sobre alguns problemes de pràctica. Si vostès tots volem prendre un full de paper, un llapis. Anem a simplement passar el gran majoria de la secció actual repassant alguns dels que el que vostès tenen una idea de què esperar al qüestionari. D'ACORD. Un parell de logística detalls així, per a ningú que no ha estat en aquest enllaç allà, si vas a cs50.yale.edu, al front aquesta pàgina hi ha un enllaç que diu "Sobre el concurs Zero." Enllaç et porta allà. Si vostè no ho ha llegit, si us plau llegir-lo. Perquè et diu realment important informació sobre el qüestionari. Vaig a tirar això cap a fora de que només perquè, físicament, si vostès no sap on anar, tindrem problemes. I el que si el seu passat en termes amb A a N, anar al saló d'actes del col·legi d'advocats. I si les seves últimes obertures amb P a la Z, anar al Auditori Davies. I això només s'aplica per persones en la secció dimecres. Si vostè està prenent la prova en Dijous, vostè va a SSS 114 on la seva conferència normalment és. AUDIÈNCIA: [inaudible] PROFESSOR: O a la Z, vas per anar a l'auditori Davies. Vaig a canviar això, oi? Oh, sí, només falla automàticament. Ah, sí, que és Christa. Sí, el meu mal. Sí, O a la Z, vas anar a Davies Auditorim. Vaig a arreglar això una vegada que pujar. Sí. I després també alguna cosa important per a la ment és que dimecres, si vostè és oficialment inscrit en la secció dimecres vostè ha de portar un concurs dimecres. I si vostè està inscrit en Dijous, haurà de portar el concurs Jueves. I és durant les hores de classe. On, crec que és de 1:00 a 02:15 els dimecres i dos i mitjana-3: 45 els dijous. Si vostè té un conflictes irreconciliables, Excuses de Dean són l'única cosa, per desgràcia, podem prendre. A causa que hem tingut una gran majoria de les sol·licituds per canviar de dimecres a dijous. Què no podem honorar menys tenim la petició d'un degà. D'ACORD. Així que abans de començar en un parell dels problemes de la pràctica, Jo només vaig a anar més Consells útils d'Andy per a l'èxit. Nois, quan estudies, realment voler practicar l'escriptura de codi a mà. La primera vegada que va prendre un concurs CS, no ho hagués fet codi de pràctica de l'escriptura a mà abans i que era extremadament impactant de la dificultat que era. Quan vostès no es fiquen en la hàbit d'escriure tot el, es tracta, naturalment, de ser molt capaç de tenir automàtic suports i punts i comes allà. Quan s'escriu una ullada amb la mà, de vegades és molt, molt fàcil oblidar un punt i coma, o us oblideu de tancar un suport, o us oblideu de tancar dos punts, o alguna cosa per l'estil. Així que quan s'escriu codi a mà, és una sensació molt diferent. Així que vostès, quan s'està treballant a través d'alguns dels problemes de la pràctica, seria bo practicar realment avui. O demà, suposo, si estàs prendre la prova dijous. En segon lloc, tenim l'última, com, el valor de la pràctica de vuit d'anys qüestionaris en línia. Concurs d'aquest any serà probablement molt, molt similar a tots ells. Tots són molt similars. D'alguna manera entrar al estil de el tipus de preguntes el que demanem, el tipus de funcions que anem a escriure en, etcètera, etcètera. Així que pren les proves de la pràctica, especialment sota les limitacions de temps. 75 minuts per fer la prova és no un munt de temps. És molt, molt llarg. I el que vostès realment volen per assegurar-se que vostès són l'hàbit de l'escriptura codi a mà ràpidament. Com que vostè no desitja que la primera temps per veure una prova de que la longitud estar en la seva prova. Vostès realment vol assegurar que la pràctica per endavant. En quart lloc, vol revisar la conferències i secció diapositives. No ha de memoritzar coses. En realitat, tothom se li permet un un full de notes de paper blanc, davant i darrere. Vostès poden escriure o escriure. Si veus que necessites memoritzar res, el va deixar en aquesta fulla. Et garanteixo que no vol ser atrapat en el medi d'aquest qüestionari sent així, oh sí, quin és el temps d'execució d'aquest tipus davant d'aquest tipus. Només cal posar baix i copiar- directament des de la fulla de la nota. A continuació, pot en realitat només ha d'utilitzar el seu cervell per pensar en els problemes en lloc d'haver de recordar fets. I així realment aprofitar de cap detall de nínxol que vostè pensa que necessita per memoritzar, plop baix en el full d'examen. OK, qualsevol pregunta logísticament en relació amb el qüestionari abans de començar alguna practiquen problemes de concursos? Sí? AUDIÈNCIA: No he tingut l'oportunitat mirar el qüestionari [inaudible] però es que serà aplicació sobretot, ¿O hi ha també serà, com, preguntes de cultura? PROFESSOR: És molt. Per tant, la forma en què jo faria descriu el qüestionari és-- vaig ajuntar alguns problemes de pràctica que em va treure de tots els concursos. Però veuràs que hi ha dos principals tipus de preguntes que ens preguntaran vostès. Es tracta d'un molt baix nivell de detall de coses. Li donarem un petit tros de codi i dir, hi ha algun error en aquesta llista? Quina seria la impressió d'aquí? Què farà aquest codi produir, etcètera. Així detalls d'informació de molt baixa activitat. I per l'altre costat, tindrem molt alt nivell preguntes basades en el coneixement. Pot explicar el que el diferència entre una recerca binària i una recerca lineal és? Per què anàvem a voler utilitzar un sobre l'altre? Potser, el que és GDB? Per què volem utilitzar GDB? Nivell més alt, més fonamental preguntes de comprensió. Així veuràs una barreja de els dos d'ells en el seu qüestionari. Qualsevol altra cosa abans que dirigir-se directament a ella? D'ACORD. AUDIÈNCIA: Una més. PROFESSOR: Oh, una més. Ho sento. AUDIÈNCIA: Sí, està bé. Així que estàs dient 75 minuts és massa curt, com és poc probable que anem a acabar? O, com, 75 minuts és exactament el mateix temps ja que necessitaríem si fóssim preparat adequadament? PROFESSOR: OK, de manera que el qüestionari és un repte. En definitiva, és un repte. Vostè es trobarà amb poc temps. Vostè està probablement va a colpejar, com 10, 15 minuts per al final, i ser com, merda. Tinc tant de fer. I això és totalment bé. Tothom va a sentir la mateixa manera. Tot just sigui molt conscient de la quantitat de temps que vostè té. I per això et dic nois fan els exàmens de pràctica. Perquè el que realment li dóna un gran sentit del que la prova serà així. Així que si vostè es troba sent capaç d'acabar la pràctica qüestionaris en una bona quantitat de temps, vostè pot mantenir un ritme bo, llavors vostè no tindrà un problema dimecres o dijous. Fresc. Així que si tothom wants-- Crec la majoria de la gent té fulls de paper ja. Vaig a essencialment només donar-li exemples de preguntes, donar a vostès, com, 01:00 uns minuts per fer ells. I anem a repassar com classe el que les respostes a ells són. Així que aquest és un molt típic pregunta d'hora anem a pregunti vostè, només la conversió nombres entre diferents bases. Binaris, com vostès poden record, és la base de dos. Decimal és base 10, o el que com a éssers humans normalment interpreten. Hexadecimal és de base 16, que és zero al nou, així com l'A a la F. Així que hi ha quatre números estic demanant a vostès per convertir aquí. Vaig a donar el vol, de tres a quatre minuts per pensar en com aniríem sobre solucionar això. AUDIÈNCIA: ¿Se'ns permet calculadores? PROFESSOR: No ho faràs necessitarà calculadores, si. Crec a més bàsica, crec, és Se'ls demanarà a tots vostès per fer. I just així que tipus d'un sentit de quan tothom es fa, mira cap amunt, ona, no sé, somriure, mira feliç si ja està. Sí. Potser un parell de minuts més. OK, anem a portar-lo. Estic a propòsit d'anar a donar-vos menys temps el que probablement necessita fer alguns d'aquests problemes, simplement perquè vull assegurar-me que obtenim a través d'un munt de problemes. Així que no us preocupeu si vostè no tenen l'oportunitat d'acabar. Totalment bé, sempre que vostè té una idea de com anar sobre això. Així que seguirem endavant i fer el primer. Així que primer, algú em vol dir en binari, el que faci cada un d'aquests dígits representar en termes dels seus valors? Sí? AUDIÈNCIA: Dos al potència zero, dos a un. PROFESSOR: Exactament. So. Dret, de manera que normalment quan estem a la base 10 Tot això representa són, com, 10 a la base de zero, no? Aquest és el lloc del seu ésser. Tot el teu lloc de 10 és és 10 a la potència d'un. Lloc de Vostè és el 100 10 a la potència de dos. Qualsevol que sigui la base que està en està passant a veure amb la mateixa cosa, simplement amb una base diferent. Així binari, tot el que és és base dos. Et vas a convertir tot el dígits en dos a qualsevol poder d'aquest dígit. I així, en aquest sentit, pot tenir una forma més fàcil de ser capaç de sumar o resumir tots els números en ordre per convertir a la base 10. Així que, algú vol dir-me el que el resposta a la primera és en base deu? AUDIÈNCIA: Dos, [inaudible] PROFESSOR: Sí. AUDIÈNCIA: 42. PROFESSOR: 42, aquí ho tens. Així que la manera que tenim aquesta resposta era per fent dos, el primer, que és de dos. Més dos del tercer, que és vuit. Plus 2 a la cinquena, la qual és el que sobra. Vostè els resums i és 42. Hi ha algú confós sobre com hem arribat fins a això? A més tan bàsic, com Li vaig dir, vostè ha d'estar bé. Si no, bé, podem practicar això també. Però això està bé. Fresc. Algú vol donar-me la respondre a la segona també? 50? Bé. Qualsevol persona confosa sobre com aconseguim que sigui? Refredar, tindré la respostes a la següent diapositiva. Així que no us preocupeu si vostè necessitarà copiar cap avall. OK, així hexadecimal és una mica més complicat. però jo et vaig a mostrar nois un accés directe per saber com fer-ho. Així hexadecimal, com vostè recordi, tot el que és ser de 16. I pel fet que els humans no ho fan realitat tenir 16 números per representar que, anem a partir de zero a nou, que la nostra primera 10 valors, i després fem l'A a la F, que són els següents 6 valors. I així, la forma més fàcil d'anar de qualsevol nombre binari a hexadecimal és separar-los en dues meitats. I pel que qualsevol nombre binari que donarà és probable que tingui vuit dígits. Vostè només pot trencar cap amunt en el centre. Així que la primera un-- només un, només un, un, un, un de sol. Tipus de pensar que, ja saps, dibuixa una barra o una coma entre elles. I només es pot convertir directament el que sigui això és el primer nombre de hexadecimal, i tot el que aquí és el segon d'hexadecimal. Així que recordi de la notació comú, el comencen valors hexadecimals amb? AUDIÈNCIA: Zero. PROFESSOR: 0X. Així que sabem que en qualsevol moment et demanem per convertir qualsevol nombre a hexadecimal, o en qualsevol moment que vostè veu cap nombre que comença amb 0X, vostè sap que és un valor hexadecimal. I llavors vostè va a demanar que determinar el que aquests dos dígits són. I la manera de fer-ho, del recompte de que la meitat i del recompte d'aquest mitjà. Així que en aquest exemple, el que hauria un, un, un, un ser? Quin valor podria ser? Això seria F, oi? Això seria 15. Així que aquest seria F. Un, un, un, un aquí és també F. Així que un, un, un, un, un, un, un, una a hexadecimal, tot el que és és 0xFF. A causa que aquest mitjà representa F, el valor de 15, i això representava un mitjà F, el valor 15. Perquè recorda, estem a comptar des de zero a nou. Una és com 10, B és com 11, F és 15. Té sentit a tot el món com arribem de binari a hexadecimal? AUDIÈNCIA: Llavors com hem arribat 15 de la un, un, un, un? PROFESSOR: Sí, això és binari, oi? Imagineu això és només un nombre binari. Així que hi ha dues a la zero, que és un. AUDIÈNCIA: Oh, OK. Així que només una total cap a fora. PROFESSOR: Sí, i després que acaba totals que fos. Això és tot el que és. AUDIÈNCIA: OK. PROFESSOR: OK. AUDIÈNCIA: Llavors vas de binari a decimal a hexadecimal? PROFESSOR: Això és la manera més fàcil de fer-ho, sí. No vas a decimal perquè decimal té zero a nou. Som només una mica dividir això en dos. AUDIÈNCIA: [inaudible] usant decimal a trobar el que coincideix fins a hexadecimal. PROFESSOR: Vull dir, ets del recompte d'ús de les matemàtiques bàsiques. AUDIÈNCIA: Sí. PROFESSOR: Sí, més o menys. És una mica confús. Però només sé que vostè pot dividir el que sigui aquest valor és només a meitats. Mira, què és això en binari? Quin nombre és? Serà una mica de zero a F. Aquí també serà una mica de zero a F. I llavors vostè pot simplement posar aquests dos allà mateix. AUDIÈNCIA: OK. PROFESSOR: Sí. D'ACORD. Així que nois vol tractar el següent, llavors? Zero, un, zero un, un, zero, un zero. Et vaig a donar nois com 30 segons, ja que probablement no sabies el truc per com fer-ho abans. OK, algú vol aconseguir aquest un tret? 0x5A. PROFESSOR: 0x5A. 5a. Bé. Així que aquesta aquí seria ser-- desitja per dir-nos com va arribar això? En primer lloc, com vas arribar als cinc? AUDIÈNCIA: A causa de zero, un, zero, un és de cinc. PROFESSOR: ¿Tots entenen ¿Per zero, un, zero, un és de cinc? Tens un aquí. No tens res en dos a la primera. En dos a la segona, que tenir un, que és de quatre. Llavors s'agrega el quatre més l'un, que té cinc. Cada un de bo? D'ACORD. I llavors el que aquest ser i per què? Quin nombre té una correspon a? AUDIÈNCIA: 10. PROFESSOR: I això en base dues? AUDIÈNCIA: [inaudible] PROFESSOR: Exactament. Així que aquest segon valor aquí seria 0x5A. Tothom bona sobre com convertir? És molt més senzill del que creus que és. Jo només vull assegurar saps consells útils i trucs sobre com fer això. AUDIÈNCIA: Per què pot vostè acaba de dividir que enmig d'aquesta manera? Només com, OK, jo només vaig a es preocupen per aquests primers [inaudible]? PROFESSOR: Perquè això és en realitat el manera es representen els valors hexadecimals. 0X, que significa en realitat altra cosa que dir-te que és un nombre hexadecimal. I això representa sempre els primers quatre dígits. I això representa sempre els últims quatre dígits. I pel que aquestes dues xifres només corresponen a les diferents bits. AUDIÈNCIA: Llavors anem a always-- PROFESSOR: Sempre estàs aconseguirà vuit bits de valor. AUDIÈNCIA: És que igual que una cosa aquí o que una cosa per tot arreu? PROFESSOR: Això és només una cosa en ordinadors, si. AUDIÈNCIA: OK. Impressionant. PROFESSOR: També, pel que en aquest exemple convertim de binari a decimal, i de binari a hexadecimal. Volen assegurar-se que vostè també practicar anar al revés. Així que si jo et vaig donar 0xFF, podria dibuixar que en binari, oi? Converteix F en binari, que és un, un, un, un, convertir F a binari, el qual és un, un, un, un. Així que nosaltres podríem demanar-li que fer al revés. Així decimal a binari, o hexadecimal a binari. Així que vostè vol fer Assegureu-vos de saber en tots dos sentits. Probablement anem a fer-te una combinació dels dos. Sí, vostè té una pregunta? Puc veure- ets bo? AUDIÈNCIA: Sí. PROFESSOR: OK. Sóc bona per esborrar això? Gran. Molt bé, de manera que les respostes són aquí, si algú És curiós tard i confondre. D'ACORD. AUDIÈNCIA: ¿Importa si posem les nostres lletres en capitoli o minúscula? PROFESSOR: Ho fa, perquè en hexadecimal, per convenció, tots els personatges estan en majúscules. Així A a F són serà majúscul. Si vostè posa una minúscula a, no sé si volem necessàriament marcar-malament. Però en teoria, això no és tècnicament com se suposa que has de. Així que tots ells han d'estar en majúscules. Sí, bona pregunta. D'ACORD. Segona pregunta. Penseu en aquest bell programa aquí. Vaig a fer la pregunta, Tornaré això. Així, en primer lloc, el que està dins de la norma io.h això és d'interès per al programa? En segon lloc, el que fa buit significar en la línia de tres? I en tercer lloc, què vol tornar zero des principal, com la línia de sis, en general signifiquen? Si vostès volen escriure els baix, ja que he de canviar de nou a la diapositiva només perquè pugui veure el codi. Aquest és un exemple de com, potser una alt nivell en qüestió li demanem quines coses vol dir en un programa. Tothom és bo per a mi tornar a la diapositiva? D'acord, guai. Així que et vaig a donar a tipus com potser tres minut per mirar aquest ràpida real. OK, així que aquest és com bastant fàcil, conceptualment. Algú vol dir-me el que és primer interior d'haixix incloent nostre arxiu de biblioteca io.h estàndard? Per què necessitem aquesta biblioteca inclòs per a aquest programa? El que aquí és el que necessitem per? Sí? AUDIÈNCIA: És que quan poses que printf? PROFESSOR: Exactament. Així printf, cada vegada que tenir una entrada des de l'usuari i imprimir alguna cosa a la pantalla, això és l'entrada estàndard, la biblioteca de sortida. Penseu en això que manera- entrada, sortida. Tinc una sortida? Sí, ho faig. Així que sé que sempre vaig a necessitarà la biblioteca i.o estandarditzar. Així printf és la funció pel qual hem d'accedir i hashtag inclou el biblioteca i.o estàndard. D'ACORD. En segon lloc, què vol dir buit? Tenim el principal int (void), el que fa anul·lar aquí voldrà dir aquí a la línia de tres? Sí, a la part posterior. AUDIÈNCIA: [inaudible] PROFESSOR: Exactament. Així que recordi, hem après començant amb la nostra pset que en realitat es pot indiqui la línia d'ordres arguments que el seu programa, que funció principal, pren com vostè, l'usuari, cridar-ho. Si tenim buit, això vol dir que vostè simplement podria executar directament el programa sense cap tipus d'arguments de la línia d'ordres. Tothom clar? D'ACORD. I finalment, per què ens molestem fent aquesta cosa zero tornada aquí? Per què tenim un int principal? Per què no podem simplement tenir void main buit? Sí? AUDIÈNCIA: Només perquè puguem assegureu-vos que el programa és sortir amb èxit, com es a diferència de si va ser comptat. I nosaltres sabem que això és un tipus diferent d'error. PROFESSOR: Sí, exactament. Això és només una molt el convencional que fem, és que just al final de el seu programa, només per assegurar- que la seva funció principal està funcionant correctament, sempre volem fer de retorn zero. Tot i que pot necessàriament no veuen que imprimeixen en qualsevol lloc. A causa de que com a programadors, ja saps, si vostè té moltes línies diferents de codi i vostè no sap on aquests van malament, i si ocorre un error que vols vos que vostè obtingui aquest error. I tan típicament si alguna cosa surt mal que tindrem un retorn d'un de sol per assegurar-se que sabem que és. Així que si vostè veu un retorn zero, que típicament significa que el seu programa és executat amb èxit. Bona? Fresc. OK, segon programa aquí. Penseu això. I si vostès veure un surar, vostès probablement pot tenir una bona idea del que Estic a punt de preguntar-li. Així que quan aquest programa executa, com es pot veure, Estic declarant un flotador dins de la meva funció principal. Estic donant-li el nom "va respondre," i estic configurant que igual a un dividit per 10. Estic imprimint, a un decimal, que suren. I després vaig a tornar a zero. Així que quan l'execució del programa, pensar de nou a cobdiciosos ara, Aquest programa imprimeix 0.0. Com tots sabem, és d'esperar que tots saben, un dividit per 10 no és un 0,00, que és 0,1. Però explicar per què aquest programa pensa que 1 dividit per 10 gravats a l'0,1 altra de 0,1? Et dono nois potser com 30 segon a pensar simplement ràpidament sobre això i jo vaig a tornar al programa. D'ACORD. Algú vol donar-li una oportunitat? En tres frases o menys, perquè normalment estem va a restringir totes les respostes tres frases o menys per la qual cosa no acaba de regurgitar coses a l'atzar preferides en el teu concurs. Sí, fer una foto. AUDIÈNCIA: Així que crec que hi ha aquesta cosa que es diu, com, [inaudible] Així que podria ser, per exemple, pot haver-hi, com, 0.09, que, quan s'imprimeix la primera dígits, seria a 0,0? PROFESSOR: Close, no del tot. Christabell? AUDIÈNCIA: Estàs divisòria i 10, i són tots dos sencers. I així, la forma en què es va per emmagatzemar-és com un sencer. I pel que el nombre enter més proper seria 0.0. I això és 0,1. PROFESSOR: Sí, això és molt bo. Aquesta és la resposta correcta. Així que aquest és un molt confús concepte per a un munt de nens. I realment vull per assegurar-se que això es veu reforçat en el cap de tots. Així que el que anomenem flotant punt d'imprecisió, on la raó per la qual una gran quantitat dels seus programes en cobdiciosos no va funcionar inicialment va ser perquè vostè es va oblidar d'emetre el seu variable. Així ho va dir Christabell era del tot correcte. Un flotador és inherentment imprecís. A causa que en un ordinador, a la dreta, tenim una quantitat finita de bits de memòria podem fer servir per a representar nombres. Així, per exemple, aquest ID CS50 és-- Crec que és un equip de 64 bits. Un flotador només pot ser representat per una quantitat finita d'aquests bits. I així 0,1 amb zeros infinits, que va ser de 0,1 és, oi? Però en realitat no podem emmagatzemar aquest nombre en el nostre ordinador. Simplement no tenim memòria suficient per fer-ho. I així l'aproximació més propera el que està emmagatzemat en la memòria és en realitat una mena de 0.000 alguna cosa, alguna cosa, alguna cosa, alguna cosa. La qual cosa, una vegada que truncar que, s'arrodoneix a 0,0. I així, aquest exemple és només un que demostra un munt de problemes tenim quan estem tractant de fer malament les matemàtiques sense posar com un enter diferent. Així que anar amb compte que això passi. En proves, si li donem un bloc de codi i és com, el que imprimeix al final? I si es tracta d'un valor aleatori que nois han de saber per què està succeint. Sí? AUDIÈNCIA: Truncar és desfer- tot el que després d'un cert punt? [Inaudible] PROFESSOR: Sí, el que en realitat aquest és un molt mal exemple, perquè en realitat el que sigui 0.100 es truncarà fins a 0,1. Però si hagués de executar it-- no ho faig recordar, perquè l'any passat va córrer en un programa diferent. Van córrer en alguna cosa anomenat el CS50 Appliance, que és diferent de la ID. Aquest va ser un sistema de 32 bits, crec. I així hi havia diferents nombres. Però, en essència, només sé que tot el concepte de truncament i com s'acaba talla les coses. I pel que si rounds-- AUDIÈNCIA: Sense arrodoniment. PROFESSOR: Exactament. Sí. Fresc. Hola, a la part posterior. Estem repassant alguns preguntes de revisió concurs. Tot bé. Així que considera un programa diferent aquí. Vaig a donar a vostès un parell de minuts per llegir sobre això. Això és una cosa que era per a un molt recentment que crec que bufava molt de vostès les ments d'homes. Però anem a parlar a través d'aquest nou només per assegurar-se que entendre completament. D'ACORD. D'ACORD. Qualsevol persona necessita més temps per llegir a través d'aquest codi? D'ACORD. Així que em sembla que en aquest programa estic la creació de dues cadenes mitjançant l'ús de GetString. Una trucada s i un anomenat t. I si són iguals és igual a l'altra, d'imprimir "Vostè escrigui la mateixa cosa ". Però elsewise, seria imprimir, "Vostè escrit coses diferents ", oi? Sembla molt, molt simple. Però, però, si realment tractar d'escriure aquest programa, sembla que fins i tot quan d'entrada les mateixes cadenes exactes, encara imprimeix, "Vostè mecanografiat diferents coses! " Algú vol prendre un oportunitat per què aquest programa sempre respon que les entrades són diferents, fins i tot quan les paraules en si són els mateixos? Així que si jo fos a input-- David amor utilitzar un exemple com a mare, ¿no? Minúscules M-O-M de S, T és igual a minúscules M-O-M. Si em vaig trobar amb això a través de aquest codi, per què es imprimir "que ha escrit coses diferents?" Necessita més a ningú temps per pensar sobre això? OK, crec que estem bé. Sí? AUDIÈNCIA: OK, així que és alguna cosa sobre on s'emmagatzema a la memòria, no? PROFESSOR: Sí. AUDIÈNCIA: En cas que, com si això cadena s s'emmagatzema a la memòria spot-- Estic inventant esto-- és zero. PROFESSOR: És clar. AUDIÈNCIA: I cadena t s'emmagatzema a punt de la memòria, com, 167, i després zero no és igual a 167. PROFESSOR: Exactament. OK, així que recordi aquesta increïble revelació expliquem a vostès la setmana passada, que cadenes no existeixen realment? Quan vam crear una cosa que es diu cadena que estem, en realitat, la creació d'una cosa que es diu estrella de carbó. Que tot el que és és un punter a una cadena o a una matriu de caràcters. I així, en aquest exemple, si estaven a l'entrada de M-O-M el camí que el meu equip anava a guardar-és dins de la barra invertida de memòria zero, no? Aquests quatre personatges, caràcters, seria emmagatzemada en algun lloc. I llavors aquests quatre personatges, barra invertida zero, s'emmagatzemen en un altre lloc, oi? No tinc ni idea d'on les direccions són, estan en algun lloc del meu equip. Però jo no sé exactament on són. Quan va crear una cadena s, el que realment és és un punter a la inici d'aquesta cadena. I quan crec aquest valor t, tot el que és un punter a aquí. I així, quan vostè està tractant equiparar i comprovar per veure si s és igual a igual és igual a t, l'ordinador és en realitat tornar a que la direcció d'aquesta m i la direcció d'aquest m. I perquè són de dos peces separades de dades que s'emmagatzemen en dues diferents direccions en l'equip, l'equip mai va a reconèixer-los com sent el mateix. Algú vol donar-li una oportunitat pel que hauria de fer si volem corregir això i tenir un programa en execució correcta en el seu lloc? Penseu en això per un parell de segons. Què necessitem per canviar a aconseguir aquest funcionament del programa la forma en què volem que funcioni? Sí, vull prendre una punyalada en ella? AUDIÈNCIA: Podem tractar d'eliminar la referència al punter i comprovar a través de la matriu? PROFESSOR: Aquesta és una manera de fer-ho. Així que, quin és el teu nom? Ho sento, m'ho recordis. Zee: Zee. PROFESSOR: Sí, i què Zee suggerit seria absolutament treballar. Oi? Podríem eliminar la referència al punter i en realitat anar i accés les dades físiques a l'interior d'aquí. I només podem comparar tota la pantalla. Podem dir, OK, punter, dóna'm el que hi ha aquí dins. Seria retornar un m. I jo diria, punter, dóna'm el que hi ha aquí dins. Tornar un m. Feu els partit? Sí. Després de passar. Seguim comprovant sobretot els dos cadenes de tot el camí fins al final i veure si aquests són iguals, si tots els valors són iguals. I si tots els valors són iguals, llavors sabem les cordes són certes. Absolutament, així és com ho faríem? Algú va confondre en tot això? Tot el concepte de com les cadenes en realitat només són punters, i la forma en que realment no existeix? ¿I per què tenim errors com la forma en què ho fem? Perquè et garanteixo nois, punters i l'assignació de cadena i la memòria arribaran. Sí? AUDIÈNCIA: [inaudible] dereference ella, només cal posar una estrella [inaudible] PROFESSOR: Això és. Així que per derererence un mitjà de punter per anar a l'adreça del punter i obtenir les dades, el valor allà. I la manera de fer-ho és indicador de l'estrella. Cal no confondre això. AUDIÈNCIA: [inaudible]. PROFESSOR: Sí. AUDIÈNCIA: Així que vostè pot simplement escriure si l'estrella s iguals iguals estrella t. PROFESSOR: Bé, no. No. AUDIÈNCIA: Això no és prou bo, oi? PROFESSOR: No ho és, perquè ets Només el control de la primera lletra. Vostè està probablement va a necessitarà algun tipus d'un bucle que itera per cada personatge en ambdues cadenes. Sí. Així que si volia comprovar només per veure si començaven amb la mateixa cosa, que pot fer si, estel s és igual a l'estrella t. Llavors vostè sap que almenys començat amb el mateix caràcter. Sí? AUDIÈNCIA: Així que la forma vostè que seria com un encastat per bucle o punter? PROFESSOR: Sí. Pràcticament només un bucle for. Recordeu, David a la classe esmentada el sucre sintàctic lliure? I tenia aquesta mateixa El confús de l'estrella t més un, on s'integraria a través i que es mogui el punter? La manera més fàcil de fer això és només t de i. Així que és només una matriu. La forma en què vostè hauria una per a bucle que va passar de zero a I, on i és la longitud de la cadena, només podria escriure que en comptes de fer el tota punter, cosa referència. Així que aquestes coses són exactament equivalent al seu ordinador. Vostès probablement no ho farà necessiten saber que, però és bo per només una mica tenir a la part posterior de la seva ment. Només sé que l'equip reconeix diferents blocs de codi com la mateixa cosa. Com que aquest és només molt més d'usuari amigable per a nosaltres presentar com si fos una matriu. És més fàcil. AUDIÈNCIA: Llavors utilitzar strlen d'agradar, get-- PROFESSOR: Sí. AUDIÈNCIA: OK. PROFESSOR: Vostè podria utilitzar strlen o, si es no tenia strlen vostè pot fer fins fins a arribar a la barra invertida zero per a tots dos. De qualsevol funcionaria. Sí. AUDIÈNCIA: Així que és per eliminar la referència de cada caràcter individual si fóssim realment escriure aquest codi, Només podia fer samarretes suports i desitja amb l'estrella al front d'ella? PROFESSOR: Sí, és igual a equals s suport de i, i després segueixo jo en moviment baix cap amunt fins arribar a la final. Sí, això és el que faria. I vaig a realment tinc un costat exemple de quan en realitat escriure strlen perquè vostès faran classe d'arribar a jugar una estona amb ell una mica. Així és tot clara en tot just memòria, cadenes, punters, adreces de qualitat? Alguns conceptes de més alt nivell que voluntat del cert necessitat de saber sobre el concurs matí. Tot bé. Bé. Sí. OK, així que l'únic que tindrem també demanem vostè, com ho fem tots els anys en un concurs, és a dir, suposem que vostè ha oblidat (que sembla que ens oblidem de fer-ho anualment) en el qual es declara l'arxiu de capçalera strlen. I així que hem de tornar a escriure nosaltres mateixos. Aquí hi ha una llista de directrius que podem presentar- nois on s'arriba a suposar que s la cadena no serà nul. Vostè pot assumir que s haurà va acabar amb una barra invertida zero. Així que ja saps que és el que que va a acabar amb. I, per exemple, que la longitud d'hola seria 05:00. Així que vostè pot assumir que hola serà de cinc, H-E-L-L-O. Vostè no ha de suposar que la backside zero representa la longitud. Aquest últim que aquí, no ho facis preocupar-se de desbordament de sencers. Algú recorda desbordament de sencer és el que? AUDIÈNCIA: Va més enllà de la longitud de la [inaudible]. PROFESSOR: Sí, es pot explicar una mica, què vol dir això? AUDIÈNCIA: Llavors, suposo que es remunta l'exemple truncar abans. Però si vostè té només tants números que van més enllà del nombre de bits que en realitat es pot assignar que serà només una mica tallat. PROFESSOR: Sí, així que en una típica ordinador, quants bits tenim? AUDIÈNCIA: 32? PROFESSOR: Sí, 32, a la dreta. I això és, què, quatre milions de dòlars, dos mil milions? Quatre milions de dòlars, fins a quatre milions enters positius, oi? Dos mil milions negatius, Dos mil milions positiu, depèn de com voleu fer-ho. I així que bàsicament podem tenir suficients nombres enters que poden anar fins de dos a 31 menys 1, oi? Perquè una vegada que va colpejar a dues a la 32, no ho fem tenir aquesta quantitat de memòria al nostre ordinador. I així, en teoria, que podria arribar a un nombre és a dir, com, dos a la 46a. És un nombre enorme-cul, però teòricament podries. I desbordament tan sencer és si intenta crear un enter que va més enllà del que l'equip és capaç d'emmagatzemar. I així vostès per aquest exemple no tenen de preocupar sobre nosaltres que li dóna un gegant cadena que és de dos als caràcters 32a de llarg. Això seria realment significa. Molt bé, així que només vaig a donar vostès l'estructura de base d'aquest. Vas a crear un funció anomenada int strlen on Una passada en, un estel char, o cadena, punter a la cadena cridar s. Molt bé, tothom de copiar cap avall. Fresc. Una altra Oops-- manera. Així que això és com una mena de més dur tros de problema, així que et donaré uns cinc nois a sis minuts de classe d'una pluja d'idees i escriure a terme aquesta funció. AUDIÈNCIA: No fem compte de [inaudible], nosaltres no hem de fer servir sencer? PROFESSOR: No, no ho fas. Et vaig a donar una pista nois. Un bucle while pot ser molt útil aquí. Sí. Aquí dolços. Caramel també estarà disponible per al concurs, crec. Així que vostès serà tot ensucrada fins demà. Pot jo-- ho tens. AUDIÈNCIA: OK. PROFESSOR: Sí. Potser 30 segons més o menys. Molt bé, si estàs no es fa, no es preocupi. Ens mourem per això junts. D'ACORD. Així que em vaig a només el disseny del estructura bàsica per a aquesta funció aquí. Int strlen. En primer lloc, ¿algú vol dir-li mi el que int significa? Hem de tenir en aquesta funció. AUDIÈNCIA: strlen [inaudible]. PROFESSOR: Exactament. Així que passi el que passi aquí, hem de tornar un enter. I com s'especifica en el spec, volem return-- Vagi per a ell nois, només seguir endavant. Està tot bé. Coma tot el que no tinc a prendre de nou, en realitat. El int simplement vol dir que ets va estar tornant un enter. Què és aquest carbó estrelles s? Què vol dir això? AUDIÈNCIA: Igual que, el que s'està introduint en. PROFESSOR: Exactament. I el que és gairebé el el mateix que l'estrella de carbó? AUDIÈNCIA: String? PROFESSOR: Exactament. Així que tot el que estem fent és donar això un punter a una cadena. D'ACORD. Fresc. A més, no us oblideu, si ens oblidem per donar-li aquests suports, no t'oblidis d'escriure tu mateix. A causa que en teoria, el seu codi és incorrecta si s'oblida d'escriure'ls. Així sempre prestar atenció. Igual, petites coses que no s'adonen quan s'està programant en el seu ordinador portàtil, perquè el teu portàtil ho fa per vostè? No us oblideu, quan vostè està escrivint amb la mà. Sí? AUDIÈNCIA: Però com incorrecte? Igual, podem arribar tot el problema equivocat? PROFESSOR: No, no. No et preocupis. En realitat és teòricament possible perquè vostè aconsegueixi punts complets en una pregunta fins i tot si el seu codi mai es queda a la vida real. Li suggereixo que no ho intentes perquè això passi. Per exemple, com si tot això és que aquí és correcte, però s'oblida de dos punts o un suport, el seu codi en realitat no córrer. Però podem ser compassius. Sí? AUDIÈNCIA: Té vostè comentar en el nostre puny i lletra? PROFESSOR: No, no, no es preocupa per això. Sense comentaris. Estil ha de ser bo. Igual, no Smush tot en una sola línia. No serem feliços amb vostè si vostè fa això. Algú vol dóna'm la primera línia? Suggeriment, és molt fàcil. Sí? AUDIÈNCIA: Int, n és igual a zero. Només has de configurar taulell. PROFESSOR: Llavors volem alguna una mena de taulell, oi? Jo només vaig a nomenar-ho "explicar" en nom de la llegibilitat. Què volem per configurar-igual? AUDIÈNCIA: Zero. PROFESSOR: Sí. Punt i coma. També és un punt i coma dibuix molt estranyes. Només la pràctica de fer això. Així que volem tenir primer un comptador de tipus int. Perquè volem comptar fins com molts caràcters o lletres són en aquesta cadena, oi? Primer pas molt fàcil. OK, potser una mica més complex Ara, com ho farem? Algú vol dóna'm la línia de codi que pot ser capaç d'ajudar en bucle a través del que sigui que és això? Sí, valent ànima en la part de darrere? AUDIÈNCIA: OK, així que mentre que el punt asteriscs, el sí, estel de s, no és igual a zero, llavors fer alguna cosa? PROFESSOR: Això és molt, molt a prop. Molt a prop. Així que vaig a tractar dues coses se amb això. En primer lloc, no és exactament zero. Que és? És el terminador nul, barra invertida que és zero. Així que són diferents en termes de com estan emmagatzemats. Així que estàs molt a prop. I en segon lloc, no volem només moure el punter. Volem realitat accedir als valors, no? I així, com ho fem? Molt fàcil. No pensis en punters, no pensis en records. Tornar a la segona setmana d'aquest curs. AUDIÈNCIA: [inaudible]. PROFESSOR: A, recordes? Quines són les cadenes? Com s'emmagatzemen a la memòria? AUDIÈNCIA: Estan aixecades. PROFESSOR: Es crien. Llavors, com accedim cada personatge dins? AUDIÈNCIA: [inaudible]. PROFESSOR: Exactament. Així que el que succeeix a l'interior Rato-- aquí? S de - AUDIÈNCIA: I. PROFESSOR: Oh, jo no existeix, oi? AUDIÈNCIA: Oh, expliqui? PROFESSOR: Podem simplement utilitzar el compte, no? AUDIÈNCIA: Ho sento, em va cridar i. PROFESSOR: Sí, està tot bé. Tenim una variable fins aquí això és ja s'ha declarat com el nostre comptador. Així que per què no ens limitem a usar que per moure a través del bucle while? Això té sentit? Així, mentre que s de count-- vol ningú per donar-me el que passa després d'aquí? AUDIÈNCIA: No és igual. PROFESSOR: no és igual, no? És l'explosió és igual, signe d'exclamació és igual, el que vostès volen cridar no equal-- AUDIÈNCIA: [inaudible]. PROFESSOR: Sí. Recordeu cometa simple és per un char, cometes dobles són per a una cadena. Aneu amb compte en usar-los. Així que quan estem mirant a través de la matriu, l'últim caràcter, sabem que no volem que sigui barra invertida zero. Així, mentre que. No estem en el final de la cadena. Què és el que volem fer a l'interior? AUDIÈNCIA: Volem afegir a la comptador perquè expliqui plus plus? PROFESSOR: Exactament. Així que aquí farem comptar, comptar plus plus. Manca una línia més. Ja gairebé hem arribat. Què estem oblidant de fer? AUDIÈNCIA: Tornant a zero? PROFESSOR: Vols tornar a zero? AUDIÈNCIA: No, tornar a strlen. Espereu. PROFESSOR: Què s'emmagatzema en? AUDIÈNCIA: Count. Comte. PROFESSOR: Exactament. Així que aquí anem a tornar recompte. Perquè el que estem fent aquí ultimately-- tenim una variable comptador que és va a incrementar mitjançant la nostra cadena. Seguirem endavant, mantenim va, voltes i voltes en aquest circuit. I si bé no estem en el final d'aquest cadena, que és el terminador nul. I cada vegada que passem per que, estem afegint al nostre taulell. I anem més al llarg d'aquesta matriu. I al final, una vegada que colpejar el terminador nul, sabem, oh, podem trencar, retorni el recompte. Tenim la nostra strlen. Tothom obtenir la forma Això es va implementar? Mentre loops-- Sé que no tenim fet massa amb ells, però són en general molt, molt útil si no saps el que estàs parant condició ha de ser necessàriament. Pregunta? AUDIÈNCIA: Podem escriure nul·la amb la condició de temps? PROFESSOR: Si bé? Sí, pel que en aquest problema et vaig tenir nois assumeixen que s no serà nul. Perquè recorda, teòricament, si jo et vaig donar un punter que era massa gran de la memòria, que li donaria la nul·la, oi? Això és el que l'operatiu sistema faria. Així que si jo no dic que assumir s seria nul, cal comprovar. Així que aquí, ho faria, si s és igual a igual a null, tornar un. Alguna cosa així. AUDIÈNCIA: [inaudible] zero. PROFESSOR: OK, t'ho diré per què no es pot fer això. Perquè recorda en la memòria, a la dreta, aquí. Anirem aquí. Tens blocs gegants de la memòria tots amb reixetes que emmagatzemen valors diferents, no? I així tota una cadena de és-- exemple, si hem d'entrada hola, seria H-E-L-L-O barra invertida zero, no? I llavors, qui sap, com a l'atzar coses que estan en aquí després d'ella. En realitat no sabem el que hi ha. I pel que si anés a fer en lloc de la barra invertida zero, null, pot ser que no sigui nul. Com que només pot significar algunes altres coses a l'atzar que no pertanyen a la seva cadena. I així, la forma en què sempre sabem que una cadena acaba amb una barra invertida és zero. I això és sempre la forma en què comprovar per veure el final d'una cadena. Null, tot el que significa és que si tens un punter inexistent, primer de tot, o si la seva memòria és tan gran que vostè no pot tornar, llavors seria nul·la. Així que tenir molta cura en diferenciar la diferència entre la nul·la i la barra invertida zero. Sí. Tothom d'acord amb això? D'ACORD. Així que vaig haver de vostès escriguin strlen. Factible també podríem demanar-li que escrius fora de A a I, recorda que "Atwoa" o el que sigui que vostès volen cridar? Aquesta funció en Vigenère i César, que converteix un valor ASCII a un enter? Això també ha pujat en les proves anteriors de les funcions que li hem demanat a escriure. Gairebé qualsevol funció que vostè ha utilitzat i és molt fàcil escriure vostè mateix, sensors agrada és menor, és superior, per reduir, al superior. Funcions de convertir un cadena de minúscules a majúscules. Tots sabem com fer-ho, no? És molt fàcil. Només vull estar segur que can-- és el mateix procés de pensament. Només iterar a través i vostè dóna volta les coses. Vostè tampoc comptar o quan encendre les coses de manera diferent. Em suggest-- I no sé si anem a demanar que memoritzar el majúscula o de capital Z, o minúscula A o minúscules z estan en ASCII, però jo suggeriria potser per escrit que en el cas nosaltres fem. Només perquè vostès tenen una referència. Com majúscula A és, què, 197? I llavors minúscula és com 50 alguna cosa. 65, sí, aquí el tens. Així que més o menys conèixer la diferència entre ells és 32. Això és molt important. Sí. Sóc bo en això? D'ACORD. AUDIÈNCIA: Podríem teòricament escriure algun d'ells cap avall també en la nostra poc-- PROFESSOR: Vostè teòricament simplement podria copiar la funció cap avall. Això és cert. AUDIÈNCIA: No [inaudible]. PROFESSOR: Vostès tenen un full. Vostès tenen un full de notes. Pots escriure-ho. Pots escriure-ho. Pots fer el que vulguis amb ell. Sí. Per tant teòricament, si vol, anar. AUDIÈNCIA: [inaudible] però no ho fem de veritat necessàriament han de recordar el valor, podem simplement utilitzar el de superior o de funcions inferior, a la dreta? PROFESSOR: Sí. Però si us vam donar una pregunta que diu escriure a superior, llavors vostè hauria de escriure-ho. Així que vostès poden assumir que vostè nois tenen accés a totes les funcions, però si vol utilitzar per a la part superior o per inferior, què és el que també cal fer? AUDIÈNCIA: [inaudible] utilitzar CS50 [inaudible] PROFESSOR: És CS50.h? Aneu amb compte allà. Així que per la part superior, per baixar, és superior, és menor, funcions que impliquen manipulació de cadenes són tot dins de ja sigui el Ascii o dins de la biblioteca matemàtica o dins de la biblioteca de cadena. Així que si vostès fan servir aquestes funcions, aneu en compte de recordar per incloure aquesta capçalera. Així que potser també alguna cosa que que voleu incloure a la seva fulla, quins són la capçalera? Quines són les biblioteques vostè ha estat utilitzant? Quines funcions són dins d'aquestes biblioteques? És important. Sí? AUDIÈNCIA: Podríem simplement policia i fer hashtag a través de la absolutament cada carta que alguna vegada vist així en totes les preguntes? PROFESSOR: Vostè podria. No sé el feliç serem de grau que prova que cada peça de codi és el doble del que ha de ser. No sé, podríem treure un punt per l'estil. Però teòricament la seva codi seria correcte. Vostès podrien policia i només cal incloure tot. Això també està bé, si. AUDIÈNCIA: [inaudible]. PROFESSOR: Sí. Jo suggeriria que no fer això però. Sí. AUDIÈNCIA: Cool. PROFESSOR: Bona pregunta. AUDIÈNCIA: Llavors, el pitjor dels casos. PROFESSOR: El pitjor dels casos. Si oblida totalment, vostè podria fer això. Sí. Sí, el codi hi és. Solia n lloc del recompte, però, vostè conèixer, el que sura seu vaixell. AUDIÈNCIA: Espere, per la qual cosa no hauria de Hashtag incloure perquè som començant pel int? PROFESSOR: Sí, jo vaig suposar que ens van demanar d'escriure la funció. Si vostè volia estar segur, probablement podria posar-lo allà. Però jo no em vaig molestar, si. Ni tan sols sé si necessita qualsevol biblioteca per això. Com que vostè no està realment la impressió qualsevol cosa o res, oi? Sí, jo no sé si necessita una biblioteca. D'ACORD. Aquest és també una mica més al llarg les línies de manipulació de memòria. Aquest tipus de mica complicat. Penseu en això. Vostè té una funció anomenada func. Podria haver cridat que el que sigui, però trio nomenar-func. Ho tinc damunt del meu principal. Recordi, vostè vol tenir una funció després que el seu principal, vostè vol assegurar-se que incloure el prototip de la part superior. Però en aquest cas va ser tan curt que vaig sentir que podia simplement incloure'l sobre de la principal. No necessita tenir el prototip, perquè ja està escrit a dalt. Així que tot el que estic fent en la meva funció principal està creant sencer x és igual a 10. Vaig a trucar a la meva funció func, i després imprimir alguna cosa. I llavors això és realment el func està fent. Volen que pensar en això. Com que és una mica complicat. És molt, molt difícil, en realitat. Penseu en el que això programa seria fer sortir. Et vaig a donar dos nois minuts. Bones discussions? AUDIÈNCIA: Sí. PROFESSOR: Sí. Molt bé, així que això és complicat per una raó. I és per això que jo volia per portar això a l'atenció de tots. Algú vol donar-me un suggeriment, un intent? Com seria aquesta imprimir? Totalment bé si t'equivoques. Sí? AUDIÈNCIA: Crec que és 100 i després 10 en dues línies separades. PROFESSOR: I una 10 € Algú té alguna altres conjectures? Sí? AUDIÈNCIA: Potser només 10 perquè func no torna res? PROFESSOR: OK, així que tenir conjectura número u és que conjectura número dos és només va a imprimir 10. Algú té alguna altres conjectures? D'ACORD. Així que anem a caminar a través d'aquest, ¿no? Sempre que rebi una peça de codi, no n'hi ha prou amb veure i ser com, ah, això és tantes coses! Estic tan confós! Igual que, calmar-se. Només sé que vostè podria mirar a través de codi línia per línia. Això és tot el que és. És com llegir un llibre. Així que amb qualsevol funció, sempre vam començar a principal. Així que anem a començarà a les void main int, fins i tot el programa de ja deteriorada, oi? Comenceu a en void main. Int x és igual a 10. Així que vaig a esborrar això. Vaig a assenyalar a la memòria perquè ho nois poden espècie de veure el que està passant. Recordeu que aquí tenim la nostra pila? Fins aquí tenim la nostra s'amuntegaran en algun lloc aquí. Pila creix, oi? I dins de la pila, que té la xarxa funcionen tan bé com tots de xarxa variables locals. Així que aquí, int x és igual a 10. Dins de la nostra funció principal que estem la creació d'una variable anomenada x. Estem establint que igual a 10. Aquí tens alguns x, i ja està establint que igual a 10, a la dreta, dins principal. Cada un de bo? Function. Així que ara, dins el nostre principal funció, estem cridant la funció que hem escrit anteriorment. Així que estem ara entrem en la segona funció. Anem a crear un altre variables int x és igual a 100. Què està passant aquí a la pila? Què passa quan es diu a un funció que crea noves variables? Què passa aquí a la pila? AUDIÈNCIA: [inaudible] piles a la part superior? PROFESSOR: Sí. Així que en realitat crea una còpia. I quin tipus de piles a la part superior. Penseu en el stack-- una pica de llibres, una pica de res. Piles a la part superior, en primer lloc en l'última terme, últim en entrar, primer a sortir. Així que crearà una x aquí. Això va tenir tots els funcs variables. Gran. Així que ara tenim dos diferents x que representar dues coses molt diferents. Llavors anem a imprimir el nombre enter de x. Així que anem a imprimir 100, oi? Perquè aquí és 100. Així que això és el primer que es va a imprimir. Com aquesta funció retorna res, ara aquesta funció, aquesta línia en main està fet. Tothom bo amb mi fins ara? Així que estem ara a través de dos dels tres línies de la nostra funció principal. Ara anem a la tercera línia. Anem a printf. Què és aquest x dins principal? Què és el que representen? Quin valor és x ara? AUDIÈNCIA: 100. PROFESSOR: És 100? AUDIÈNCIA: Encara octubre. PROFESSOR: Encara octubre. Sí. Perquè recorda, en el termini la nostra func, x és igual a 100. Però si tornem l'esquena a la nostra funció principal, aquesta variable s'emmagatzema en una lloc diferent a la nostra pila. Així que ara hem de tornar a la xemeneia principal, xarxa de variables locals. I aquí x és igual a 10. I així anem a imprimir 10. Així que ella tenia tota la raó. Tindrem la de sortida de 100 i 10. Sí? AUDIÈNCIA: Quan malloc, és que la munt o la pila que és [inaudible]? PROFESSOR: Quan malloc, vostè està prenent memòria del munt i la seva assignació. Així que vostè no té ficar-se amb res d'això. Així que suposo que el menjar per portar més gran aquí hi ha alguna cosa que es diu abast. Per a aquells de vostès que estaven en la sessió de revisió d'anit, parlem breument sobre això. Abast defineix com i quan hi ha variables. O dins del que emmarca què hi ha les variables. Més o menys la regla general és a dir, la seva variables-- si vostè els crea dins braces-- arrissat hi només dins d'aquestes claus. Així per exemple, en la nostra funció de func, veus aquestes dues claus. Si crearà res a l'interior de la mateixa, és probable que tot el que estem fent és la creació d'una pila i l'emmagatzematge que no. El mateix en el principal. Això és només emmagatzema dins del principal. També vols ser molt, molt amb compte aquí. A causa de que arribi també es presta a diferents exemples. Així, per exemple per a una bucle, per int i és igual a 0. I és menor que, no sé, 10. Jo plus plus. I tens codi dins d'ella, no? D'on ve aquesta variable, I, en realitat només existeixo? Només dins del bucle for. Així que aposto al fet que molts de vostès tenen Probablement trobat aquest error quan que estàs fent programes en els seus conjunts de processadors. Quants de vosaltres heu tractat d'utilitzar i fora d'un bucle for i tenia un error? Igual que un sencers sense referències o alguna cosa per l'estil? La raó per la qual passa és perquè aquí estàs la creació d'alguna cosa que només existeix dins del seu bucle. I si intenta usar-lo, i no ho fa en realitat existeix fora d'ella. Així que, bàsicament, un ordinador dient: Jo no saps el que estàs parlant. Tot el que sé és que jo era un aquí, però ara ja no. Així que si jo fos a crear un bucle for dins, ¿no? I jo vaig a crear un altre, com int j, i han de fer el que sigui. I tens un codi dins de aquest bucle, j només existeix aquí. Però això també existeix dins i. I així j només hi ha dins d'aquest bucle, mentre que existeix en tot l'assumpte. Tothom clar? El mateix amb sentències condicionals si vols crear qualsevol cosa. El mateix amb bucles mentre que si vol crear res. Això és una cosa del que molt, molt acurat sobre. Així que aquest era un bon problema al sentit que demostra dues coses. Es va demostrar per primera vegada, l'abast. I va demostrar també l'assignació de memòria. A causa de que vostès han de saber que funcions creixen cap amunt a la pila. I que quan es diu a funcions, que està creant essencialment una nova pila de memòria. Això és molt diferent de el que la seva memòria és la xarxa. Sí. Sort! Tothom a D'acord en això? Això va ser confús. Molt bons temes per repassar, perquè vostè està probablement aconseguirà una mica complicat coses com que en el qüestionari. Sí. Fresc. Vaig a posar vostè aconsegueix 100 en un línia i després 10 en l'altre. Sí, molt bo. OK, ara els nois s'arriba l'oportunitat de ser el TA. Tens l'oportunitat de respondre a totes les encantadora missatges de correu electrònic que a vegades em poso. Així que, estimats Andi, veig crec que alguna cosa és anar malament amb el meu compilador. Estic segur que el meu codi és correcte, però segueixo obtenint una fallada de segmentació cada vegada que em trobo. Què està passant? Si us plau, ajuda, molt d'amor. Si vostès té alguna cosa com que com respondria vostè? Aquestes són en realitat molt comú preguntes ens preguntaran vostès. És que si, li donarem un escenari, anem a donar-nos seva millor resposta al que està passant. Algú té una punyalada en el que està passant? Sí? AUDIÈNCIA: Potser el desreferenciado nul, una mena de el punter s'assenyala en alguna cosa nul. PROFESSOR: Sí, això seria un exemple de quan això passi. Però el que és la imatge més gran del que està passant aquí? AUDIÈNCIA: És que vostè està tractant per accedir a la memòria que no estàs suposa que tenen accés a? PROFESSOR: Exactament. Així que pensar en una fallada segons, un off límits, àrea restringida en la memòria que no s'ha de tocar. Així que més o menys quan s'està tractant a index-- com per exemple, vostè ha declarat array de zero a nou. Però intenta tocar aquest desè valor, vostè no té accés a això. Com que vostè no ha declarat. I perquè el seu equip va mirar que sigui similar, uh oh, estàs tractant d'anar fora dels límits d'un índex. Vaig a donar-li un error de segmentació. Penseu com segment, oi? Un segment addicional, la culpa és quan intenta trencar alguna cosa i que no hauria d'estar allà. Fallada de segmentació és en qualsevol moment intenta tocar les coses que no s'ha de tocar. Així exemples comuns són un índex. Per descomptat, si vostè està tractant tocar això era nul, que també funcionaria també. Si el punter estava tractant de tocar les coses que no s'han de tocar, que també podria funcionar tan bé. El més típic podràs veure això en una matriu. Cada un de bo? AUDIÈNCIA: Així que si vols per accedir al punt 10a i només hi ha un límit de nou anys o alguna cosa així. PROFESSOR: Sí, exactament. Més o menys. Fresc. Benvolgut Andi. Així que tenim aquestes meravelloses coses anomenen classes. Si Merge sort-- com nosaltres serra en l'exemple, quan David va fer tot cosa en class-- per què, si és molt més ràpid que qualsevol dels altres tipus, ¿Per què ens molestem saber qualsevol dels altres tipus? Què és aquesta pregunta realment que li pregunta? Què hi ha dels tres paraula-- AUDIÈNCIA: Quina és la compensació? PROFESSOR: Exactament. Això és el que està fent la pregunta. Quin és l'equilibri entre Combinar espècie versos qualsevol altre tipus? AUDIÈNCIA: Pren la memòria, no? PROFESSOR: Té vostè explicar que una mica més? En primer lloc explicarem botiga Combina. Com Combinar espècie treballar? AUDIÈNCIA: Així funciona per dividint tot enmig i després posar junts i la reassignació d'ella per tal, que cada vegada que combinar els conjunts. PROFESSOR: Més o menys. Així que puc treure això, però seria portar-cinc minuts al aconseguirà. Mirar cap enrere a la secció de diapositives on cobrim Combinar tipus. Exactament. Així que la forma de combinació de treballs d'ordenació és que divideix les coses per la meitat, i després que només es veu en el primers valors de tots ells i classifica només això. Contínuament crea noves matrius i posa les coses cada vegada més en ordre. I així, mentre que això és molt, molt ràpid perquè és-- ja saps, una recerca binària és n log n. Estàs creant tants diferents matrius que ets l'ús d'una enorme quantitat de memòria. I així, mentre que és més ràpid, la compensació aquí és que vostè està utilitzant més memòria. I així, suggeriment, ordena i recerques estaven coberts molt més aquest any el que han estat en anys anteriors. Vostès han de veure que reflectit en conseqüència en el qüestionari. Definitivament, m'agradaria gastar temps en anar més del que tots els diferents tipus són, buscar la forma binària, com lineal treball de recerca. Com potser pseudocodi codificar els a terme. Quins són els temps de funcionament? Una cosa així com temps de funcionament és molt fàcil de copiar cap avall en un full de notes, Oi? És molt difícil quan estàs en el mitjà de la prova i vostè ha de donar compte d'això. Copieu baix. Et garanteixo que ets va a haver de saber això. Quins són els avantatges i desavantatges? Pitjor dels casos, millors escenaris per a tots ells, molt arribar a conèixer. Sí? AUDIÈNCIA: Necessitem saber com codificar Combinar espècie? Igual, és el que necessitem recordar el recursiva? PROFESSOR: Ho dubto molt, simplement perquè és com bastant complicat. Però pot ser que no sigui factible si demanar-li que faci servir pseudocodi a terme. Sí. Sí, està bé, un més. Això pot haver sorgit en l'última peça en una mica. Sí? Tots sentir això? OK, així que més o menys de la primera tot, quin tipus de programa seria donar-li una sortida com aquesta? Recordi que vostè demana que aprendre sobre aquest nou tipus d'eina de depuració? Quin era el nom d'ella? Valgrind, dreta Era un programa on vostè pot trucar a això vaig poder realitzar un seguiment de tota la memòria que està utilitzant en el seu programa i que estava passant. Així que si tens alguna cosa, com, definitivament perdut, 40 bytes en un bloc. Probablement vostè no està recordant alliberar-la. Perquè si vostè està utilitzant bytes de memòria, això vol dir que ha accedit a que la memòria, però no ha estat capaç de alliberar-se. Així que vostè vol fer Segur que ets també utilitzant libremente-- això és un function-- per alliberar tots els de la memòria reassignat per malloc. Fresc. Així que aquesta diapositiva, tindré cap amunt. És a tot arreu en un munt de conferències, en una gran quantitat de secció diapositives. De veritat vol assegurar que acaba de saber tot això. Ja sigui en el seu full de nota o si vol memoritzar, no dubteu en. Això és molt, molt, molt important. També una molt bona pregunta que podem demanar. Per què és mirada Selecció sort-- en Selecció sort-- tots els temps d'execució són N al quadrat. Independentment de com la llista arriba a vostè com, per què és sort-- Selecció Et vaig a donar 30 nois segon pensar en això. Com que és una mica confús. Es tracta d'una reflexió conceptual. Per què els temps d'execució de la mateixa en tant els pitjors i millors escenaris? Sí? AUDIÈNCIA: A causa Selecció espècie cada posició o l'espai en aquest petit arsenal cosa o el que sigui. Així que fins i tot en el millor dels casos, fins i tot si està perfectament ordenades, seria encara ha de ser així, OK, un. En el meu primer lloc tinc una. I passar per tots ells. OK, un és el més petit. I després va una altra vegada i és com, OK, dues és la més petita de totes les coses. Però encara ha de comprovar tots i cada un. PROFESSOR: Sí. Així, per exemple, direm Tenim una llista, ja classificat, una sèrie 1-5. La forma en què tipus de selecció és que passa per, comprova aquests dos. A continuació, comprova els dos. I llavors es comprova i verifica. Manté comprovar tots ells, independentment de si o no en realitat està ordenada. Perquè això és simplement la forma en què el tipus treballa. I pel que aquesta qüestió és com una pregunta conceptual demanarem. On primer, a saber quin tipus de selecció és, a la dreta, per poder respondre a la pregunta. Has de ser capaç d'entendre conceptualment el que està passant. I llavors vostè pot aplicar-lo i pensar, OK anem a imaginar pitjor dels casos. Estan tots en ordre descendent. Com afectaria això que? I si és per tal d'ascendir? Si ja està ordenada? Com afectaria això els temps d'execució? I llavors tipus de selecció, t'adonaràs que no importa realment. Com que vostè està comprovant tota la valors, independentment del que està passant. I així les coses bones per recordar. Per què algunes classes difereixen dels altres i la millor i pitjor dels casos afectaria a tots ells. Vaig a colpejar realment a classe perquè això va a estar a l'qüestionari. Sí. D'ACORD. Hi ha sis minuts per al final. Puc prendre tres minuts de preguntes. També puc penjar al voltant de com 20 minuts després de la secció si voleu fer preguntes també. Algú amb prou feines té molt breu preguntes o qüestions conceptuals són poc clars sobre aquest moment? Sí? AUDIÈNCIA: Pots parlar una mica poc sobre els operadors bit a bit? PROFESSOR: Sí. Així que els operadors bit a bit són cosa que probablement només podria voler posar en el seu full. Així quickly-- No vull anar massa en profunditat perquè de Harvard, en la seva opinió període de sessions, la va cobrir bastant bé. Operador de bits, hi ha cinc d'ells, no? Hi ha una, que és x o funció, no hi ha signe, que és la i. Pipe, que és el o. I llavors vostè té els dos diferents tipus de torns. Si et dono dos valors, si és Jo et dono, com, l'un i un. El que caldria avaluar a? Si et dono cert i veritable, cert? Què hi ha de vertader o fals? Sent cert, ¿no? Com que hi ha una o. El més probable és que et donem els números. Així que recordi, un és igual a veritable, zero és igual a fals. I ens podria donar-li aquestes coses i demanar-li que ens digui el que passa. Harvard cobreix dins de la primera 10 minuts de la sessió d'estudi molt, molt bé. Així que vostès volen fer Segur que mira cap enrere en això. AUDIÈNCIA: És PISA 5 va a estar a l'concurs? PROFESSOR: No. Ni tan sols mirar a PISA 5 ara. És difícil. Així que ni tan sols et molestis a buscar a PISA 5. No obstant això, com alguns consells i suggeriments, suggeriria que iniciï PISA 5 tan aviat com el concurs ha acabat. Aquest serà el més dur setmana, però després vostès la hi va passar als turons de verd i cadells laminats, i està bé. Aquesta classe es posa significativa més fàcil després del cinquè conjunt de processadors. Horari d'oficina: AUDIÈNCIA són Diumenge, Dilluns? PROFESSOR: Sí, així que les hores d'oficina farà de diumenge a dilluns per al conjunt de processadors. L'horari d'atenció aquest vespre essencialment només serà crítica per al concurs. Si algú vol entrar i demanar la TA una pregunta, estarem allà. Vaig a prendre potser una pregunta més si algú té una pregunta? Sí? AUDIÈNCIA: Quan estiguis nodes que defineixen, [inaudible] si dius estrelles node i després un altre, fa l'ordinador de forma automàtica entens que ets referint-se a un altre punter? PROFESSOR: No. AUDIÈNCIA: Vostè ha de reenlazar que [inaudible]? PROFESSOR: Així que, bàsicament, el estructura d'un node és, recordem, que és com es crea el node i llavors vostè té un punter trucada següent. Tot el que estem fent és tenir l'estructura allà. Ha d'assignar aquest punter en algun lloc. Així que els ordinadors no ho fa sap el que està fent encara. Ha d'assignar realitat quan crearà la seva llista enllaçada. I això és el que principalment pset maig estarà encès. Així que no et preocupis per res d'això en aquest moment. AUDIÈNCIA: Així que no necessitem centrar-se massa en la llista d'enllaços, just la concepció general? PROFESSOR: Just pràcticament piles, cues, llistes d'enllaços, arbres, taules hash. Només ser capaç de saber el que són. No demanarem t'agrada res específic perquè en realitat no hem fet un conjunt de processadors que la cobreix res d'això encara. Així que en els últims dos minuts abans Em vaig posar lliure per matar a aquest qüestionari. Més o menys, com, pensar en com ara que vostès han arribat en aquesta classe. Recordo que quan la segona setmana d'aquesta classe, alguns de vostès passar tres hores escrivint aigua. Quant de temps el portarà nois escriguin aigua ara? 30 segons, potser? Penseu en la quantitat vostès han après. CS és un tema molt, molt difícil. No hi ha dubte d'això. És difícil, per això ningú no s'ho s'estudia. És simplement difícil. I és totalment bé. I estic molt orgullós que tothom ha arribat tan lluny. Conjunts de processadors no són fàcils. Ells prenen molt de temps. Nois, jo mai li demanarà que escrigui el joc de 15 o Vigenère en el conjunt de processadors. No hi ha necessitat de simplement s'espanti per això. Tot el que estem provant aquí és avaluar el seu coneixement conceptual, així com alguns de les seves habilitats bàsiques de codificació. La prova està dissenyada per ser realment difícil. Igual, que està dissenyat perquè vostè no obté 100. També està dissenyat perquè vostè probablement No ser capaç d'acabar en 75 minuts. I això és totalment bé. Sóc un estudiant de mi mateix. Ho sé, ho odio quan camí d'un qüestionari ser així, merda. Això va ser molt dur. Probablement el que va a happen-- i això és totalment bé, T'ho dic nois a ara. Els mitjans en aquestes coses no són alts en absolut. I per a aquells de vostès que han estat rebent, com, 3 en els seus butlletins de problemes, això no vol dir que estiguis va a aconseguir un 60 per cent en aquesta classe. Si vostè rep un 60% en el concurs, que no ho fa dir que vas a obtenir una D en aquesta classe. Veiem, sobretot jo, per aquells de vostès en la meva secció, Jo veig el difícil que vostès estan treballant. I guardo un registre d'això. Vostès estaran bé. No hi ha memòria institucional de la felicitat al final del semestre. A causa que tots els nens de Harvard estan dient seus amics, oh, estaràs bé. Ningú t'està dient nois que aquí. Així que he de dir a vostès que aquí. Vostès estaran bé. Estic molt orgullós de tots vosaltres. La prova serà dura. Estudi per a ella, i després simplement llençar-la. Prepara't per a aprendre coses noves. I menjar dolços. Nosaltres hem tenen un munt de caramels. Obtenir una bona nit de son. No, no dormir, perquè això seria molt dolent. CS és molta lògica. Si no dorms, no pot funcionar, i el seu cervell no pot funcionar. I vaig a ser aquí per al pròxim 20 minuts si algú vol passar l'estona. Vostès van a acabar amb ell. Bona sort.