[Música tocando] COLUNA 1: Tudo bem, todo mundo. Bem-vindo à sua última seção comigo. Tem sido o semestre. Eu não posso acreditar que isso é, como, semana 12 ou 11, algo assim. Mas porque é o nosso último seção, nós temos lotes de doces. E eu vou tentar e prepará-lo tão bem quanto eu pode, por seu teste na quarta-feira. Então, provavelmente não é a melhor maneira de, como, seção final com avaliação quiz. Mas nós vamos tentar torná-lo divertido. E há sempre doces. Portanto, esperamos, que vai torná-lo melhor. Seu teste vai ser bastante muito a mesma coisa que quiz Zero. Vai ser o mesmo formato, mesmo comprimento. Você vai ficar em salas espalhadas do outro lado do campus, porque não estão perto de 900 de vocês, e não podemos tudo prendê-lo em salas como esta. Então não se esqueça de olhar para todos Quiz Uma documentação online no cs50.harvard.edu hoje à noite ou amanhã à noite. Certifique-se de que você sabe onde você está indo, o que você precisa trazer. Realmente, você só precisa trazer a si mesmo e um lápis, e você deve estar bem. As perguntas serão muito muito mesmo. Provavelmente haverá um casal múltipla escolha, uma resposta curta casal, alguma codificação, talvez um pouco de verdadeiro / falso, os tipos de coisas a condizer. Então, você não deve ser muito surpresos com o formato. O que pode ser surpreendente é o comprimento, o que, em anos anteriores, foi muito mais longo. No meu primeiro ano, eu não tenho um único amigo que eu me lembro de terminar o exame. Havia como múltipla páginas em branco. Assim, o comprimento pode ser tipo de desorientador apenas porque, em alguns anos, ele tem sido muito mais tempo do Questionário One. Eu não tenho idéia o que é como vai ser este ano, mas é algo a ter em conta. Além disso, o pessoas tendem difficulty-- para encontrar Questionário One muito mais difícil do Questionário Zero. Mais uma vez, você sabe, se você é do tipo que anda out sentindo um pouco desconfortável porque você não fez tão bem quanto você pensou você ou que você sinta que não fez fazer, assim como você fez no Questionário One, lembre-se que há, provavelmente, um muitas outras pessoas se sentindo assim. Eu estava definitivamente uma dessas pessoas. Questionário um, como, me jogou para um loop. E os meus amigos têm este grande foto deles em JP Licks tipo de com estas enormes sundaes, sendo assim, Questionário One, e olhando como se estivessem em lágrimas. Portanto, é um sentimento geral. É um teste muito difícil, é um teste difícil. Obviamente, se você sair e você sentir como se abalou, ótimo para você. Mas saiba que você está provavelmente não-- você não é quase definitivamente sozinho, se você sai sentindo como, eh, provavelmente poderia ter começado melhor. É duro. Hum-hum. AUDIÊNCIA: Quanto é que vale a pena em relação a [inaudível]? COLUNA 1: Vale a pena o mesmo. Sim. Mas, novamente, isso também vai ser afectada pelo modo como o resto da classe faz, como faz sua seção, como você melhorou ao longo do tempo. A classificação é um pouco de uma caixa preta. Então, o que o número real ou a percentagem que você começa não é necessariamente gostar diretamente correlacionado com o grau você vai conseguir. Há um monte de fatores que vão para ele. Então, com isso, vamos passar por alguma revisão quiz. Eu só vou para executar este como da última vez para vocês. Eu tenho todas as respostas Um quiz do ano passado. Então, se vocês querem puxar que até em seus próprios computadores, se você tomou este exame antes e você tiver dúvidas, Eu estava pensando que podíamos apenas passar por algumas dos mais difíceis em que. Assim, podemos falar sobre isso, talvez ficar um pouco mais conhecimento na intuição por trás de alguns dos estas questões, como abordá-los. Como assim, como da última vez, Eu tenho um deck de 100-slide que tem basicamente todos dos slides que eu preparei anterior seções desde a sua última I quiz-- temos neste deck. Assim, podemos passar por praticamente qualquer coisa que nós já conversamos sobre antemão que talvez você quer um pouco mais esclarecimentos sobre. Nós poderíamos fazer isso primeiro. Mas, caso contrário, eu estou super feliz só de tipo de trabalho através destes problemas com você. E eu estou realmente aqui para se concentrar no que vocês pensam seria mais importante para se concentrar. Como, obviamente, todos este material é importante. Especialmente como nós atravessamos Questionário One, Eu definitivamente vou apontar coisas como: oh, isso pode ser algo você realmente quer saber ou você quer ter em sua folha de fraude. Eu vou estar te dizendo coisas como espécie de passar. Então, nessa nota, existem coisas que vocês gostaria de passar por cima? Além disso, se eu não tê-lo em minha plataforma, nós pode puxar algo na web, ou podemos tentar fazer -se um exemplo na mosca. Mas qualquer conceitos que você caras são um pouco confuso diante. [? Brian,?] Fez você have-- AUDIÊNCIA: Oh, não é cumulativo? Como, é o material no Questionário Zero vai ser aqui? COLUNA 1: É cumulativo, mas é muito mais de uma ênfase em coisas desde a sua última quiz. Então, obviamente, vocês têm aprendeu sobre variáveis ​​e loops, e condicionais. E não é como aqueles apenas ir embora, porque eles são obviamente inerente a tudo outra coisa que nós aprendemos agora. Não pode ser uma pergunta sobre os tipos, ou há pode ser uma pergunta em pesquisas diferentes. Ou pode haver um par perguntas sobre algo que você talvez tendo a ver com a compilação ou erros diferentes. Mas se você já olhou para Questionário One do ano passado, você vai perceber que é muito focado em coisas que têm acontecido desde a sua última quiz. Por que é que a porta sempre trancada? Isso realmente me incomoda. Porque eu sempre tento passar por isso. Então, isso é muito bonito como o questionário será. Então, existem conceitos que vocês gostaria de passar por cima? Ou podemos ir direto para apenas olhando para Questionário One desde o ano passado e meio que vai através de questões práticas de lá. Nós também podemos mudar e para trás. Isto não é uma espécie única de coisa. Alguma pergunta? Sim. AUDIÊNCIA: Eu poderia pedir um pergunta sobre another-- COLUNA 1: Mais uma? AUDIÊNCIA: Isto é de mais um ano. COLUNA 1: Yeah. Nós também podemos fazer mais um ano. AUDIÊNCIA: OK. Assim, em 2011. COLUNA 1: 2011. Ooh, que foi o ano antes de mim. Deixa-me tirar isso. AUDIÊNCIA: Eu acho. COLUNA 1: Este aspecto rácio é me jogando fora. AUDIÊNCIA: 11 e 12. COLUNA 1: 11 e 12. OK. Bem, aqui, por que não podemos fazer isso? Você guys-- todos basta ter um par de minutos a olhar através de questionários. E nós vamos compilar uma lista. E então nós vamos passar por eles. Tudo certo? Enquanto eu recebo um monte deste material configurado. OK. Eu só vou escrever as coisas no papel. 2011, 11 e 12? Eu só vou mudar esta exibição. OK. Assim é melhor. Isso acabou. Tudo certo. Alguém tem qualquer que que gostaria de começar? Além disso, esqueceu-se de dizer que, se você quer mais de um monte de gente falando em você e apenas dando-lhe uma rachadura curso nas últimas seis semanas, estamos executando um comentário sessão de 7:00 às 8:30 hoje à noite no Noroeste B103, o que também aconteceu última vez, onde ele vai ser eu, Hannah, Daven, com Gabe e Rob tipo de ajudar a partir da margem de apenas um tipo de atirar tudo as informações que você pode quer ter em sua folha de fraude, slash, sei lá, em geral. AUDIÊNCIA: É também on-line, certo? COLUNA 1: Também é online. Então, você também pode ficar de fora dessa tempo nojento, vá para o seu dormitório, e live-streaming-lo se você gostaria. Tenho certeza que um monte de pessoas-- Eu sei que eu faria estar fazendo que, se eu estivesse no seu lugar. OK. Então, por que não começamos com-- enquanto você guys-- esperançosamente, você está procurando por. Se não, eu só poderia começar a trabalhar através de coisas diferentes no Questionário One desde o ano passado, a menos que você tiver perguntas específicas. Vamos começar com este questionar aqui sobre pilhas. Assim que todo mundo se lembra o tipo do que uma pilha é? Como nós tendemos a-- alguém pode apenas dar- me uma descrição geral de uma pilha? Um tipo de estrutura de dados. OK. Portanto, é um dos estruturas de dados que nós esperam que você seja familiarizado com-- como stacks, matrizes, filas, assim por diante. Sim. AUDIÊNCIA: Like Primeira In, Last Out, alguma coisa. COLUNA 1: É First In, Last Out. Exatamente. Então, uma pilha é exatamente o que nós tendemos a pensar sobre quando pensamos de uma pilha de coisas. Assim, uma pilha de placas. A primeira placa você colocar para baixo vai ser na parte inferior, e ele vai ser o último aquele que você remova no final. Porque eles se comportam. E você tomar um fora do fundo, Normalmente, as coisas bater e quebrar. Então pilhas que você pode pensar Assim como uma pilha de pratos. Ou o exemplo que sempre gosto de usar é nas salas D, você tem as bandejas, todos eles são empilhados, e você tomar a partir do topo. Assim, a última das quais em é o primeiro a sair. OK. Assim, no caso aqui, nós ver que eu me pergunto have-- se eu realmente pode ampliar um pouco. Então nós temos esta struct aqui. Certo? Então você tem alguma estrutura que tem int alguns números de capacidade. Então, o que nós pensamos que representa? Esta é uma matriz com tamanho capacidade. Então, isso realmente representa nossa pilha em geral. Nossa pilha é realmente apenas uma matriz com algum número definido que é o seu máximo, ou seja, a sua capacidade. E então nós temos alguns tamanho int, que irá controlar o tamanho da nossa pilha durante todo o curso de quando estamos a usá-lo. OK? Neste caso aqui, nós dizemos que o nosso tamanho da pilha foi inicializado a 0. Portanto, temos uma pilha vazia no momento. E então nós queremos terminar a implementação de pop de modo a voltar a int no topo. E então se ele está vazio, ele retorna 1 negativo. OK? Então, eu quero que vocês só de pensar sobre o que podemos fazer lá. O que poderia ser um dos primeiros coisas que gostaríamos de verificar? Há uma grande coisa aqui. Sempre que says-- se há sempre algum Se declaração, como "Se pilha está vazia", ou "Se isso retorna nulo", ou "Se isso é o que quer" - desculpe. AUDIÊNCIA: Faça uma instrução If. COLUNA 1: Certo. Você poderia escrever uma instrução If. E isso é provavelmente um dos primeiras coisas que você deseja verificar. OK. Sempre que eles dão-lhe como uma espécie de caso de canto como este, que é tipicamente uma das primeiras coisas você está indo para verificar em seu código. Além disso, a algo reconhecer para o quiz é se você tem uma maneira ineficiente para fazer algo, anotá-la. Porque nós não estamos classificação -lo em design, estamos classificação lo sobre correção de quizzes. Assim, mesmo se você sabe que ele é um super- má maneira de fazer alguma coisa, mas ele funciona, anotá-la, OK? Crianças Literalmente, eu vi último ano-- se você olhar para um do ano passado, eles são como, fazer a pirâmide Mario. E eles literalmente apenas fez "print, hash de impressão, mistura, mistura, impressão, mistura, hash hash. " Mas é correto. Ele faz o que disse para ele, então você não pode tirar pontos. Se você é baixo para o fio, obviamente você, deseja obter uma solução mais elegante, e a solução mais elegante, provavelmente, ser menos código, o que significa que provavelmente têm uma maior chance de estar certo. Mas se você é como, você sabe o que, não, eu não tenho tempo, eu sei que esta é uma solução, não é o melhor, escrevê-lo. E você ainda pode escrever na lado, eu sei que isso é terrível, mas eu sei que funciona. Então, basta um heads-up. OK. Então, obviamente, a primeira coisa é esta declaração If. Então, o que nós pensamos que este caso declaração vai ser? E, na verdade, deixe-me aberto o meu grande editor Sublime. Eu estou indo para este código e, em seguida, mostrar para vocês quando ele é feito. Então int pop. OK. Então, se temos este int pop void-- tão obviamente, esta é uma função que leva em nada e retorna um inteiro, certo? Por isso, só vai falar sobre esta pilha que nós criamos. Então, basta traduzir esta última frase "se pilha está vazia, pop deve retornar negativo 1, "como podemos fazer isso? Então, se o quê? Como sabemos que a pilha está vazia? É só o tamanho é igual a 0. Stack.size é igual a 0. Além disso, eu sou o tipo de escrita cego aqui. Então, se eu fizer qualquer typos-- oh, Também esqueci de mencionar isso. Na semana passada, eu percebi totalmente fora o que o nosso problema foi com JavaScript. Não capitalizar I e D. Você só deve capitalizar I e obter elemento por Id. E isso era toda a erro. Então, se vocês voltar e realmente olhar através do meu código, Se você acabou de fazer tudo o que um d minúsculo, "esquecer elemento por Id" ele vai trabalhar. Então, como eu prometi, eu estava muito perto. Eu só capitalizados algo Eu não devia, que Tenho certeza de que vocês tiveram em sua última PSET. Portanto, se o nosso tamanho é igual a 0, o que devemos fazer? AUDIÊNCIA: retorno negativo 1. COLUNA 1: retorno negativo 1. Com estilo. Então agora o que vamos fazer? Queremos algo pop off. Agora, este é o caso onde temos alguma coisa. A nossa dimensão é maior do que 1 ou superior a 0, certo? Na verdade, temos alguma coisa lá. Então, o que nós queremos fazer é nós querem voltar aqui. Nós vamos dizer que queremos para voltar topo da pilha. OK? Então, como podemos fazer isso? Como é que vamos voltar ao topo da pilha? Lembre-se, nosso stack é apenas uma matriz, certo? Tem alguma capacidade que demos a ele. Como nós colocamos as coisas on-- ou realmente, vamos escrever "push" depois disso. Se as coisas estão em há-- talvez uma imagem vai ajudar. Hm, eu gosto de grande giz melhor. Então se-- e você pode apenas pensar nisso como nossa stack. Portanto, este é 0, 1, 2. Eu não sei por que minhas caixas estão ficando menores. Mas existem. OK. Portanto, esta é uma pilha com uma capacidade de 5. E vamos dizer que temos algo aqui e nós temos alguma coisa aqui. Então, neste momento, a nossa tamanho é igual ao que? 2. E se queremos pop algo fora dele, isso significa que queremos chegar livrar deste aqui. OK? Então como é que vamos voltar esse valor? AUDIÊNCIA: Tamanho menos 1. COLUNA 1: Certo. Então tamanho menos 1, ou você poderia fazer o tamanho de menos de menos. Mas não podemos apenas fazer o tamanho. É dentro de um struct, certo? Então stack.struct. ou stack.size. Esse é o nosso índice bem ali. OK? E, em seguida, se olharmos de volta ao nosso struct aqui, notamos que a na verdade, aceder a matriz, o que precisamos fazer stack.numbers para acessar, na verdade, essa matriz. Assim que retorna ao topo da pilha. Mas algo isso-- se vocês olhar na chave de resposta, isso é tudo o que eles dar-lhe. Então é isso. Mas eu poderia argumentar que eles são miss-- ooh, não o que eu queria. Eu poderia argumentar que eles são faltando alguma coisa, because-- sim. AUDIÊNCIA: Diminua o tamanho. COLUNA 1: Certo. Precisamos diminuir o tamanho da nossa empresa. Então, o que é complicado sobre este é quando você voltar alguma coisa, sua função de exit vai, certo? Então, o que podemos fazer é, na verdade, diminuir primeira nosso tamanho. E então podemos simplesmente não stack.size. Nós podemos apenas usar stack.size como nosso índice, não poderíamos? Porque se stack.size é 2, que diminuí-lo. E por isso é 1, o que é nossa indice real. Uma vez que se livrar dessa, nós, na verdade, só têm uma coisa em nossa matriz. Por isso, faz ambos. AUDIÊNCIA: [inaudível]? COLUNA 1: Bem, neste caso, Acabamos de voltar do elemento na parte superior que é a nossa tamanho que está no topo. Mas nós não fizemos nada para o tamanho após a remoção desse elemento. Isso não mudou nosso tamanho ainda. Isto faz realmente inerentemente mudar o nosso tamanho. Mas para torná-lo um pouco mais claro, você poderia fazer stack.size minus. Para mim, não faz isso, eu não sei, um pouco mais clara isso-- ah, que você está realmente mudando o tamanho e devolvê-lo. A outra forma era bom, porque você estava mudando e voltando ao mesmo tempo. Mas esta é apenas uma outra forma de escrever isso que eu queria mostrar para vocês. Isso faz sentido? Pilhas, eu acho, são muito mais fácil do que filas. [Risos] OK. Você tem dúvidas específicas cerca de 11 e 12, ou apenas-- AUDIÊNCIA: Eu acho que foi a pilha. COLUNA 1: O tamanho da pilha? AUDIÊNCIA: Yeah. COLUNA 1: Gotcha. OK. Sim, você poderia fazê-lo em um destes dois modos. OK. Portanto, agora temos o outro. Isso é muito estranho, como não ter isso na minha tela. Portanto, se olharmos aqui, agora queremos concluir a implementação do empurrão, que realmente coloca alguma coisa, vai e insere algo em nossa fila, ou em nosso pilha. OK? Então, se nós observamos, nós tenho um par de coisas. Temos nossas great-- se tudo mais, sempre que temos um destes, vocês deveriam, pelo menos, começar a metade um ponto, porque tudo que você tem a fazer é converter isso em C. E eles dão-lhe metade. Assim, "se a pilha está cheia ou ele é negativo, empurre deve retornar falso. " OK? Então, nós só queremos positivo inteiros para estar em nosso stack. Tudo certo? E isso vai ou retornar verdadeiro ou falso. Assim, devemos [inaudível] bool. OK. Então, traduzindo. AUDIÊNCIA: [inaudível]. COLUNA 1: Oh, obrigado. Sim. É por isso que eu tenho vocês. Int n. Perfeito. Porque nós estamos colocando algo para a pilha. Nós realmente precisa de algum número. OK. Então, basta tomar essa última linha que eles nos deram, o nosso tipo de casos de canto, o que você acha que temos aqui? Obviamente, nós vamos ter alguns If. OK. Por isso, disse: Se a nossa pilha é ou completa, se n for negativo. Então, provavelmente mais fácil de começar com, por isso, se n for menor que 0 ou- se lembrar do seu bom Operadores AND e OR lá. Como poderíamos verificar a ver se a nossa pilha está cheia? O que acontece? AUDIÊNCIA: Tamanho capacidade igual. COLUNA 1: Exatamente. Perfeito. OK. E o que queremos fazer lá? AUDIÊNCIA: return false. COLUNA 1: return false. Perfeito. Então, no meio do caminho, certo? No mínimo, vocês terá metade deste. Então, vamos pensar sobre isso. Portanto, esta é a pilha, começamos com. Estamos tentando colocar um elemento aqui. Nós temos um tamanho que é igual a 2 no momento. Nós temos uma capacidade que é igual a 5. E vamos dizer que temos alguns n é igual a 3. Então, precisamos de entrada 3 para este espaço. E nós precisamos de entrada-lo em índice 2. Certo? Então, como podemos fazer isso? Tentando assign-- nós deseja acessar nossa matriz. Então stack.numbers. Mas, o que faria indice queremos que isso seja? AUDIÊNCIA: [inaudível]. COLUNA 1: Yeah. Stack.size. E nós queremos que a igualdade n, certo? AUDIÊNCIA: [inaudível]. COLUNA 1: Eu estava realmente só de olhar para isso. Eu acho que isso é errado. AUDIÊNCIA: Você não quer que o espaço passado o tamanho atual? COLUNA 1: Bem, se olharmos aqui, nosso tamanho é neste momento 2. Nós queremos que ele vá para o índice 2, porque este é o topo da nossa stack. Então, eu diria que ele deve ser stack.size, e então você iria aumentar stack.size. Será que todo mundo concorda? Acho que concordo com isso. Vocês podem argumentar comigo, se você gostaria. Ou não discutir, mas podemos discutir isso. AUDIÊNCIA: [inaudível]. COLUNA 1: Hum-hum, é onde ele está abra porque a indexação de zero. Assim, enquanto na primeira parte, Eu pensei que eles estavam errados, e eles eram, na verdade, à direita, este parte, eu realmente acho que eles estavam errados. Eu diria que você deve definitivamente introduza aqui. Eu acho que todos nós concordamos que tem um tamanho de 2. Isso é exatamente onde nós queremos que o nosso novo número para ir. Então stack.numbers em stack.size deve ser igual a n. E então nós incrementar o stack.size. ++. E então o que é que quer fazer? Há uma última coisa que temos de fazer se inserido com sucesso esta? Retorna verdadeiro. E agora você está feito. Então, eu sinto como se fosse toda a menos minus stack.size e stack.size ++ que coisas desarrumada. Ugh. I keep-- eu tenho essa instintiva tendência de sempre bater Controle, S, porque eu nunca quer perder nenhum dos meus trabalhos. Mas eu não preciso fazer isso agora. OK. Assim que foi pilha. Com estilo. Existe alguma coisa? Será que vocês encontrar qualquer outras perguntas que você gostaria gostaria de passar por cima de questionários anteriores? Se não, podemos tipo de começar a falar através de questionário One do ano passado. Sim. AUDIÊNCIA: Pela primeira parte, eu realmente não entender como você excluiu o número. Não é ainda lá? COLUNA 1: O número ainda está lá. Mas o que acontece é que, porque você disse que o topo de sua pilha É aqui, quando você vai para acrescentar algo para a pilha, ele só vai substituí-lo. AUDIÊNCIA: Oh, OK. COLUNA 1: Yeah. Então, é como se tivesse esquecido e ele está lá tipo de coisa, mesmo que ele está lá. AUDIÊNCIA: [inaudível], ou alguma coisa? COLUNA 1: Não. Porque estamos em um array, você não tem se preocupar about-- você apenas substituí-lo quando você precisar dele. Tudo certo. Alguma outra pergunta? Se não, nós apenas estamos indo para começar a trabalhar através de. Sim. AUDIÊNCIA: Bem, esta é a 2013, mas apenas passando o material SQL. COLUNA 1: SQL? OK. Portanto, este é de 26 a 29. AUDIÊNCIA: Yeah. COLUNA 1: OK. Adorável. Vamos puxar aqueles up. Oh, olhe. Vocês tiveram desfrutar do Steve Ballmer falar, pelo caminho? Foi muito divertido, na minha opinião. Eu amo o que toda vez que eu trago acima CS50 de website durante a seção, é como, oh, assistir seção. E eu sou como, mm. AUDIÊNCIA: Podemos fazê-lo? COLUNA 1: Nós vamos fazer isso no final. Como é isso? Porque eu sei que vocês sempre quis. Então, nós vamos fazê-lo no final. Um perguntas. AUDIÊNCIA: [inaudível]. COLUNA 1: Vai ser uma seção meta. AUDIÊNCIA: É como 5 segundos. AUDIÊNCIA: Sério? AUDIÊNCIA: É como 20 segundos. [Interpondo VOICES] [Risos] COLUNA 1: Eu gosto que você já fez -lo, que é o que me faz mais feliz. OK. 26. OK. Na verdade, nós apenas estamos indo para espelhar isto agora, porque eu não posso. Isso é chato. OK. Agora eu posso ver tudo. Adorável. OK. Então, obviamente, isso deve trazer de volta grandes memórias de [? CSG?] Finance. Metade do que você sobre ter seu classificados agora. A outra metade eu vou começar a muito, muito em breve, prometo. Portanto, temos alguns tabela SQL isso é Contas aqui. Provavelmente semelhante ao tabelas de usuários de seus homens. E nós temos um número que era uma chave primária e representa um Número de conta de 12 dígitos. E o equilíbrio é a quantidade de dinheiro que eles têm. E o valor padrão é 100. E dão-lhes US $ 100 Qualquer vez que abrir uma conta. Eu desejo que meu banco fez isso. OK. Então, nós queremos completar o esquema especificando o número ao lado em equilíbrio o tipo SQL apropriado. Então, o que vocês acham que seria tipo de como a sua reação instintiva para estes dois tipos de? AUDIÊNCIA: Int. COLUNA 1: Um int. OK. E, em seguida, para um equilíbrio? Decimal. OK. Assim, o direito do decimal. Int está próximo. Kind of a grande coisa é essa sublinhado número de conta de 12 dígitos. Sempre que temos algo que é maior do que oito dígitos, eles querem que você use grande int, que eu acho que é-- AUDIÊNCIA: É que apenas SQL? COLUNA 1: É a única vez que eu ouvi do que é SQL-- como usar um grande int. É apenas para dar-lhe um pouco mais de precisão, certificando-se de que você não é tipo coisa transbordante. Em toda a honestidade, eu acho que isso é definitivamente um dos mais onde é como, oh, Destina-se a pessoas que têm um pouco mais de conhecimento de SQL. Nós nunca conversamos sobre grandes ints em seu PSET. Então, é tipo como eu tenho certeza se você colocar int, era metade de crédito. E como eu disse antes, não vão para ser algumas perguntas que são apenas significava para te enganar, por isso, que nem todo mundo tem 100. Porque, é claro, não algumas pessoas em CS50 que já vem fazendo isso há como de oito anos, e você fica tipo, o que você está fazendo? Mas sim. Decimal para o equilíbrio foi o óbvio. E então grande int para o número só porque de que, assim como, sublinhou 12 dígitos. Sempre que alguma coisa está em negrito ou é sublinhado, como, prestar atenção a ela. Nós não estamos fazendo isso apenas porque. OK. Assim, "supor que as impõe bancárias uma taxa mensal de US $ 20 sobre todas as contas. Com o que poderia consulta o banco deduzir $ 20 a partir de cada conta mesmo que isso resulte de alguns saldos negativos? " Então, vamos começar pelo mais simples. Temos quatro comandos principais para SQL, que são? Vocês lembrar os quatro grandes que eu te disse? UPDATE, DELETE, SELECT, e INSERT. Perfeito. Entendi. Então, o que nós pensamos poder ser mais úteis para um presente? Nós é-- UPDATE. Exatamente. Então atualização, porque nós estamos olhando em contas que já existem. Então lembre-se nosso general tipo de coisa é atualização. E então o que vem depois de atualização? Temos algumas tabela que estamos fazendo referência. Então, se eu puxar para cima Sublime novamente-- UPDATE. Portanto, este é um formato geral. Portanto, temos a tabela UPDATE. E então, qual é a próxima coisa que nós temos? Você pode fazer WHERE. E então nós temos alguns qualifier aqui. E então o que temos a seguir? Temos alguma coisa SET-- igual a alguma coisa. Blah blah é igual. Blah atualizado. Certo? Então, isso é como o general idéia para alguns atualização. OK? Então, vamos começar a preencher este com o que deveria ser. Então, o que a tabela que estamos falando? Contas. E, em seguida, no presente caso, o que é muito legal é que estamos falando específica usuários dentro de nossa conta, ou estamos falando de todos os usuários? Estamos falando de todos os usuários. Então, nesse caso, podemos apenas excluir esta ONDE qualifier. A ONDE É só quando você quiser para limitar o que você está mudando. Se você quer mudar o todo mesa, você pode simplesmente colocar isso. OK. Então, agora nós estamos no nosso SET parte. O que nós queremos mudar? AUDIÊNCIA: Balance. COLUNA 1: Equilíbrio. E vamos a-- como são vamos mudar o equilíbrio? Temos uma taxa de US $ 20, certo? Minus 20. E eles disseram que está tudo bem se temos saldos negativos. Portanto, neste caso, não é necessário de fazer qualquer outra verificação de erros. OK? Isso é, literalmente, tudo que você tem que fazer. Legal? OK. Então, vamos passar o próximo. "Com o que consulta SQL poderia o banco recuperar os números de conta de seus clientes mais ricos com equilibra superior a 1.000 dólares? " Se o seu banco e seus clientes mais ricos são apenas aqueles com mais de US $ 1.000, Eu me sinto como se estivesse fazendo algo errado. Como, como um banco sobreviver com isso? Como, esse interesse, não é o bastante. OK. Com este tipo de coisa, o que fazer Você acha que, de nossos quatro funções, que você acha que vai usar? SELECT. Perfeito. SELECT. OK. Então, nós estamos selecionando alguns identificador FROM tabela. E então condição WHERE. Assim como nós atravessamos Destes, eu só vou para dar a vocês uma reciclagem geral no formato geral de todos estes. Então, nós estamos selecionando algum tipo de [? coisa. ?] Neste caso, este vai ser tipicamente alguma coluna. Portanto, no nosso caso, temos número, equilíbrio. No caso dos seus rapazes, talvez era ID, nome, senha. Qualquer uma dessas colunas, isso é tipicamente o que estamos selecionando. Portanto, neste caso aqui, o que tipo de coluna, o identificador estamos puxando da nossa mesa? O que ela nos pedir? Ele nos pede para os nossos números, certo? Os números de conta. Então lembre-se, apenas número, neste caso. Se vocês já teve o erro, que caixa de laranja brilhante viria para cima. E foi assim, inesperada remar em, tipo, qualquer que seja. Isso é porque você chamado sua mesa de errado, certo? Então não se esqueça que você é chamando a coluna corretamente. Assim, a partir da tabela, nossa mesa é chamado de contas. Mais uma vez, certifique-se que você é referenciar a sua mesa corretamente. E então o que é a nossa condição aqui? O que estamos procurando? Queremos que os nossos povos ricos. Sim. Assim equilibrar maior do que 1.000. Lá vai você. Essa é a sua consulta. Não é tão ruim, certo? OK. Então, agora para o nosso último. Com isso, estamos espirros through. OK. Então agora "com o que podia consulta a estreita margem, isto é, eliminar "- Não que você ama como eles acabei de lhe dar DELETE-- "Todas as contas que tem um saldo de 0?" Acho que todos podemos concordar que estamos provavelmente vai estar usando DELETE. Eu sou bem-vindo a tomar qualquer discussão em torno disso. Mas eu acho que é bastante seguro dizer que nós poderíamos usar DELETE. Então, nós estamos indo para apagar algumas usuários da tabela, condição WHERE. Assim mesmo tipo de coisa como SELECT. Portanto, neste case-- oh, me desculpe. Eu deveria DELETE FROM. Porque vai apagar apagar a linha inteira. Então, nós não precisamos de falar sobre o que coisas específicas sobre um usuário que estamos exclusão. Se excluir um usuário, nós estamos exclusão tudo sobre eles. Portanto, neste caso, só precisamos de preencher o nosso WHERE e nossa condição. Portanto, a nossa tabela é apenas nossas contas mesa, como temos vindo a fazer. E então o que está aqui a nossa condição? AUDIÊNCIA: Balance. COLUNA 1: Equilíbrio é igual a 0. Correto. Tudo de bom. Sim. AUDIÊNCIA: [inaudível]. COLUNA 1: Então APAGAR inerentemente apaga tudo. Assim, enquanto que com SELECT, SELECIONAR leva em determinadas colunas que você quer que retorne. Se você queria tudo sobre um usuário voltou, você usa estrela. Estrela diz, voltar a me tudo, desde esse usuário. Ou se você colocar ONDE estrela, que significa apenas dar-me tudo. Mas APAGAR inerentemente tem isso. Então, se você diz, DELETE FROM contas onde o equilíbrio é igual a 0, ele vai passar. E em todos os lugares que o equilíbrio é igual a 0, isso faz que inerentemente. Ele vai apagar tudo. A estrela é mais for-- com SELECT e UPDATE, ele está falando mais sobre o indivíduo campos correspondentes a um utilizador. Então, quando você selecionar estrelar da tabela WHERE ID é igual a 1, que retorna para você tudo sobre o usuário com ID 1. Se você fosse fazer número seleto ou SELECT ID nome vírgula de usuários WHERE ID é igual a 1, que retorna apenas o seu número ou a sua ID e seu nome. OK? Então, nós usamos estrela, nesse caso, dá-nos tudo sobre um usuário. E APAGAR inerentemente faz isso. Ele não apenas apagar o ID, ou apenas o nome, ou o que quer. Sim, não. Ele só elimina completamente o usuário. Portanto, não precisa se preocupar sobre a estrela lá. Se você quisesse apagar tudo, você poderia fazer isso, e isso só vou largar tudo. Mas normalmente você, não quero fazer isso. Mas se você quiser excluir tudo, você poderia fazer isso. OK. Vocês já encontrou alguma dúvida? Sim. AUDIÊNCIA: Você poderia fazer 26? COLUNA 1: 26 que acabamos de fazer. AUDIÊNCIA: Oh, 25, desculpe. COLUNA 1: 25. OK. 25. Oh. Eles estão fazendo JavaScript. Oh, eu não posso acreditar. Vou mexer nos novamente, pessoal. OK. Temos isso. Nós estamos indo para fazer este trabalho. Ah, jQuery. Fun. OK. Então, nós estamos indo para completar a execução da página da web de tal forma que se visitarem, entrada de seu nome, e enviar o formulário, eles têm essa grande alerta janela que vai aparecer. Então, qualquer coisa com alertas, sabemos que nós vamos ter que usar JavaScript. Yay, JavaScript. E se eles não conseguirem introduzir um nomear antes de enviar o formulário, nenhum alerta deve aparecer. Então você pode usar jQuery, mas você não precisa. Então eu vou deixar vocês trabalham sobre isso apenas por alguns minutos. Pense nisso. E então vamos codificá-lo. Corte Eu vou tentar e pensar no melhor maneira de explicar esta resposta para você. Tudo certo. Nós vamos buscá-la criado. OK. Então, nós apenas estamos indo para caminhar por este, porque eu sei jQuery é um pouco confuso. JavaScript. É um pouco lá fora. Então, o que nós vamos fazer é [Inaudível] realmente resolvido este problema com jQuery. Então, se você se lembra, jQuery é apenas uma biblioteca isso é apenas construída em cima de JavaScript. Era para fazer o seu a vida um pouco mais fácil. Eu definitivamente, se você tiver tempo, olhar por cima um pouco do documentação para jQuery. Mas é muito semelhante ao JavaScript. Tem paradigmas semelhantes, onde você usar este operador ponto para chamar funções em objetos que você tem. Então o que temos aqui é para jQuery, você deve ter sempre esse tipo de invólucro, que é a Função de $ (document) .ready (function) em parênteses aqui. OK. Então, isso pode ser algo você quer na sua folha de fraude. Porque, pelo menos, você pode têm o wrapper para seu jQuery. E vai, pelo menos, chegar você parte maneiras lá. Assim, da mesma maneira que nós Conversamos muito sobre JavaScript, e gostaríamos de começar por olhar para o que estamos tentando editar ou o que estamos tentando mudar. E que normalmente seria o primeira coisa que iríamos colocar. Portanto, neste caso, se voltarmos a este aqui e olhamos para o nosso formulário aqui, Temos este insumos, à direita, este id de insumos. E sabemos que, com base na nossa questão, ou estão indo jogar um erro se este campo estiver vazio, ou vamos colocar isso em um alerta, certo? Então, provavelmente seguro dizer que nós somos vai ser lidar com entradas aqui. jQuery é muito semelhante em que se acho que volta para CSS, qualquer coisa com um ID olharmos com um hash. Qualquer coisa com classe nós olhou com um ponto, certo? Assim, da mesma forma aqui, o estamos falando é insumos. Vimos que os insumos é um ID dentro do nosso formulário. Então, nós estamos indo para se referir a ele como tal. Entradas. OK? Assim, quando em dúvida, mesmo Se você tem nada, se você está realmente inseguro sobre como abordar este, A, tem esse wrapper. Então comece lá com o wrapper para jQuery. B, certifique-se de que você sabe o que você está mudando. E em caso de dúvida, colocar isso em alguma coisa, e fazer ponto, o que quer que você pensa você deve fazer com ele. AUDIÊNCIA: Qual é o wrapper? COLUNA 1: O wrapper é essa primeira linha. Então, isso diz, espere até meu documento está pronto. Em seguida, começar a brincar com as coisas. OK? Então, sabemos que estamos mexendo com insumos. Então, nós estamos como, OK, insumos é a nossa forma. Esse é o nosso ID. Então é isso que nós estamos vai estar procurando. E nós queremos ver o que acontece quando este formulário é enviado, certo? Então, como poderíamos pensar, temos alguns .submit. Então .submit apenas diz, OK, essa forma que temos referenciado com entradas de hash, quando ele é submetido, executar alguma outra coisa. Então, nós vamos ter alguma função. Observe que temos funções anônimas aqui. Nós temos uma função anônima aqui. Sim. AUDIÊNCIA: Será que vai ser sempre .submit, ou é apenas porque, no HTML, fizemos o tipo botão Enviar? COLUNA 1: Deve ser .submit, porque é uma forma que estamos enviando. Porque este .submit não necessariamente correspondem ao que o botão é semelhante chamar. Mas o fato de que é um formar que estamos enviando. OK. Então aviso anônimo função aqui que says-- AUDIÊNCIA: eu realmente não compreender as funções anônimas. COLUNA 1: Então anônimo funções, eles são apenas as funções que não tem nome. Então, ao invés de ter alguma função principal calls-- que poderíamos dizer, Se documento pronto, então nós chamaríamos de insumos. E então, quando apresentadas, call-- Como, se assim e assim submetida, nós chamamos alguma outra função. Uma função anônima simplesmente não tem um nome, e ele vai executar dentro desses tipos de coisas. Portanto, neste caso, o que isso diz é, Quando o nosso documento está pronto, executar esta função. Esta função é composta de tudo dentro aqui. E, em seguida, a próxima camada é em, OK, quando as entradas é submetido, executar isso. É apenas uma forma de denotar o que deve ser executado quando. É, literalmente, apenas um função que não faz tem um nome, então eles tendem a ser encaixados um no outro, porque você não pode chamá-los pelo nome. OK? Literalmente, uma função anônima é apenas uma função sem um nome. É isso aí. Apenas uma maneira de encapsular coisas diferentes que queremos executado em momentos específicos. AUDIÊNCIA: [inaudível]. COLUNA 1: A abertura? Onde? AUDIÊNCIA: No parênteses após a função? COLUNA 1: Depois de funções. Qual? AUDIÊNCIA: Ambos. Se você colocar, como, evento, ou se você colocar um argumento lá, seria errado? COLUNA 1: Neste caso, eu suponho você poderia colocar um argumento lá. Mas, porque não precisamos de um argumento, não deve haver. Como, é o todo, como, você só deve tem coisas que são necessário tipo de coisa. Da mesma forma que, se tivéssemos qualquer função que tem void-- principal int como, com void main int, você poderia fazer int arg v, o que for. Mas se você não precisa desses, você não deveria tê-los lá dentro. Mesma coisa. Emma, ​​você tem uma pergunta? OK. Com estilo. OK. Então o que temos até agora é quando o nosso documento de pronto, executar isso. Agora nós estamos olhando para quando ele é submetido. Então, agora nós realmente temos sorte da carne de nossa coisa. Então, nós precisamos para obter o valor que o usuário enviou, seja um nome ou vazio. E então nós precisamos tanto de retorno este alerta ou lançar um erro. De qualquer jeito. Então, como vamos declarar uma variável em JavaScript? Var. Então, vamos dizer, nome var equals-- ou realmente, vamos fazer valor desde que eu acho que é nome. OK. Portanto, temos algum valor aqui que nós quer puxar a partir do nosso formulário insumos. Assim, da mesma maneira que Nós fizemos insumos, alguém pode me dizer o que nós pode ser chamada dentro aqui se quiséssemos chegar o nome do formulário? E se olharmos para o nosso formulário aqui, notamos que temos um ID de nome. AUDIÊNCIA: [inaudível]. COLUNA 1: Você não tem para pensar sobre isso como uma matriz. Você não precisa se preocupar com isso. Então, nós apenas ter algum nome. E então, porque o JavaScript e as coisas são estranhos, não podemos apenas fazer "nome". Na verdade, temos de chamar alguma função que nos dá, como, o valor do identificador que. OK? Então, isso é apenas .val. AUDIÊNCIA: [inaudível]. COLUNA 1: OK. Assim, com JavaScript, este tipo de coisa bem aqui só atravessa. E você pode pensar nisso as-- é como quase um getElementById, onde getElementById seria realmente retornar a coisa completa para você. O $ ("# nome") é como, OK, eu tenho isso, eu posso acessá-lo, mas se você realmente quer que ele para retornar o valor para você-- AUDIÊNCIA: É como um ponteiro? COLUNA 1: É como uma espécie de ponteiro. Você pode pensar nisso como como uma espécie de ponteiro. Como, ele diz, OK, I saber como chegar lá, mas para realmente obter o valor de -lo, você tem que pedir explicitamente. E, infelizmente, obviamente, nós não fazer muito com JavaScript e jQuery. Por isso, vai descer para o quanto você guys-- o que você já sabe, o que acontecer de você ter visto, e que você pode tipo de logicamente adivinhar. Como algumas dessas coisas, você provavelmente poderia começar no meio do caminho. Mas, para obtê-lo completamente direita, Eu acho que esse problema provavelmente tinha uma das notas mais baixas. AUDIÊNCIA: Como, por exemplo, para [inaudível] insumos, por que você não tem que colocar val lá? COLUNA 1: Para um presente? AUDIÊNCIA: Yeah. COLUNA 1: Yeah. Porque este é o tipo de gosto, como dissemos, alguns ponteiro, e este é me referenciando -lo e realmente nos recebendo o valor. AUDIÊNCIA: Considerando que [inaudível]? COLUNA 1: Para as entradas, inputs é apenas some-- é como nós somos apenas olhá-lo como um todo, e este .submit diz -nos o que precisamos saber. jQuery e JavaScript é estranho. Eu sei. Eu sei, pessoal. Eu sei. Há uma razão para eu não fazer fazer programação web. Só brincando. Eu não tive a exposição suficiente para isso. AUDIÊNCIA: [inaudível] CSS. [Risos] COLUNA 1: OK, isso é CSS. CSS é apenas, como, fazer as coisas bem, não é como vamos lidar com dados. Há uma diferença lá. OK. Então, agora, esperamos, este part-- também, para um problema como este, onde você não pode conhecer a sintaxe, você poderia ser como, OK, você pode ter algum valor var e ser como, assumir I tem o valor corretamente. E então você poderia provavelmente escrever esta parte seguinte. Esta próxima parte, provavelmente, parecem muito mais fácil, ou faria lógica sentido para vocês. Considerando o que temos escrito até agora, Eu sei que eu seria como, umm, sim, Eu não sei que no quiz. Você pode escrever totalmente psuedocode e, em seguida, quebrar em códigos reais quando você-- que é tipo de como a matemática. Se você já teve algum problema multi-parte onde você não sabe como ter passado o primeiro passo, mas tudo o resto confia em que a primeira etapa, você acabou de dizer, como, assumir x é igual a 4. E então você correr com ele, certo? Você pode fazer a mesma coisa com o código. Então, você poderia dizer, assumir Eu tenho o direito de valor. Em seguida, fazer isso na próxima parte aqui. Porque esta parte, na verdade, deve ser muito lógico. Então, nós precisamos verificar se o nosso valor está vazio. Ou se é algum nome, realmente dar um alerta. Então, o que podemos querer verificar? Nós queremos ter algum If. O que você acha que o nosso Se vai ser? Precisamos verificar para ver se o valor é-- se não é uma cadeia vazia. Perfeito. Exatamente. OK. Portanto, se esse for o caso, o que é que quer fazer? Queremos jogar um pouco de alerta, certo? Então é só alerta. E então o que queremos dentro. Então o que devemos ter dentro de nosso alerta? AUDIÊNCIA: "Olá." COLUNA 1: Comma. E então você caras lembre-se como concatenar? AUDIÊNCIA: Plus. COLUNA 1: Plus. Por isso, queremos ter mais. E então temos outra vantagem para o nosso ponto de exclamação. Com estilo. OK. Caso contrário, o que se pode querer fazer? Nós não queremos fazer nada, certo? Então, nós apenas return false. Não é o que eu quero fazer. OK. E, em seguida, estes, de course-- o que é importante é lembrar-se de fechar suas funções anônimas. Então, se você observar, temos alguns função aqui que termina aqui. Então, precisamos fechar esta um primeiro e adicionar um ponto e vírgula. E então este aqui tem que fazer com esta função anônima, por isso, feche-o lá. Essa reação instintiva de poupança. Sim. AUDIÊNCIA: Existe uma razão isso-- apenas em todos os exemplos em JavaScript que eu já vi, temos as primeiras chaves na mesma linha que a função? COLUNA 1: Isso é estilística. Sim. E, na verdade, se você tomar 61, nós fazer todas as nossas chaves dessa forma. Hein? AUDIÊNCIA: Se fizéssemos isso em o PSET, é tão ruim para o estilo? COLUNA 1: Não. Temos dito explicitamente vocês para fazer isso. Mas, na verdade, este é o tipo da convenção dominando em um monte de classes C e JavaScript e jQuery. Então, obviamente, eu estou sure-- e, na verdade, se eu foram fazer esse problema completamente cego sem ter olhado para ele, há, provavelmente, muito poucos maneiras eu teria conseguido isso. Eu poderia ter sido como, OK, talvez eu precisa pegar algo que é uma entrada. E eu acho que ter o conhecimento que, como, OK, se eu quiser obter algo a partir de um formulário que tem um ID, Refiro-me a ele, desta forma, Eu provavelmente conseguir isso. Eu poderia conseguir isso. Mas, realmente, a única coisa que eu acho que Eu realmente é este aqui. Então, é tipo de importante Sabe, como acontece com qualquer teste difícil, você meio que escolher suas batalhas, certo? Se você sabe que você não vai conseguir que a primeira parte para jQuery, como eu disse, suponha que você tenha este valor e faça o que puder com ele. E se você tiver tempo, vá para trás e tentar preencher as peças. Mas não deixe que uma questão como isso realmente afundá-lo. Porque o que? Esta foi uma pergunta sobre jQuery para fora de todo o exame. Por isso, sim, seria ótimo se você conseguiu. AUDIÊNCIA: [inaudível] você são convidados a utilizar jQuery. COLUNA 1: Você está bem-vindo ao usar jQuery. AUDIÊNCIA: OK. [Inaudível]. COLUNA 1: Como é que você não usá-lo? Eu teria que olhar todo o meu JavaScript. Na verdade, é muito mais fácil, Eu acho que, para usar jQuery, jQuery porque, na verdade, reduz o quantidade de JavaScript que você escreve, provavelmente, por, tipo, metade. Assim, o nosso código provavelmente seria o dobro do tempo sem isso. Então, se você recognize-- o maior coisa para tirar este problema são os padrões. Se você está acessando algo de uma forma, você vai usar aspas, mistura, o que você está tentando acessar. Se ele está sendo submetido, você quer usar algo como um .submit. Você provavelmente vai usar uma função anônima lá. Se você realmente precisa do valor da algo, você está indo fazer citações, haxixe, o que quer que o campo é, .val. E os padrões de reconhecimento como que vão a ser muito mais útil do que realmente saber o âmago da questão. Sim. AUDIÊNCIA: Então, se o usuário envia seu nome e funciona através dessa declaração, vontade -lo descer e retornar false depois disto? COLUNA 1: Não, porque o alerta, Você pode pensar nisso como uma troca. Sim. Então, ele vai sair. Sim. AUDIÊNCIA: Poderia [? colocar?] os parênteses de apresentar, parênteses, algo assim? COLUNA 1: eu fiz, eu acredito. Este seu fechada aqui. E então este é fechada para baixo aqui. AUDIÊNCIA: Oh, não. Tudo certo. COLUNA 1: Obviamente, pouco, pequenas coisas sintáticas assim, provavelmente vamos apenas o círculo-lo e ser como, não se esqueça de seus parênteses. Mas sim. OK. Será que temos um outro que gostaria de fazer? Será que vocês se a uma árvore binária? Não queremos passar por cima que um? Eu me sinto como árvores binárias e deverão ser DOM pontos que vocês se muito facilmente. Eu não quero que você perder pontos sobre isso. OK. Vamos fazer isso DOM aqui. Eu gostaria de ter minha superfície, então eu poderia simplesmente desenhar na tela. Isso é o que eu costumava fazer no ano passado. OK. Então, como eu mencionei, nós falamos sobre DOM, Document Object Model. Eles provavelmente estão indo dar-lhe alguns pouco de trecho como este e pedir-lhe para criar uma árvore para ele. E isso só Tudo tem a ver com que funciona através das tags. Então, vamos tentar fazer isso. Além disso, como de costume, se vocês fazer esses testes, como eu altamente recomendamos que você faça como prática, qualquer um deles que você gosta, Eu realmente não entendo o que é acontecendo aqui, apenas, é claro, envie-me um e-mail com uma pergunta, e vou explicar o melhor que posso. OK. Temos algum documento, e nós temos HTML. OK. Então nós estamos apenas analisando as tags aqui, certo? Então, o que nós vemos comes-- quais são as duas subposições em HTML? Especialmente porque eles estão recuados corretamente? Cabeça e corpo. Ah. Cabeça e corpo. Adorável. Então vamos começar aqui com a cabeça. O que há de cabeça embaixo? O que é o nosso próximo tag? Título. E, em seguida, dentro de título, quiz. OK. Então, literalmente, é apenas andando pelas marcas, OK? Então, se tivermos corpo, como nós atravessamos, corpo tem três coisas dentro dele, certo? Tem três divs. Cada div obtém sua própria caixinha. E o que é na primeira div? [Inaudível] E, em seguida, a próxima é do meio, que eu estou indo só para abreviar. E, em seguida, o último é inferior. Então, realmente, é só caminhar através. E porque nós vamos dar você HTML que está devidamente recuado, você pode literalmente apenas percorrer e ser como, OK, aqui está o HTML. Portanto, este é o mais externo canto, ou mais à esquerda, assim que tem que ser a sua própria coisa. Estes estão no mesmo recuo. Então, nós sabemos que a cabeça precisa ser ao mesmo nível que o corpo, mas por baixo HTML. É o que temos aqui. Cabeça e corpo são irmãos, mas eles estão sob HTML. E, então, basta ir em cada uma delas. Então cabeça tem título, que tem questionário, como vemos aqui. E, em seguida, no presente caso, temos corpo, que tem essas três linhas. Então, esses são todos irmãos todos sob corpo. OK? Portanto, esperamos que quando você ver algo como isso, você fica tipo, sim, acabei de receber a desenhar uma árvore. Vai ser ótimo. OK. Então, queria ter certeza vocês sabiam disso. Então por que não vamos para 32 com a nossa árvore binária? Porque uma vez que você entende um binário Pesquisa árvore, ele realmente não é tão ruim. Então Everett, posso apaga-lá- I Quer dizer, todos estes são on-line, também. Então, se você tiver quaisquer perguntas. Perdeu um pouco de espaço lá, mas é OK. Assim, busca binária árvore é apenas uma maneira de organizar os dados não em uma matriz, onde a raiz é sempre maior que o filho esquerdo e a raiz é sempre menor do que a criança certa. OK. Então nós temos esta grande árvore de pesquisa aqui. Temos esses números, 34, 59, 20, 106, 36 e 52. E nós precisamos organizar -los de tal maneira de tal modo que a raiz é maior do que tudo no lado esquerdo e é inferior a tudo no lado direito. E normalmente, o que você quero fazer é tentar encontrar algo sobre no meio. Com árvores de busca binária, você pode ter para brincar um pouco com ele. Mas, neste caso, vamos apenas assumir que sabemos desta primeira. Assim, 36 é o nosso primeiro aqui. Normalmente, eu tentaria e escolher algo sobre no meio que vai provavelmente produzirá os melhores resultados. Portanto, agora sabemos que tudo na este lado deve ser inferior a 36. Mas também, o que você pode ver é que temos dois pontos mais aqui. Então, se nós sabemos que precisamos de dois números que são menos do que a raiz, em seguida, você poderia simplesmente pedir estes e escolher o terceiro número. OK. Então, por que não começamos com este lado? Então, se nós sabemos que tudo na deste lado tem de ser inferior a 36-- mas se olharmos para este, nós sabemos que esse número tem de ser inferior a esse número, certo? Como esse número aqui está no lado direito. E lembre-se, assim como no nosso maior árvore, tudo à direita precisa ser maior do que a raiz. Desta forma, sabemos que tudo o que está neste necessidades ser maior do que tudo o que está aqui. OK? Portanto, temos duas escolhas para estas duas bolhas. Temos 32 e 34-- ou arrependido. 20 e 34. Então, como você acha que podemos colocar isso em? Se este tem de ser maior do que este, isso significa que nós queremos tenho 20 aqui e 34 aqui. OK. Assim, da mesma forma, nós olhamos neste tipo de sub árvore. E nós dizemos: OK, nós não temos 36. Temos 106, 52 e 59. Certo? Neste caso aqui, nós sei que este precisa para ter uma coisa que é maior do que isso e uma coisa que é menos do que isso. Certo? Então, se nós colocar isso em ordem, é só sobre encontrar esse valor médio novamente. Assim, o nosso valor médio é de 59. Então dizemos: OK, o que é menos do que 59? Bem, isso é 52. E o que é maior do que 59? Bem, isso é 106. OK? Então é só um pouco como um quebra-cabeça. É tipicamente ajuda, especialmente em árvores de pequeno porte como este, se você só tem que pedir, se você saber quantos estão à esquerda e quantos estão na direito, que pode apenas permitem que você escolha o que deve estar em sua raiz. E então você pode tipo de trabalhar a partir daí. Hum-hum. 33? Claro. OK. Por isso, queremos criar um nó ou uma árvore de busca binária. E vamos olhar para o que pode estar nele. E eu acho que isso vai realmente ser nosso último problema. Ah. OK. OK. Isto é como o que pudermos pensar em como um nó, certo? Nós temos algum valor, e nós sei que ele quer não deixaram e crianças certas. Pesquisa binária tree-- que meios que tem, no máximo, duas crianças. OK? Vamos pensar sobre a maneira que nós definida uma lista ligada, certo? Tivemos alguns int que representado o valor. Tivemos alguns ponteiro que representou o que ele estava indo para a próxima. Árvore de busca binária é muito similar. Ainda temos algum valor, n, que damos a ela, certo? E então eu tirei estas muito explicitamente com setas, porque eles são efetivamente ponteiros. OK? Então n é tipicamente o que? É algum valor. O que nós normalmente designá-lo como? Um int. Portanto, temos alguns int n, ou o valor int, ou o que você gostaria de chamá-lo. E depois temos a esquerda criança ea criança direita. Certo? E nós sabemos que o que eles estão ponto-- o que eles estão apontando para? Eles estão apontando para outros nós, certo? Então como é que nós declaramos um ponteiro nó? AUDIÊNCIA: [inaudível]. COLUNA 1: Hum-hum. E nós vamos ter dois deles, certo? E então nós podemos literalmente que deixou para o filho esquerdo e à direita para a criança direita. Actually-- desculpe. Porque nós precisamos struct. Então struct é porque nós não temos terminou declarando um nó ainda. Assim nó está dentro aqui. É como uma espécie de definição recursiva, certo? Então, quando estamos dentro esta definição, nós não terminou declarando nó como a estrutura, por isso temos de fazer struct nó só para dizer, sim, estamos de facto a referir de volta para nós mesmos digite coisa. Que, como uma vez que é criado, ele vai ficar bem. Então, quão grande é que vocês pensam que é isso? Qual é o tamanho dessa estrutura? 12. Por quê? Precisamente. E, de fato, um dos primeiras perguntas de um questionário One é sobre tamanhos, que é por isso que eu perguntei. Tudo certo. Nós vamos até o fim, porque o DCE vai gritar comigo se não o fizermos. Mas, se vocês tem alguma dúvida, é claro, enviar e-mail me, deixe-me saber. Vocês estão indo para o rock-lo. Estou super animado. Vocês será feito como de quarta-feira, e depois você vai começar a trabalhar em seu último projetos, e isso vai ser incrível. Eu estarei aqui ao lado semana 4:00 - 04:30 se vocês querem vir pegar seus questionários. Se você quiser me encontrar outra vez ou apenas coordenar um horário diferente, sinta-se livre para me informar. Caso contrário, esta é a nossa última seção. Então, foi ótimo ver vocês. Por favor, tome mais doces. E boa sorte em seu quiz.