JASON Hirschhorn: Bem-vindo. Assim, apenas alguns anúncios antes de começarmos. Então seções, todos devem já seccionado. Seções funcionam normalmente de domingo a terça-feira. Então vocês devem começar suas atribuições. E então eu acho que na próxima semana você estará com o seu real TFs. Então, se você tiver alguma dúvida, ou problema, ou você se esqueceu de seção. Algumas pessoas fazem isso. Só vamos saber. Atire nos um email para cabeças. Então o horário de expediente. Começamos o horário de expediente na semana passada. Horário de atendimento a cada semana. Segunda-feira é em Leverett 8:00-11:00. Terças-feiras no quad, assim Cabot 8:00-11:00. Quarta-feira, Mather 8:30-11:30. E quinta-feira Annenberg 8:00-11:00. Então, zero, um monte de gente Não é necessário o horário de expediente ajuda para zero, o que é completamente bem. Se o fizer, isso é absolutamente bem assim. Mas no futuro, o problema conjuntos, eles ficam muito mais difíceis. Então isso vai ser seu amigo. Definitivamente ir para o horário de expediente. Pensando em ir para o horário de expediente. Quando você chegar ao problema definir quatro, cinco, seis, sete, você precisa ir para o horário de expediente. É aí que muita da ajuda eo trabalho é feito. Eu acho que no ano passado, apenas para exemplo, na quinta-feira noite-- então eu acho que o problema conjuntos foram devido na sexta-feira. Então, na noite de quinta, teríamos 200, 250 alunos em horário de expediente. Então, definitivamente fazer uso delas. Estes são os seus melhores amigos. Como este é o lugar onde se você estiver preso em um conjunto de problemas, este é o lugar onde você provavelmente vai obter ajuda. Assim, o horário de expediente. OK, então esses são os anúncios. Anúncios são feitas, então vamos começar. OK, o aparelho. Será que todo mundo baixar o aparelho ainda? Não. Como em tão. Eu meio que baixei o aparelho. Direito de modo que o aparelho é novo este ano, por isso estamos provavelmente vai ter alguns bugs nele. Então faça o download o mais cedo possível. Então conjunto de problemas um vai dizer exatamente como baixá-lo. Introdução instalar aqui. Ele vai dizer-lhe como para baixar o aparelho. Então, definitivamente fazer o download do aparelho, mais cedo ou mais tarde. As instruções estão na especificação conjunto P. Então, se você esperar até quarta-feira noite, e então você tem problemas, e você nos enviar um e-mail para meia-noite de quarta-feira que você não pode fazer o download o aparelho, que é não um motivo legítimo para uma extensão. Você precisa fazê-lo agora, e você terá problemas. Tentei baixá-lo ontem à noite. Corri para um pouco de dificuldade. Se você executar em problemas instalar, definitivamente bater repetição, porque eu só bater repetir uma casal times, e, eventualmente, ele trabalhou, que não faz qualquer sentido, mas ele faz. Então, definitivamente tentar novamente, mas se você deparamos com uma parede de tijolos, atirar-nos um e-mail em cabeças, e nós vamos ser mais do que feliz em ajudar vocês. O que está acontecendo? ALUNO: Só uma pergunta rápida. Se o check-estilo, há uma parte que diz que não incluem esta. JASON Hirschhorn: Ainda não. ALUNO: Diz executá-lo. Como você executar que a certifique-se que está em seu sistema? JASON Hirschhorn: Você é indo para executar um comando bash. Eu vou passar por cima disso mais tarde. Legal. Assim, o aparelho pode ser um pouco intimidante, porque você está acostumado a espécie de funcionando em interface gráfica do usuário. Então era um risco gráfica do usuário interface, então o que eu quero dizer com isso? O que quero dizer é que quando você está programando, basicamente você está usando blocos de código. Você pode ver o código e coisas assim. O aparelho, que você vai estar fazendo coisas em um ambiente de linha de comando. E assim para o resto da suas vidas de programação, você vai estar fazendo coisas no ambiente de linha de comando. Por isso é bom para saltar no início e obter alguma experiência. Então, vamos fazê-lo. Então, isso é Rob. OK, então vamos pular em linha de comando material. Portanto, este é o aparelho. Alguém pode me dizer por que usamos um aparelho? Qual é o aparelho? Alguém sabe? O que está acontecendo? ALUNO: É apenas uma máquina virtual que você execute sua máquina para que você pode obter sobre o OS desentendimentos entre Mac e PC. JASON Hirschhorn: Perfeito. ALUNO: É um modelo universal. JASON Hirschhorn: Sim, é como um modelo universal. Perfeito. Então, sim, é uma máquina virtual. Então, é basicamente um sistema operacional. Este é um sistema operativo. Isto é equivalente a sua Mac, PC ou você, ou o seu Linux. Este é exatamente o mesmo. E assim que você pode fazer coisas semelhantes. Se você quisesse, você poderia ir on-line, por exemplo. Você não pode realmente vê-lo, mas aqui, o Google Chrome. Você pode ir online se você quiser. Este é um sistema operativo. E a razão pela qual fazemos isso é porque é muito mais fácil quando estamos distribuindo instruções e tudo. Se é apenas um ambiente uniforme, é muito mais fácil para nós, e é muito mais fácil para você. Você não está indo para executar em ele correr em quaisquer idiossincrasias quando você está programando. Sabemos exatamente o que você vai se deparar. Assim, o aparelho está aqui. Então, quando você está começando programação, você está indo para ir para baixo para o canto esquerdo. Há uma pequena caixa. Você vai clicar nele. Esta é a sua janela de terminal. Portanto, este é o lugar onde você está indo a ser muito do semestre. Então deixe-me ampliar um pouco. OK, para se locomover de um terminal janela é um pouco diferente. Em primeiro lugar, não há ícones. Eu não posso clicar em nada. Não há nada para clicar. Então você tem que descobrir uma maneira de descobrir onde você está, o que está aqui, e como se deslocar. Assim, os dois comandos mais úteis, provavelmente, são ls-- então o que você acha ls faz? ALUNO: List. JASON Hirschhorn: Listas, sim. Ele só lista algoritmos dentro do diretório. E, em seguida, cd. Então, digamos que eu queria cd CS50, o que isso faz? Sim? ESTUDANTE: Altera o seu diretório. JASON Hirschhorn: Perfeito, sim. Ele só muda o diretório. Então, vamos voltar. Então, como faço para voltar? Então, digamos que eu queria ir volta para o diretório anterior. Sim, com certeza. ESTUDANTE: Eu acho que você escreve cd só que sem nada. JASON Hirschhorn: Você pode fazer isso. Tão perfeito. Então, se eu escrever cd, este é realmente vai me pop backup para o diretório home. Então você vê esta til, que vai me pop caminho de volta até onde o til é. Então, ele vai me aparecer voltar para o diretório home. Mas digamos que eu fiz algo parecido com isso. Digamos cd CS50. ls novamente. Eu tenho outras coisas. cd seção super. arquivo cd, então eu vou fundo. E então vamos dizer que eu quero apenas pop de volta até o topo. cd. Vamos dizer que eu não quero fazer isso. Vamos dizer que eu só quero aparecer de volta até o diretório que foi bem acima de mim. Como posso fazer isso? Então, digamos que cd CS50. cd supersection. Então, vamos eu estou aqui. Vamos dizer que eu só quero a aparecer uma vez. Como posso fazer isso? Sim, o que há? ALUNO: Você digita cd supersection novamente. JASON Hirschhorn: Você poderia fazer isso. Bem, eu estou em supersection. ALUNO: Oh, o que antes. JASON Hirschhorn: Sim, assim que você poderia fazer isso. Você faz cd ~ CS50. Então, se você olhar aqui, este é o seu caminho aqui. Esse é o seu caminho. Então, você poderia sério basta ir cd ~ / CS50. Boom, você está lá. O que é uma maneira mais fácil de fazê-lo embora? Isso foi perfeitamente correto, mas o que é uma maneira um pouco mais fácil para fazê-lo, porque um monte de vezes que você vai estar pulando em diretórios, saltar de diretórios. Então, vamos voltar. cd supersection. Então, digamos que eu quero voltar rapidinho. Você pode fazer algo como cd dot dot. Isso vai aparecer você faça backup rápido real. Assim cd supersection. arquivos de CD. Vamos dizer que eu estou aqui. By the way, claro é bom, porque a minha janela estava ficando um pouco confuso. Então, ls, então eu não quero mais ficar aqui. cd dot dot. Leve-me uma. Cd dot dot leva-me um. Cd dot dot e voltar para a minha casa. OK, então cd, ls. Provavelmente a mais importante coisas, porque você é vai precisar saber onde você está. ls vai dizer-lhe onde você está, e cd É assim que você vai pular. Você também pode fazer algumas outras coisas legais. Assim, por exemplo ls. ls é apenas vai mostrar-lhe os diretórios em seu arquivo. Ele também vai mostrar os arquivos. Mas ele só vai para mostrar o que está lá. Se você queria algo um pouco mais fresco, e você vai realmente fazer isso em um par de semanas. ls traço l. Que imprime um pouco mais de informação. Alguém pode adivinhar na mão esquerda lado a drwx, rwx e coisas assim. Alguém tem uma idéia que isso pode significar? ALUNO: Permissões. JASON Hirschhorn: Sim, perfeito. Permissões. Então, você vai tem que lidar com isso quando você faz a programação web mais tarde. Se você já passou on-line, e você clicou em uma imagem ou clicou em um campo, e ele disse permission-- como permissão não permitidos, ou como permissão não concedida ou qualquer outra coisa, Isso porque quando estão programando, eles não definir essas permissões para deixá-lo fazer isso. Então, de onde que vem. OK, então isso é legal. Então nós saltamos ao redor. Podemos olhar para o material em nosso diretório. Mas como podemos fazer coisas? Tenho diretórios aqui. Isso é incrível. Como posso fazer um novo diretório? Digamos que eu queira fazer uma nova diretório para agora. Você pode fazer algo como isso, mkdir. Então faça diretório. Então o que você quer chamar este diretório? ESTUDANTE: Awesome. JASON Hirschhorn: Awesome. Eu amo isso. Faça diretório incrível. E lá vai você. Por isso, precisamos de uma lista. Você tem um novo diretório. E você pode dizer que é um diretório em seu aparelho porque ele tem essa cor, certo? Então, é como um azulado roxo ou o que seja. Então, vamos mudar. Vamos mudar de diretório. Vamos entrar em directory-- sim, qual é? Estudante: Existe uma lista de tudo isso [inaudível] online? JASON Hirschhorn: Sim, eu vou colocar los on-- teremos slides. Vai ser um PDF. Vamos colocá-los para todos. Sim, desculpe, é um monte de comandos. se você quiser me a abrandar, ou voltar, ou qualquer coisa assim, definitivamente deixe-me saber. É muita coisa para absorver de imediato. O que está acontecendo? ALUNO: Posso fazer uma questão potencialmente estúpido? JASON Hirschhorn: Não há há perguntas estúpidas. ALUNO: Há. Um diretório é para apenas olhando a informação onde armazená-lo. JASON Hirschhorn: Yeah. ALUNO: É que, essencialmente, o que você está fazendo? Então, quando fazemos alguma coisa, Olá mundo ou o que quer, ele é armazenado no diretório, não é? JASON Hirschhorn: Yeah. ESTUDANTE: Isso é verdade para tudo. Tudo é armazenado no diretório. JASON Hirschhorn: Yeah. Sempre que você fizer isso, qualquer diretório que você está, ele vai basicamente armazená-lo no diretório. Estudante: E quando nós estamos chamando-o, estamos chamando-o do diretório. JASON Hirschhorn: Sim, por isso o diretório é onde ele es. Então, é tipo como se você tem uma nova pasta em seu desktop e então você escreve um texto arquivo, coloque-o na pasta, esse arquivo é na pasta. Será que isso faz sentido? Estudante: Sim. JASON Hirschhorn: Sim, o que há? ALUNO: Posso apenas pedir para você torná-lo um pouco maior? JASON Hirschhorn: Ah, sim. Desculpe. O projetor é tão ruim. Tivemos tantos problemas com isso mais cedo. Está melhor? Isso é muito grande? Estudante: Não, não, não é. JASON Hirschhorn: Não, não é. É muito pequeno? O que está acontecendo? ALUNO: Eu sinto muito, o que é o comando para limpar? JASON Hirschhorn: Oh, claro. Se você deseja limpar, apenas digite clara. claro entrar. No último aparelho, o que basicamente faz, ele não limpar a sua informação, que apenas uma espécie de mudar tudo uma tela para baixo. Então, se você digitou clear-- para exemplo, digamos que eu estou rolando para cima. Eu posso ir para cima. Isso é tudo o que eu fiz. Mas se eu digitar claro, e depois Eu vá para cima, aqui está o meu material. Portanto, não é de apagá-los, é só basicamente, dando-lhe um novo quadro. ESTUDANTE: Como você [Inaudível] um diretório? JASON Hirschhorn: Nós vamos chegar lá. [Risos] Retardar seu rolo. Tudo certo. OK, então por isso estamos em um diretório agora. Então David, acho que em palestra ele fez algumas coisas interessantes. Então vamos escrever um programa. Assim, você pode fazer isso uma número de maneiras diferentes. Você pode usar qualquer tipo de editor de texto. Você pode usar o Nano, você pode usar Vim, Emacs. Aqueles são um pouco mais complicadas. Ou você pode usar algo em aqui que se chama gedit. Desculpe. gedit não é feliz. Então gedit é basicamente apenas um editor de texto. Assim como eu editar texto palavra processador ou algo parecido. Então, ele tem um bom Interface apenas como este. Então você faz algo parecido. Então, na verdade, deixe-me dar-lhe nome, porque eu nunca fiz isso. Então o que você quer nome do nosso primeiro programa? Ela só vai dizer oi. Estudante: [inaudível]. JASON Hirschhorn: Você não tem imaginação. OK, gedit. Oi. Eu vou fazer .txt. OK, então aqui está. Então vamos escrever um programa. Então eu acho que você viu isso na palestra. Você precisa de uma função principal. Boop. Portanto, esta é apenas uma função principal. Bigger? Sim, desculpe. OK, então você precisa de uma função principal. Eu acho que eu estou pulando a arma um pouco, mas nunca é ruim para chegar usado para este tipo de coisas. Assim, uma função principal, todo programa em C que você é vai escrever para o resto desta curso terá uma função principal. Alguém sabe por quê? O que está acontecendo? ALUNO: Iniciar. JASON Hirschhorn: Exatamente, por isso diz o seu programa por onde começar. Então, se você não tem uma função principal, e você compilar este e material, ele não vai saber eram para começar. Principal é sempre onde começa. Então você tem uma função principal, e em seguida, Alguém se lembra como imprimir? ALUNO: printf. JASON Hirschhorn: Sim, printf. printf oi. OK, agora eu tenho proposto vocês up a falhar, mas isso vai compilar. Estudante: Não. JASON Hirschhorn: Por quê? Há várias razões. Claro. Estudante: Não tem o padrão [inaudível]. JASON Hirschhorn: Perfeito. Então, o que se chama isso aqui? Estudante: [inaudível] JASON Hirschhorn: É um arquivo de cabeçalho, certo? É um arquivo de cabeçalho. E você está absolutamente certo. Ambos estão certos. Então, para incluir que, eu só faço libra incluir .h saída entrada padrão. Estou pronto para ir agora? Será que esta compilação? Estudante: Não. JASON Hirschhorn: Por que não? ALUNO: É um [inaudível] texto. JASON Hirschhorn: Sim, incrível. Então, eu só fiz isso. Então eu salvei, mas gedit hi.txt. Então agora se eu fizer ls, aqui está. Bem aqui. Oh, ele não está em incrível. Devo ter saído. Oh, perfeito. Como é que vamos colocar isso em impressionante? Então, eu não quero isso aqui em minha casa diretório com tudo o resto. Quero colocá-lo na pasta. Como posso fazer isso? Não é muito difícil. Mover. Então, nós já aprendemos ls, lista. cd para mudar de diretório. cd dot dot para bater fora de diretórios. E agora nós estamos indo começar a se mover arquivos. Assim, para mover apenas mover hi.txt, e Vou colocá-lo em incrível. Basta ter cuidado. Sempre que você está escrevendo no linha de comando, tudo importa. Assim, questões maiúsculas. Se eu tivesse feito uma minúsculas, é não vai saber o que está acontecendo. Então, tudo questões ser muito específico. Então corra que o LS. Ele não está mais aqui. Vamos mudar o diretório em incrível. ls. Boom, ele está lá. E por que alguém mencionou isso não seria compilar. Por que não vai compilar novamente? Sim? Estudante: Não é em um .c. JASON Hirschhorn: Perfeito. Não é um .c, está tão como eu sou vai mudar o nome para um .c? O que é uma maneira fácil de fazê-lo? Vamos usar o comando que acabamos de fazer. Então, nós apenas estamos indo para mover hi.txt para hi.c. ls hi.c. E então, apenas por diversão, vamos apenas saltar para esta rapidinho. hi.c. Você vai perceber que é bom e colorido. Então, essas são apenas uma espécie de útil cores quando você está programando. Assim, o int eo vazio, esses são os tipos de dados. Nós vamos passar por cima de quem em um segundo. Oi é uma string. Mas as cores úteis. Então, se você alguma vez acidentalmente escolha a extensão errada, você deve ter essas cores. O que está acontecendo? ESTUDANTE: Como posso copiar para uma arquivo [inaudível] em outro arquivo? JASON Hirschhorn: Ah, eu sou vou lhe mostrar isso também. Assim cópia remover estão no banco dos réus. Vamos fazer isso. Certifique-se de que funciona. Faça oi. Obras, executá-lo. Então ./hi incrível. Esse é o seu primeiro programa. Deixe-me torná-lo maior. Então realmente boa-- Sim, o que há? ALUNO: Por que seria que quando eu tomar gedit, ele não me dá outra linha para gedit hi.txt? Ela só coloca o cursor para uma linha. Estudante: Sim. O [inaudível]. JASON Hirschhorn: Aguarde, assim dizer isso de novo. ALUNO: Quando eu digito gedit, o primeira vez, o primeiro linha-- JASON Hirschhorn: Up lá no alto? Estudante: Não tem J Harvard aparelho, eo cursor é apenas todo o caminho para a esquerda. JASON Hirschhorn: Todos o caminho para a esquerda? Estudante: Sim. Alguém tem isso? JASON Hirschhorn: Oh, bem J Harvard é como o nome de usuário. Então, isso é apenas o nome de usuário padrão. ALUNO: ele pára de responder. JASON Hirschhorn: Oh, ele pára de responder. OK, então o que você tem a fazer é você tem que fechar fora do gedit. Tão perto de gedit, e ele deve retornar. Então é gedit aberto em seu aparelho agora? Se você sair fora dela, que deveria voltar e você deve ser bom para ir. Será que isso funciona? Estudante: Então você usou o comando gedit para open-- JASON Hirschhorn: Não, o primeiro comando gedit foi um erro. O primeiro comando gedit, I fazer gedit hi.txt. Então, eu dar-lhe um nome, hi.txt assim gedit. hi.txt é o nome do arquivo. O primeiro foi apenas um erro, e em seguida, Eu rapidamente fechada fora do programa. Portanto, a questão foi se eu fizer gedit, eu não sou vai ser realmente capaz de fazer qualquer outra coisa na minha linha de comando até eu fechar essa gedit, então eu acho que isso é o que eles correram para. Então feche o gedit. Ele vai voltar para fora do que programa, e então você vai ser capaz de realmente escrever na linha de comando novamente. Isso é bom? Dope. Assim, apenas certifique-se de fechar isso, se você tiver problemas. OK, então uma pergunta muito boa um segundo atrás estava copiando. Então agora eu tenho hi.c. Mas digamos que eu quero mudar isso. Eu quero que ele seja um pouco melhor. Eu quero dizer oi classe. Mas eu quero manter esse modelo. Eu não tenho que reescrever todo o programa novamente. Eu quero manter o modelo. Como faço para copiar? Fácil. Então cp hi.c newhi.c. Agora eu tenho dois. E então eu posso abrir newhi.c, e, em vez de apenas dizer oi, Eu vou dizer oi classe! Então, eu vou voltar. Saia para fora. Voltar para a minha linha de comando. ls fazer newhi. Executá-lo. Lá. É melhor, muito melhor. Então, se você quiser copiar alguma coisa, fácil como isso. cp é cópia. Então, nós temos ido mais comovente, fazendo diretórios, copiar. Vamos ver o que mais eu deveria passar por cima? Oh, sim. Vamos passar por cima disso. Então, isso foi incrível. Digamos que eu queria a-- oh wait. Eu vou voltar para incrível. Vamos dizer que eu não quero esses arquivos aqui mesmo. Vamos dizer que eu quero que eles em um novo diretório como no diretório incrível. Eu quero começar a organizar, então agora eu vou ter um novo diretório chamado oi. Ele tem todos os programas Escrevo chamado oi. Então, como vamos fazer isso? ALUNO: Mude o diretório. JASON Hirschhorn: Yeah. oi. Boop. mkdir hi_dir. Ele reclamou porque eu já tinha um oi aqui. Então agora eu tenho um diretório oi. Então, agora eu quero passar tudo, todos os programas que eu escrevi, Eu quero movê-los para o diretório oi. Apenas coisas limpeza. Como posso fazer isso? Estudante: [inaudível]. JASON Hirschhorn: Mover-lo, certo? Portanto, vamos passar. Sim? Estudante: Qual é a diferença entre oi e hi.c que já temos. JASON Hirschhorn: Oh, hi.c é o real. Então esse é o arquivo que você escreveu. Então, se você estava indo para abri-lo no gedit ou Nano, isso é o que você está digitando no. Quando você compila-lo, em seguida, você recebe um arquivo executável. Isso é oi. Então, se você abriu oi, o que está acontecendo ser um monte de rabiscos para você. É basicamente vai ser bando de instruções do computador. O que está acontecendo? ESTUDANTE: O que todas as cores significam? O azul é provavelmente diretório. O que é amarelo? JASON Hirschhorn: Aqueles são os arquivos executáveis. Então, quando eu fazia hi.c, ele me-- deu para que eu possa fazê-lo. Saltando a arma. Então remover oi sim. Então vamos fazer ls. Eu não tenho oi mais. Então, quando você faz, que é quando você levar o programa que você escreveu e você faz um arquivo executável. Então faça hi.c-- bem, fazer oi. Acho que ele foi ao longo deste na palestra. Estes são bando de instruções do compilador. Então, ao invés de ter que realmente escrever bumbum com tudo isso. Estes são bandeiras. Você acabou de escrever fazer. Então, isso faz com que os arquivos executáveis. Então, quando você fizer ls, agora você tem oi. Então é isso que você está vai realmente executar. E assim que você executar que, ao fazer ./hi, e funciona o seu programa. Mas se eu tentar fazer isso com hi.c, não, não é indo para o trabalho. Sim, isso faz sentido? ALUNO: Mm-hm. JASON Hirschhorn: Cool. Espere, eu queria dizer outra coisa. Apenas rapidinho, no caso alguém estiver interessado, quando você saltar de um diretório, é o ponto a ponto. Alguém tem uma idéia do que talvez apenas o meio de pontos singulares? Estudante: [inaudível]. JASON Hirschhorn: É na verdade, o diretório atual. Assim é seu diretório atual. Então, eu estou aqui. Estou em incrível. Se eu fizer cd ponto, ele não faz nada. Leva-me para o meu diretório atual. Então, um pouco redundante, mas você tem para fazer isso, então ./ seu nome do programa, a fim de executar o seu programa, você tem que fazer isso. Está bem. ALUNO: Se você fizer cd dot dot dot, no entanto muitos pontos será que apenas levá-lo até que muitos diretórios? JASON Hirschhorn: Você quer dizer como cd dot dot dot dot? Estudante: Sim. JASON Hirschhorn: Não. Então, na verdade Lembre-se que eu fiz ls -l? Se eu fazer outra coisa, eu posso ls -a. Então, o que isto diz é -a mostra-lhe tudo. Por isso, mostra-lhe as coisas que são ocultos e coisas que não estão escondidos. Então, se você perceber que quando eu fiz apenas ls, eu só vi esse material, as coisas que eu fiz. Se eu fizer -a, ele vai para me mostrar tudo. E assim diretório atual, diretório acima dela. Será que isso faz sentido? Sim? ALUNO: Mas esses não são realmente no diretório. O diretório atual não é, em si, Então, por que mostrar aqueles com pontos dentro? JASON Hirschhorn: Você quer dizer que é como não é no diretório. ESTUDANTE: Certo. Portanto, temos uma lista de coisas que estão no diretório. JASON Hirschhorn: Eu acho que ele está no diretório. Como -a mostra tudo, mesmo se ele está escondido dentro do diretório. Então, eu acho que é apenas uma rota para o diretório atual se isso faz sentido. É um pouco recursiva. É como Inception. O que está acontecendo? Estudante: Então você disse mostra -a [inaudível]? JASON Hirschhorn: -a, sim. Estudante: O que faz com que seja [inaudível]? JASON Hirschhorn: Bem, por exemplo, vamos voltar até o topo. É geralmente coisas que você não deve mexer com e você não precisa se preocupar. Portanto, este é o tipo de casa. Se eu fizer -a, eu recebo toneladas de material. Todas essas coisas. E você não precisa mexer com nada disso. Definitivamente não começar a ir aqui e basta remover o material. [Risos] Sim, isso foi um pouco mais material confortável, mas é bom saber. Eu acho que é bom saber. Mas se você nunca quer digitar -a na totalidade do curso, simplesmente esquecê-la. O que está acontecendo? Estudante: Qual é o ls -l? JASON Hirschhorn: Isso mostra permissões. Basicamente você usa que para as permissões, de modo -l. Ele mostra um pouco pouco mais de informação, mas, novamente, isso é um pouco mordeu coisas mais confortável. Estes são apenas permissões. Assim, as permissões das pastas. Então, só por exemplo, vamos dizer que eu fiz um pasta, para a d representa o diretório. Portanto, estas são diretórios. E, em seguida, ler, escrever, executar. Portanto, estas são as permissões para Acho usuário, grupo mundial. Totalmente indo longe demais. Você está indo para ir neste como semanas a partir de agora, mas só para você saber, essas são as permissões. O que está acontecendo? ALUNO: Você pode claro, em vez de pule para a próxima coisa, pode você-- JASON Hirschhorn: Você significa realmente excluir? Eu não sei. Eu nunca faço isso. Por que você iria querer fazer isso? Por que você faria isso? Eu gosto disso. Você vive no limite. Você é como eu não quero nada disso. Isso é intensa. Estudante: [inaudível]. JASON Hirschhorn: Sim, nós podemos fazer isso. Desculpe, mexer com o tamanho é totalmente me assustando agora. Vamos subir. Sim, então agora eu não posso subir mais. Então tudo o que eu ensinei você se foi para sempre. Obrigado. Fizemos os nossos diretórios. Fizemos nossos arquivos e coisas do tipo que, por isso, ainda temos todas essas coisas. OK, eu vou ir mais rápido. Tão real rápido. Então, digamos que eu estou em incrível. Vamos dizer que eu queria mudar tudo para o novo diretório porque eu só quero para organizá-lo, certo? Então, como eu faria isso. Mover. Nós vamos usar o movimento novamente. Então mova hi.c. E o que você pode fazer é você começar a listar coisas, ea última coisa que você lista é onde ele está indo para movê-lo. Então mova hi.c, oi newhi newhi.c, hi_dir. E assim passou-se tudo em a última coisa que você mencionou. Então, altere o diretório, hi_dir ls. Tudo está lá. Então é legal e mais organizado. OK, digamos que eu odeio oi meu programa original. Eu quero me livrar dele. Como faço para me livrar dele? O que está acontecendo? Estudante: [inaudível]. JASON Hirschhorn: Vamos dizer que eu só deseja remover o programa, então apenas oi. Não, você está certo. Então é rm, mas você rm oi. Ele vai lhe dar um pequeno aviso. Vai dizer que você tem certeza que quer apagar este, e sim, eu faço. Se você não quer ser solicitado assim porque você não tem tempo para avisos, retire -f. Esta é outra bandeira. É como se o -l. É como se o -a. Estes são apenas bandeiras que você está dando a esses comandos. Então remover -f. f f significa força. Assim forçá-lo. Eu não quero ser solicitado. Então remover -f. Vamos fazer hi.c. Só se livrou dele. Ele não me disse. Mas vamos dizer que ao invés disso eu sou feito com este diretório. Eu quero me livrar de diretório. Então eu remover hi_dir. Não, isso não funciona. Não, por isso não vai deixar me remover um diretório. Alguém tem uma idéia? ALUNO: É remover dir? JASON Hirschhorn: Então remova como este? Estudante: Não. Apenas o [inaudível]. JASON Hirschhorn: Não, agora não há nenhum oi. Há apenas hi_dir. Portanto, este é o diretório. Então, na verdade o que você quer fazer é-- oh, você tem uma idéia? Eu vejo como uma meia mão. Estudante: [inaudível]. JASON Hirschhorn: OK. Estudante: [inaudível]. JASON Hirschhorn: OK. Então, se eu quiser remover um diretório, remover -r. Isso é recursiva. Assim que remover recursiva do diretório. Então, eu quero que você vá para o diretório, remover tudo no diretório, e, em seguida, se livrar do diretório. E então eu vou f também, porque eu Não quero que ele me pedir com avisos depois ele remove todos os arquivos. Então remover hi_dir -rf. Boom, ele foi embora. Só tome cuidado onde você usá-lo. Vou usá-lo também aqui. -rf incrível. Ele se foi. Tenha cuidado onde você usá-lo. Se você usar isso aqui e digitar algo assim, nunca mais faça isso. Isso vai apagar tudo no seu aparelho sem nunca avisando. E eu fiz isso. Problema de classificação fixa em 04h00, eu estava tentando remover conjunto de problemas diretórios, e eu fiz isso. E eu era como oh meu deus. Não fazer-- Tentei cancelar. Você pode cancelar. Comando C apenas cancela tudo, mas eu já excluída como 75%. Então eu arruinou. E as pessoas fazem isso. Todo mundo faz isso. Não faça isso, embora este semestre. É uma merda. Estou nervoso tê-lo aqui. Eu estou indo para excluí-lo. [Risos] Você pode imaginar? OK, perguntas. Sim? Estudante: Então, se fizermos tudo você está fazendo aqui, este é o mesmo como apenas indo para realmente Salvar arquivo como [inaudível]. JASON Hirschhorn: Oh, você quer dizer através gedit. Estudante: Sim. JASON Hirschhorn: Sim, é. gedit é útil. Então gedit é muito útil. Nesta aula, você pode fazer uma monte de coisas através gedit. Você pode salvar. Você pode renomear. Você pode mover arquivos e coisas assim, mas só a verdade quando você vai para 50-- assim você está em 50-- 51, se você ir em 61, esta vai ser a sua vida. Esta é a linha de comando. Este é o lugar onde você vai programar para o resto de sua vida, então definitivamente usar gedit, se quiser. Sem dúvida uma boa maneira de começar. Para o primeiro problema se põe, definitivamente usar, mas de vez em quando tentar obter mais usado mais confortável com argumentos de linha de comando. Mas você pode, definitivamente. O que está acontecendo? Estudante: Então, quando queremos eliminar um dos arquivos que fizemos, existem duas maneiras. [Inaudível]. Existe uma maneira quando você está exclusão de um diretório pedir para o prompt para que você não acabar excluí-lo? JASON Hirschhorn: rm -r. Portanto, não forçá-lo. Então rm -r. Ele vai passar por recursiva, apagar tudo, pedir-lhe Depois de tudo, o que vai deixá-lo maluco. Como eu quase exclusivamente fazer rm rf -f e rm, apenas constantemente. Eu sou como eu não tenho tempo. Eu sou um homem muito ocupado. Tudo bem, o que há? Sim. Estudante: Existe um desfazer, ou um lata de lixo, ou qualquer coisa assim? JASON Hirschhorn: Não. [Risos] Eu poderia voltar e pegar o meu aparelho que eu acabei de excluir, não. Não, não, não. Se você fizer rm, ele deve ter ido embora. O que está acontecendo? Estudante: Então você pode [Inaudível] juntos. JASON Hirschhorn: Sim, apenas como aquele. Assim, por exemplo, você viu o rm -rf. Vamos dizer que eu quero fazer ls -la, ele me mostra tudo, mesmo escondido coisas com suas permissões. Estudante: Então r, o -r bandeira, se não temos que, não podemos excluir um diretório, certo? JASON Hirschhorn: Certo. Estudante: Então, que diz que nós queremos fazer alguma coisa com o diretório? É isso o que isso significa? JASON Hirschhorn: -r significa de forma recursiva. Então, um diretório vai tem arquivos nele, certo? Então o que você quer fazer é você quer ir para o diretório, apagar tudo, tudo o arquivos no diretório, em seguida, sair e apagar pelo diretório atual. Assim, o -r significa recursivo, fazê-lo tudo de forma recursiva, se isso faz sentido. Sim. Estudante: Então diretórios têm [Inaudível] e simplesmente excluí-lo. Ou você still-- JASON Hirschhorn: Vamos tentar. Então mkdir vazio. Remover vazio. Não. Estudante: Não, então você ainda precisa as-- JASON Hirschhorn: Sim, sempre. Então, -r, rf, vazio. Impressionante. Mais perguntas? Eu acho que é o seu acidente Claro que na linha de comando material. Qualquer dúvida, porque nós vamos pular para tipos de dados e loops, e todas essas coisas? O que está acontecendo? ALUNO: eu não tenho CS50 mostrando como um dos meus diretórios. Isso é normal? JASON Hirschhorn: Ah, sim. Isso é meu. Sim, é aí que o meu soluções para o seu material é. [Risos] Então, sim, isso é absolutamente normal. Eu acho que você, provavelmente, só tem esses quatro. Eu acho que pode ser normal. Sim. OK, mais alguma pergunta? Eu sei que foi super rápido. O que está acontecendo? ALUNO: Eu vi a cor do verde azul. O que é isso? JASON Hirschhorn: Isso significa diretório. Estudante: E esse azul? JASON Hirschhorn: Oh, você quer dizer este verde azul? Estudante: Não. JASON Hirschhorn: Este verde azul? Estudante: Não. Quando você listed-- JASON Hirschhorn: Oh. Assim? Estudante: Sim, os ícones. JASON Hirschhorn: Ah, isso. Eu não sei. O que isso significa? Por isso, parece ser apontando para um diretório. ALUNO: Parece quase como um alias. JASON Hirschhorn: Pode ser. Você não precisa saber disso. Mais perguntas? Impressionante. Se você tiver alguma dúvida, Eu sei que foi muito. Muita desta informação será online. Vou colocá-lo online para vocês. Seção B será on-line também. Ou se você tiver dúvidas, apenas chegar e me perguntar. Aqui você vai. Então, agora Sharon e Hannah vai passar por cima de alguns da lógica por trás problema definido. SHARON: Oh meu deus. Problemas. HANNAH: Enquanto isso, eu estou Hanna. Esta é Sharon. Nós dois estamos CS50 TFs, e vamos dar-lhe um pouco de introdução em um par importante coisas para definir um problema. Tudo a partir de tipos de dados condicionais para a loops. Loops em geral. SHARON: E no final, nós vai dar uma olhada em P definir um, eo que você precisa saber para ele. Então, vamos começar com os tipos de dados. Vocês devem estar familiarizados com o aqueles que estão destacadas em azul. Assim, podemos começar com ints. ints são inteiros, então um, dois, três, quatro. carros alegóricos, flutuando pontos. Como inteiros com casas decimais, de modo 5.2 ou até mesmo 5.0. Chars são personagens como A, B, C. E uma corda, vocês todos sabem. Como CS50 ou Olá e mundo. Bool é um booleano, por isso temos verdadeiro e falso como nosso booleana. Então, se calcula a algo truth-- 5 é igual a 5, que calcula a verdade, e se tivermos 5 é igual a 4, que é falsa, de modo que calcula a falsa. E aqui temos o associado tamanho de todos estes tipos de dados. E você terá que saber isso para seus questionários, então isso pode ser útil para lembre-se, mas vamos postar estes. Na verdade eles já estão postados. Então, você deve estar familiarizado com os destacados em azul. JASON Hirschhorn: Real rápida, apenas no caso de você quero saber a diferença entre um char e uma corda. Então, quando você está escrevendo coisas, sempre que você tem algo como "oi", que vai ser uma string. Assim, se houver dois citações, é uma string. Mas se eu fosse um "h" assim, essa é uma string. Mas se eu tiver apenas um citação, que é um char. E então qual é o diferença que você pode perguntar. Bem, a diferença é este é um byte de memória. Isto é de 4 bytes de memória. SHARON: flutuar? Descrevê-lo de novo? OK, é como uma espécie de número que tem um ponto decimal com ele, de modo 5.2 ou até mesmo 5.0 é um float contra apenas 5 é um int. Estudante: [inaudível]. SHARON: Oh, ele pode ter muitos pontos decimais, de modo 5,675-3,1415. Sim? ALUNO: Será que precisamos de saber todos os tamanhos para isso? SHARON: Sim. Estudante: [inaudível]. SHARON: Você não se preocupe os brancos ainda. HANNAH: As notas são afixado no CS50.net/sections. ALUNO: Só por curiosidade, existe um utilitário para saber o tamanho dos arquivos que você está chamando assim que devemos saber? SHARON: Então, essas são os tipos de dados, mas sim. Portanto, neste caso, qual seria ocupam mais memória ou mais espaço? JASON Hirschhorn: Então para um exemplo concreto, Eu acho que no conjunto de problemas quatro ou cinco, nós somos vai dar-lhe um monte de dados, e você basicamente tem que atravessar esses dados. Por isso, é útil saber que se você tem tantos números inteiros, que vai ser o quê. Então, digamos que eu te dei dez inteiros, qual é o tamanho desse? Estudante: 40. JASON Hirschhorn: 40 bytes, certo. Então você pode precisar saber que OK, eu preciso saltar de 40 bytes. Então, digamos que ao invés disso é 40 caracteres, entăo-- digamos que eu te dei 10 caracteres, então você sabe, OK, eu só precisa pular 10 bytes. Portanto, é muito útil saber o tamanho dos tipos de dados reais, porque um monte vezes você vai estar pulando em torno dos dados, então você precisa saber o quão longe para pular. Estudante: Qual é a diferença entre as aspas e uma citação? JASON Hirschhorn: OK, duas citações é uma string. Uma citação é um char. ESTUDANTE: Como operacionalmente, qual é a diferença? Ambos dizer oi. JASON Hirschhorn: Oh, desculpe. Este é apenas h. Infelizmente, este não é clara. Estudante: Então topo um-- JASON Hirschhorn: Este é uma cadeia, sim. Então é dois personagens, certo? String, oi. Mas vamos dizer que eu só teve um único personagem, se eu colocar duas aspas apenas h, que é uma string. Esta é uma string h. Será que isso faz sentido? Portanto, este é de quatro bytes. Mas vamos dizer que me livrei de que uma só colocar um. Uma citação. Este é agora um char, um char h. Então, exatamente a mesma coisa, diferente tipo de dados. Este é apenas um byte, enquanto a corda era de quatro bytes. Sim. Estudante: Então, se você estava tentando para armazenar uma palavra como David, você gostaria de usar uma corda, porque independentemente de quanto tempo a corda é, levará apenas quatro bytes a menos que seja um longo ou um casal, em que case-- assim se estende-se para além de quatro personagens, em seguida, você quiser fazê-lo em string. É que a lógica geral para trás. JASON Hirschhorn: Se ele se estende além de um personagem, é uma string. Estudante: Então não há [inaudível] para o armazenamento de uma carta de quatro palavra como quatro indivíduo ou de três letras palavra como três personagens individuais porque será que apenas três bytes, ao contrário da seqüência de três partes. JASON Hirschhorn: Você poderia fazer isso. Você poderia fazer isso, mas eu não acho que é realmente vale a pena, porque você está salvando apenas um byte. Você sabe o que eu estou dizendo? No grande esquema das coisas, que não importa realmente. Mas, por exemplo, printf, se você estiver imprimindo f e você tem três caracteres que podem ser impressos que out-- digamos que você C-A-T, você pode imprimir gato apenas por fazendo um char um char um char, ou você pode imprimir seqüência de gato. É exatamente a mesma coisa. Então, você poderia fazê-lo assim, mas- Estudante: Não vai para salvá-lo muito. JASON Hirschhorn: Yeah. A dor de cabeça que iria induzir não vale a pena. Sim? ALUNO: Por exemplo, você teve a h com uma contra dois, as aspas simples ou duplas. Por que você quer salvar uma única letra como uma string. O objetivo é que isso já serve? JASON Hirschhorn: Eu não sei. Quer dizer, é realmente depende do programa. Por exemplo, eu acho que, mais tarde, você vai entrar em linha de comando material. Assim, por exemplo, em vez de me pedindo-lhe uma pena integer--, Eu posso falar com você? HANNAH: Sim. JASON Hirschhorn: Então por exemplo, em vez de me pedir alguma coisa com final get, que Eu acho que você pode ter visto uma palestra, pode haver uma linha de comando. Você apenas digite-o na linha de comando. Seria como - / hello4 ou alguma coisa, ou helloh h, o que for. Você faz isso na linha de comando em vez de ser requisitado, linha de comando que é sempre uma corda, se é um quatro ou um h, que é sempre uma string. Então esse é um exemplo de quando você pode tem uma letra singular ou uma singular número representado como uma string. SHARON: Tudo bem. E então, aqui estão alguns operadores básicos. Espero que você esteja familiarizado com o primeiro de quatro apenas em geral. Portanto, não há adição, subtração, multiplicação e divisão, e certifique-se de usar as teclas certas. E depois há também da Módulo, que alguns de que você pode não estar muito familiarizado com. E o modulo faz é que se tomarmos esse exemplo 4% 2, que leva o restante o que isso faz na divisão. Então, 4 dividido por 2 é 2, e não há nenhum restante. 4 divida por 3 a 1 e 1/3, e assim restante 1. Assim, ele calcula a um. E, em seguida, 4% 5 é a fracção 05/04, eo restante é 4. Será que isso faz sentido? OK, legal. E seguimos PEMDAS aqui também. Por isso, algumas expressões booleanas. Então vocês têm visto é igual a de igual comparar, por exemplo, dois números. Então, se é igual a 5 é igual a 5, que calcula a verdade. Certifique-se que você tem apenas um sinal de igual. Para não iguais, é bater ou exclamação. HANNAH: Dois sinais de igual quando você faz a igualdade. SHARON: Ah, sim. Certifique-se de não fazer ter um sinal de igual. E, em seguida, para não iguais, é estrondo igual. E então você pode olhar através de para menos do que, maior do que. E depois temos lógico e e lógico ou aqui mesmo. E o que isso faz é, se Você se lembra no Scratch quando você teve esse bloco que disse e, em seguida, você poderia caber duas peças diferentes lá, que é o que esta eo que faz. E certifique-se de fazer duas ampersands. E esta chave que você pode encontrar para o direito, bem debaixo do seu botão Excluir. Pergunta? Estudante: Qual foi o [inaudível]? SHARON: OK, então se você só faz um, você está comparando pedaços. Então, se você se lembrar do que pedaços são, eles são 0 e 1., e assim por que está comparando outra coisa. Então vamos focar isso por enquanto. JASON Hirschhorn: Então um é igual a é como atribuição, certo? Assim como int x é igual a 4. Você está dizendo que variável x é igual a 4. Então, um é igual a cessão, mas os ands e os tubos ou as barras, assim como Sharon disse, eles são operadores bit a bit. Você não precisa se preocupar com isso. ALUNO: Quando você usa lógica e e lógico ou novo? Eu só esqueci quando você faz isso. HANNAH: Claro, por isso, se você quiser para verificar se duas coisas são verdadeiras, por exemplo, digamos que eu queira dar uma olhada que é um número entre 5 e 15, Eu diria que se certificar de que o número é maior do que 5. Então, digamos que se x é maior de 5 e menos de 15. Portanto, a fim de que todo declaração para avaliar a verdade, você precisa tanto do tipo de sub demonstrações para avaliar a verdadeira. Com ou você só precisa um dos dois ou ambos. ESTUDANTE: Ótimo, muito obrigado. SHARON: E também em risco, eu sou Certifique-se em um monte de seus projetos você tinha se tocar na borda ou se tocar outro sprite em seguida, saltar ou algo assim. HANNAH: Tudo bem, então por que nós se preocupam com todos estes Booleanos? Temos estas estruturas que você visto em raspadinhas chamado condicionais. E condicionais são nada do formar se alguma condição ou algum booleana é verdade, então faça o código entre essas chaves. Assim, você pode ver à direita aqui é o bloco de rascunho. Você tem essa se então, e nada que vai para aquela pequena forma que parece isto-- i não sei o que seria de chamar isso-- que vai ser o booleano ou condição. Então, novamente, um booleano ou condição é nada que quer avaliar a verdadeira ou falsa. E mais uma vez, você pode combinar Booleanos. Pode ter, mais uma vez, x é maior a 5 e x é inferior a 15. Ou você pode apenas ter um desses x é inferior a 5. OK, então em C É do lado esquerdo. É apenas a palavra-chave se. Em parênteses, o condição ou a booleana. E, em seguida, o código entre essas duas chaves só irá executar, só será executado se essa condição ou que booleana é verdadeira. Será que isso faz sentido? Impressionante. Está bem. E então, como você pode vimos no Scratch, nós também pode adicionar em um outra, que é basicamente qualquer coisa entre o chaves sob outra só será executada se a condição é falsa. Faz sentido? Qualquer dúvida sobre esses dois? Impressionante. Legal. Então, aqui está um exemplo rápido. Vamos dizer que queremos determinar, com base no tempo, se devemos dizer bom dia ou boa noite. Eu vou dizer se é antes de 12:00 horas, vamos dizer bom dia, caso contrário, vamos para dizer boa noite. E quando eu disse que, caso contrário, que é equivalente em C para esta pessoa. Então, nós estamos indo para verificar se o tempo militar é inferior a 0:00, dizer bom dia. Caso contrário, dizer boa noite. Estudante: Então, nós realmente obter essa entrada para tempo militar com a seqüência de get. HANNAH: Certo. Será que algum outro lugar que tínhamos realmente tem que fornecer essa informação. Aqui não tem nenhum valor. Nós nunca chegou a declarar isso. Suponho que em algum lugar acima este programa eu declarei o tempo, ou pediu o tempo, ou- qualquer outra coisa com esse exemplo? Impressionante. OK, agora temos além para que simples se o formato mais, temos duas outras estruturas diferentes. Então, primeiro temos o interruptor declaração, e é aqui a forma geral de uma instrução switch. Você tem a palavra-chave mudar o mesma forma, você tem a palavra-chave se. E, em seguida, uma entrada, neste caso n. Então, isso só pode trabalhar com números inteiros. Assim que a entrada n tem para ser um inteiro, OK? E nós estamos indo siga um destes casos dependendo do que esse valor n é. Portanto, neste caso, você primeiro comparar n é igual a uma constante, se for, fazer tudo tipo de recuado aqui. Posso apontar para ele, porque eu estou muito curto. Se não for igual a uma constante e em vez disso é igual a dois constante, vamos seguir esse segundo bloco, e nós podemos fazer isso por tantas vezes como queremos, e depois que a inadimplência é se que não corresponde a nenhum dos casos acima, executar esse código. Todas as perguntas aqui? Este é um pouco mais complicado. Sim? ESTUDANTE: Ruptura significa o quê? HANNAH: Claro, então quando entramos esse bloco, se encontrarmos, vamos dizer, nossa n é, de facto, igual a uma constante, entramos nesse bloco após os dois pontos. Nós fazemos o que está em essa linha de comentar, e depois partimos, o que significa que sair desta instrução switch inteiramente. ALUNO: OK. HANNAH: Mm-hm? ALUNO: É o recuo necessário, ou você precisa [inaudível]? HANNAH: Claro. Então, como sempre, o recuo não é estritamente necessário. O computador não faz importa se você recuar. Nós, como pessoas que são ler seu código, fazer atendimento. Por isso, é muito mais fácil de olhar para o ecrã e ver, oh, eu sei exatamente o que acontece quando n é igual a uma constante. Se eu tivesse travessões aleatórios, eu Não seria capaz de dizer tão facilmente. Sim? Estudante: Então, se queria que um usuário escolher uma das opções que temos na lista, seria usamos, eu acho, [inaudível], mas obter um número inteiro de eles e colocar isso em n? HANNAH: Exatamente. Então, digamos que queríamos para verificar o que inteiro. Nós disse oh, digite um número inteiro entre 0 e 5, digamos. Poderíamos perguntar por que n, para pedir que o valor, e, então, cada um desses casos. E, novamente, isso é algo que poderia muito facilmente fazer com que as demonstrações, certo? Poderíamos ter se igual ao caso um, se igual ao caso dois, se for igual ao caso de três, assim por diante e assim por diante. Este é um pouco mais rápido e um pouco mais limpo. É uma espécie de apenas uma estrutura agradável agora. ESTUDANTE: Mais rápido quanto na escrita? Ou será que ele corre o computador um pouco mais rápido? HANNAH: É executado um pouco mais rápido. Sim? Estudante: Então, a dupla traço é apenas um comentário ou- HANNAH: Oh, eu sinto muito. Eu não apontar isso. OK, se você tem que //, é um comentário. Apenas // é um comentário. Assim, qualquer vez que o computador vê que, vai dizer OK, tudo o que se segue isso, eu só vou ignorar. Eu vou fingir que você nunca escreveu isso. Estudante: Então, isso [inaudível]. HANNAH: Este não faz absolutamente nada. Mas, se eu escrevi algo como na primeiro comentário que eu escrevi em vez printf dizer parabéns ingressados uma constante, que seria algo. Sim? Estudante: Então, na vida real, o caso seria simplesmente ser um número e, em seguida, [inaudível] seria outro inteiro. HANNAH: Exatamente. Estudante: E você precisa as elipses? HANNAH: Desculpe? ALUNO: Você precisa de que? HANNAH: Oh, não. Sinto muito. Isso foi apenas para indicar que você pode ir para o maior número de casos, como você quiser. Vamos fazer um exemplo concreto de que pode tornar as coisas um pouco mais claras. OK, então vamos dizer que eu digo, OK, dá-me um inteiro n que representa um número de classes, especificamente uma classe de ciência da computação número. Então, se você me der 50, Eu vou dizer ótimo. CS50 é uma introdução ao computador ciência, e então eu vou quebrar. Então isso significa que eu saltar de esta declaração toda switch, então agora eu sou feito de executar o código, OK? Se você me deu, em vez de 51, eu imprimir a segunda instrução. E então se você me deu um pouco de número que não era 50 ou 51, Eu vou dizer muito, eu sou não familiarizados com essa classe. Sim? ALUNO: Você não tem pausa. HANNAH: Me desculpe, eu não tenho tempo? ESTUDANTE: E se. HANNAH: Oh, o que se você não tem tempo? Excelente pergunta. Então, o que aconteceria se você entrar, e você iria verificar que eu sou igual a 50? E digamos que, sim, você era igual a 50, você iria imprimir o comunicado. E então você iria continuar a execução, então você diria que eu sou igual a 51? E você iria passar e ir através de cada caso como esse? Sim? ALUNO: É a linha padrão análogo a dizer mais? HANNAH: Exatamente. Muito bom. É como o tipo de captura tudo. Estudante: Então, se você não tem pausa e, em seguida, uma das declarações de caso era verdade, e então ele referido aumento de n por 1, então seria automaticamente fazer a próxima. Ele iria verificar caso 51, e em seguida, exibir isso também? HANNAH: Sim, eu acho que iria funcionar. Assim, você poderá tipo de ficar confuso, então uma ruptura é uma coisa boa de ter. Sim? ALUNO: Sem pausa ele faria o padrão? HANNAH: Essa é uma boa pergunta. JASON Hirschhorn: Eu acho que ele só corre. Então, se você não tem break-- assim digamos que eu fiz 50 e verificado 50, e que iria imprimir isso. Imprima CS50 como introdução a ciência da computação. Você não tem pausa, ele deve ir e continue indo até que ela atinge uma pausa. Então, se não há nenhuma ruptura, ele vai continuar. Vai para imprimir tudo o resto para fora. HANNAH: Então eu acho que seria estar incluindo o padrão. JASON Hirschhorn: Yeah. HANNAH: Boa pergunta. Sim? ALUNO: É caso considerado uma função? HANNAH: Eu sinto muito? ALUNO: É caso considerado uma função? HANNAH: É caso considerado uma função. Eu hesitaria em dizer que sim. JASON Hirschhorn: Então normalmente quando você vê funções eles estarão em chaves. Assim, por exemplo, quando você olha em seu código, por exemplo, principal. Foi principais parêntese aberto, então vazio, paren perto. Funções no passado: eles são, basicamente, sempre você verá parênteses. Assim, caso se caso não tem parênteses, essa é a sua pista de que isso não é uma função. Mas não é. Sim? Estudante: Então faz isso fazer mudar uma função? HANNAH: O que faz mudar uma função. ALUNO: No sentido que você colocar algo dentro, dá-lhe um dos casos. JASON Hirschhorn: I não chamaria isso de uma função. Nem tudo com parênteses é uma função. Quero dizer que é uma pista que é uma função. Eu não diria que é um interruptor função porque não é realmente retornando nada. Você vai entrar nisso mais. HANNAH: Sim, só acho nisso como uma estrutura if. ALUNO: Você consegue fazer ninho isso em uma estrutura if? HANNAH: Sim, você ninho praticamente qualquer coisa. ALUNO: Barry disse que as citações são mais ou menos como a mesma coisa. Assim, você pode substituir as citações com mais? HANNAH: Não, neste particular, estrutura, porque o interruptor declaração está esperando a palavra padrão. O computador sabe que o padrão significa algo especial, que significa a captura tudo. Mais alguma coisa sobre isso. Temos mais um para passar. Sim? Estudante: [inaudível]. HANNAH: Diferença entre utilizando um ponto e vírgula e dois pontos. Assim, um ponto e vírgula é sempre a dizer a computador que estou feito com esta linha. Você pode ir em frente e executá-lo. Esta é uma linha completa. Um cólon vai, neste caso, trazê-lo para um determinado bloco. Então, ponto e vírgula são usar sempre para terminar linhas. Dois pontos são usados ​​para uma variedade de outros casos. ALUNO: É este o equivalente a apenas dizendo que se n é igual a 50, então blá blá blá. HANNAH: Mm-hm. ALUNO: É a mesma coisa [inaudível]. HANNAH: Exatamente. E nós dissemos que é executado um pouco mais rápido. Se não tivéssemos o intervalo, seria como se, se, se. Se nós temos a ruptura, é como se else if else if else if. Legal? JASON Hirschhorn: Então, quando codificação, você pode simplesmente usar se mais, mas acho que no ano passado sobre a nós questionário teve-los a escrever uma declaração switch, assim apenas no caso. HANNAH: Mas definitivamente nada de errado. Nós não estamos esperando que você se preocupe sobre desempenho coisas malucas. Assim, se o resto é totalmente bem. Estes são apenas bom coisas para estar ciente. E aqui está o nosso último que tipo de se enquadram nessa categoria condicional. Temos algo do condição forma geral?, e, em seguida, um pequeno pedaço de código que acontece se a condição for verdadeira. E, em seguida, do cólon, um pouco pedaço de código que executa se a condição é falso, ponto e vírgula. Estamos a fazer com que a linha. Então sintaticamente é um pouco feio. Nós vamos passar por um exemplo, eu acho que é mais clara. Por isso, queremos atribuir o professor cadeia a um destes dois valores, tanto David Malan ou não David Malan, OK? Então, você deve estar familiarizado com a corda, professor =. Nós vamos atribuir uma string com o professor variável chamada. Agora queremos verificar um especial condição. Neste caso, a nossa condição é class_num = = 50. E agora pode ser um bom momento para apontar quando temos professor de corda =, Isso é um sinal de igual. Isso é atribuição. Considerando que, class_num = = 50, que são dois sinais de igual. Essa é uma verificação da qualidade. Então, vamos dizer que é o número de classe igual a 50? Se for assim, atribuir Professor David Malan. Se não, atribuir o professor para não David Malan. Qualquer dúvida lá? Novamente, isso é apenas algo que é bom saber. Você pode fazer isso com outra pessoa se. Um problema boas práticas poderia ser a de, quando você vai para casa, certo exatamente o mesmo condicional em uma outra forma se, porque você pode fazer isso. Todas as perguntas aqui? Tudo bem, eu acho que nós somos vai passar a loops. Impressionante. SHARON: OK, vamos falar sobre enquanto circula. Então, primeiro à esquerda você vê aqui- OK que diz, enquanto, ao mesmo tempo (condição). E então você fazer isso- podemos mudar isso? JASON Hirschhorn: É cortado. SHARON: OK, e depois há são também chaves. Então, fingir que encaracolado chaves estão lá em cima e abaixo a fazer isso de novo e de novo. Portanto, se a condição naqueles parênteses é avaliada como verdadeira, então você deve continuar fazendo o que está no loop while. Assim, por exemplo, poderíamos fazer um problema de prática. Estou usando dois brincos agora, então vamos dizer que se eu estou usando pelo menos um audição, bata palmas. Então, se nós estamos indo para ir por isso, estamos going-- [APLAUSO] Certo? E eu estou vestindo um, e- OK. Sim. Eu não estou usando brincos mais, portanto, não mais. OK, então, em seguida, que é quando você iria parar. E isso você pode dizer é equivalente a cerca de variáveis. Digamos que você tem um número variável de brincos. Assim, enquanto o número de brincos é maior ou igual a 1, bater palmas. E, depois de bater palmas mãos, brincos decréscimo. Faça como brincos, menos um. Assim, diminuir o número de brincos, e em seguida, você irá percorrer o loop while duas vezes. E se a condição é sempre true-- por isso, se, digamos, 2 = = 2, e 2 é sempre igual a 2, certo? Então você sempre fazer alguma coisa lá dentro, e isso é equivalente a quase a sempre loop que nós tivemos no Scratch. Sim? Estudante: são os dois lados apenas diferentes maneiras de escrever um loop while? SHARON: Então estamos focados sobre este primeiro. E, em seguida, então vamos comparar lo com um loop Do While. Então, eles estão um pouco diferente. OK, então vamos dizer que a condição ainda é enquanto eu estou usando pelo menos um brinco, e eu não estou usando qualquer brincos agora. E digamos que fazer e ainda bater palmas enquanto Estou usando pelo menos um brinco. O que deve acontecer? [Claps] Uh oh, gente. OK, então você deveria bater palmas uma vez porque basicamente você passar pela primeira parte do código. Você faz isso, não importa o quê, e então você vê a condição, enquanto, e você voltar para esse ciclo se é verdade. Será que isso faz sentido? ALUNO: Você sempre fazê-lo pela primeira vez. SHARON: Você sempre fazê-lo da primeira vez independentemente de ou não essa condição é verdadeira ou não. JASON Hirschhorn: quando fazer Você acha que poderia usar isso? Quando faz sentido usar isso? HANNAH: Sim? Estudante: [inaudível]. JASON Hirschhorn: Certo. HANNAH: Muito bom. JASON Hirschhorn: Então quando você solicitar um usuário, você vai querer sempre para solicitar um usuário uma vez. Você sempre vai querer para solicitar ao usuário uma vez. Então, ao invés de colocar em um loop while, você colocar em fazer enquanto loop, porque você é sempre vai fazer isso uma vez. Se eles dão-lhe o resposta correta, você está feito. Se não o fizerem, então você re-levá-los. SHARON: Tudo bem, para loops. Então no Scratch, tivemos blocos de repetição. Então, nós queríamos repetir algo, digamos, sete vezes. Então, nós apenas disse repita sete, e dizer que eu estou aqui para ajudá-lo a Branca de Neve! Em C, temos para loops se quero passar por algo um número específico de vezes. Digamos que se inicializar os anões variáveis e fazer sure-- assim o primeiro bloco ali mesmo antes do primeiro ponto e vírgula, inicializamos nossa variável a, e nós configurá-lo para 0. E a nossa variável existe é um número inteiro, int. E o nome da variável é anões, anões e montamos a 0. E a segunda parte entre o dois pontos e vírgula é a nossa condição. E por isso, enquanto os anões é menor do que sete, vamos continuar passando por isso para loop. E, em seguida, a última parte é o que fazer o que fazemos no final deste loop? anões ++, e isso significa que incrementar anões por um de cada vez. Então, o que vai acontecer aqui? Então, primeiro vamos passar. Temos anões como 0, e depois vamos para imprimir Estou aqui para ajudá-lo a Branca de Neve! E então anões vai aumentar porque dissemos anões ++. Anões vai ser 1. E então nós compare-- anões é 1. Nós compará-lo com os anões é menos do que 7? Sim. Eu vou passar por isso novamente. Estou aqui para ajudá-lo a Branca de Neve! E então se torna anões 2, e então compará-lo. É de 2 a menos que 7? Sim. Nós vamos continuar passando. E nós estamos indo para ir por essas sete. Então, no final, vamos ter anões = 0 impressão que sou aqui para ajudá-lo a Branca de Neve! anões é igual a 1, 2, 3, 4, 5, e 6. Lembre-se que no índice 0. Então, vamos começar com 0. Sim? Estudante: Então, isso é diferente do que o do porque esta não imprime fora inicialmente em primeiro lugar. Assim, você poderá continuar a mesma coisa. Você poderia fazer isso também com o loop tarefas? Como o mesmo processo. A condição é anões menos de 7 ou qualquer outra coisa. Resposta é inferior a 7. SHARON: Então você poderia tecnicamente. Então, se nós voltar a-- sua fala sobre o loop while, certo? Assim, o ciclo Do While é ligeiramente diferente porque nós garantimos pelo menos uma vez que nós vamos passar por isso, então essa é a maior diferença. Mas, com o loop while que pudemos anões é dizer enquanto que menos de 7, fazer isso, e depois incrementar anões por um. E então nós temos que inicializar anões antes desta declaração inteiro que é igual a 0. Então, sim, nós poderíamos fazer isso com isso. Mm-hm? ALUNO: Você pode voltar para [inaudível]? SHARON: Para loop? Estudante: Sim, assim com os anões ++, Parece que isso é o que você faz depois você já correu outros meios. SHARON: Correto. ALUNO: Você poderia apenas não tem isso e colocar ele-- SHARON: Você podia. Estudante: Então é [inaudível] logo após imprimir na próxima linha abaixo. SHARON: Sim, você pode colocá-lo lá. Mas então você faria basta deixar que vazio. JASON Hirschhorn: Você ainda precisa do cólon semi embora. SHARON: Parece um pouco estranho, mas você pode fazer isso tecnicamente. Tecnicamente. Por favor, não. Sim? Estudante: Existe algum alternativas para ++? Há mais [inaudível] alguma coisa? SHARON: Tecnicamente É anões. Um sinal de igual que vamos configurá-lo para anões e 1. Então, tecnicamente isso é o que anões ++ meios. Será que isso faz sentido? Estudante: Sim, mas são Existem alternativas? Como se você Ever SHARON: Sim, você pode fazer anões - -. Estudante: [inaudível]. SHARON: Sim, você poderia fazer uma série de coisas. HANNAH: E você poderia incrementar por 2. Você pode incrementar por 3. Qualquer coisa que vai estar mudando, ele acabará por fazer a condição. Estudante: Então, se você queria incrementar por 2, como você escreveria isso? HANNAH: Você poderia escrever dwarves-- você poderia escrever essa coisa toda para fora. anões anões = + 2. Ou um pouco de taquigrafia. Eu só vou escrever + é igual a 2. ALUNO: OK, e você ia escrever que direito onde anões ++ está lá. HANNAH: Exatamente. SHARON: Correto. Houve outra pergunta? Sim? Estudante: [inaudível] anões ++? SHARON: Então você don't-- JASON Hirschhorn: Sim, não precisa ele lá. [Inaudível] fim. Então você faz [inaudível] queridos, porque você está tipo de dividir a inicialização, condição, e a mudança. No final, você não precisa dele. SHARON: Observe também que você Não é necessário o ponto e vírgula depois de todo o inteiro para loop. ESTUDANTE: Como você começar com um número inicial de negativo, por exemplo? SHARON: Você pode inicializar anões igual a 2 negativo. ALUNO: Você simplesmente não Dash 2? SHARON: Sim, assim que o sinal negativo, traço 2. ALUNO: É [inaudível] para inicializar como anões [inaudível]? SHARON: Sim. Então, se tivéssemos anões apenas inicializado anteriormente, basta fazer ponto e vírgula anões int, e então não podemos fazer anões definir que igual a 0. ESTUDANTE: Poderíamos fazê-lo no início o programa dizendo int anões = 0, e, em seguida, apenas-- SHARON: Só não have-- assim haveria um espaço de novo, mas você ainda precisa de um ponto e vírgula. Sim. Mm-hm? ALUNO: Será que este código dizer o que o valor de anões é depois. Se você perguntar a ela depois de tudo isso é feito para imprimir o valor de anões. SHARON: Você poderia pedir para ele fazer isso. ALUNO: OK. SHARON: Mas você faria tem que perguntar isso para fazer isso. Ele não faz isso por você. Estou com medo de colocar meus brincos de volta. Fazê-lo no final para os aplausos. Só brincando. JASON Hirschhorn: Então, isso é o mesmo. Então inicializar no topo. Condição, impressão, mudança. Portanto, este é exatamente o mesmo que que, se qualquer um pode ver isso. ALUNO: Por que você não tem o ponto e vírgula na primeira linha? SHARON: Onde? ALUNO: Depois da primeira linha. SHARON: Após a 4 nos parênteses? Porque queremos ir Através neste loop. E se você der uma olhada em laços geral, eles não têm ponto e vírgula. Não é prático. Será que somos bons? Só mais uma pergunta, mais dois. Sim? ESTUDANTE: Isso pode ser um pouco avançado, mas fazer anões têm uma diferente [inaudível] a partir de uma variável [inaudível]. SHARON: Muito bom. Estudante: [inaudível]. SHARON: Sim, é. O quê? JASON Hirschhorn: Sim, por isso que ele faz. Assim, normalmente, o âmbito de aplicação do algo está nas chaves. Então alcance sempre vai estar nas chaves, mas que não faria muito sentido para o loop porque inicializado anões em que chaveta. Então, normalmente o escopo de anões, que variável não se estenderia além disso. Este é um caso especial embora. Então você inicializa-lo dentro desses parênteses, e então você tem o escopo mais tarde. Caso tão especial. Eles não deveriam ter isso, e que foi-- Isso faz sentido? Estudante: Não. JASON Hirschhorn: Eu posso passar por isso. Então, o que você ainda está confuso sobre? ESTUDANTE: Como em que você pode usar dwarves-- você pode, obviamente, usar anões [inaudível] no exterior da fórmula demasiado? JASON Hirschhorn: Não, não. Assim, o âmbito do que é apenas dentro do chaves para o loop for, sim. SHARON: Mas se você inicializar anões fora do loop for, em seguida, você pode usá-lo em outro lugar Há mais uma pergunta? Não? Está bem. Então nós conversamos um pouco sobre nidificação loops ou condicionais de nidificação, se declarações. Então aqui está um exemplo de onde pudéssemos ninho de um laço for. Vamos dizer que estávamos a imprimir esta tabela de x é aqui mesmo. Podemos querer a-- primeiro se nós simplesmente não olhar o código e nós só pensar nisso, nós quero passar por cada linha e imprimir cada coluna, certo? Será que isso faz sentido? Está bem. Então, aqui estamos atravessando cada linha para cada linha, basicamente, e existem três linhas. E, em seguida, dentro de cada linha para cada coluna, e há quatro colunas, imprimir um x. por isso. Quando linha é 0 e coluna é 0, vamos imprimir este x. E, então, continuar através do laço coluna. Fila ainda é 0, mas é uma coluna. E, em seguida, é coluna 2, e, em seguida, é coluna 3. E, então, sair do que lacete porque então em coluna já não é inferior a 4. E, então, imprimir uma nova linha, e vamos para a nova linha. E então passamos a próxima linha e linha é incrementado, e passar por isso novamente. Será que isso faz sentido? Sim? Estudante: Então, para ninho [inaudível] é apenas colocá-lo dentro do loop? SHARON: meios de assentamento Assim que nós tem um loop dentro de um loop for, como Inception. ALUNO: Você não precisa de um rotação especial ou alguma coisa? Você se ater apenas a direita para dentro dele? SHARON: Correto. Sim? Estudante: Pode ser [inaudível], mas parece que há um espaço extra entre todos os x. Eu não sei se that's-- Se isso eram para realmente fazer o programa, que ele faria algo assim? SHARON: Então não. Que estava pressionando Enter. Isso era ruim de nossa parte. Desculpar. HANNAH: Como você mudaria esta programa, se você fez uma linha extra? Estudante: [inaudível]. SHARON: Bom trabalho. ALUNO: Você também pode imprimir o mesmo coisa, alternando em torno da coluna, certo? SHARON: Hm? Estudante: Então, para imprimir o seu pequeno xxx, a primeira linha pode dizer de impressão, e em vez de dizer linha, diz coluna. SHARON: Então você pode mudar os nomes das variáveis ​​para fazer isso. É isso que você está dizendo? Estudante: Não, eu sou apenas dizendo isso-- assim que você é linhas de impressão primeira e em seguida, a impressão de colunas. Você pode também imprimir colunas primeiro e em seguida, as linhas para obter o mesmo esquema? SHARON: Você poderia, mas então você teria que ter o cuidado de onde você colocar o novo line. E como você saltar para trás? JASON Hirschhorn: Se você só troquei e os valores eram diferentes, em vez de ter four-- o que é? Três por quatro. Eu Você teria quatro linhas e três colunas. Será que isso faz sentido? Estudante: Sim. JASON Hirschhorn: Então sim, você poderia fazer isso. Sim, definitivamente. SHARON: Mas isso seria literalmente apenas interrupção, os nomes das variáveis. Boa? Está bem. Tudo bem, P definido. OK, então a primeira parte dela você vai estar fazendo isso, Mario. Só brincando. É mais como este. E assim, quando nós apenas olhou para o aninhados para loops, fazendo que a tabela, pense sobre como você pode ser capaz de imprima estas hashtags desta forma. E então aqui como você imprimir esta aqui mesmo, neste espaço aberto. Estudante: [inaudível]. SHARON: Sim, você apenas imprimir um espaço. OK, então, basta pensar nisso. HANNAH: E então o mesmo parte do conjunto de problemas é um programa chamado greedy.c, para que você esteja vai querer pensar sobre condicionais e certificando-se de que você pode fazer a mudança adequada. E um pequeno aviso que temos para si é ter cuidado com valores de ponto flutuante. Se isso não significa absolutamente nada para você, ele vai ser coberto em palestra esta semana e também em [inaudível] percorrer, que vocês vão aprender a amor nos conjuntos de problemas. Uma coisa que eu realmente sugerir, especialmente com Mario.c, quando você está fazendo o problema definido, se você ficar preso, começar por fazê-lo no papel. Escrevê-lo para fora e, na verdade, sentar-se lá e fingir ser o computador, e vão dizer through-- Eu fosse o computador, como é que eu sigo este laço for através? Como diria meu variáveis na mudança para o laço? Fazê-lo, em papel torna 10 vezes mais fácil quando você vai para se sentar em frente ao computador. Então, só o meu pequeno plugue. SHARON: E também não acho que você tem que codificar tudo de uma vez. Certifique-se de tomar um processo iterativo. Faça um pouco, impressão para fora, ver o que acontece. Às vezes é um pouco de tentativa e erro. E vir para o horário de expediente. Super divertido. JASON Hirschhorn: Então, alguma dúvida? Todos os caras certos, que foi a sua primeira seção. HANNAH: Obrigado por terem vindo. JASON Hirschhorn: Obrigado por vir. SHARON: Obrigado. [Aplausos]