[Música tocando] DAVID MALAN: Tudo bem. Bem-vindo de volta. Isto é CS50, e este é Uma semana, continuação. Então, uma das razões que estamos passando em torno de tecnologias como Google Glass é que eles vêm com algo conhecido como uma API, um Interface de Programação de Aplicativos. E o que isto significa é que, com o arquivos certo e com o direito documentação, você pode realmente escrever software para dispositivos até mesmo como estes. E assim, o que temos em mente para semestres final é, se um projeto envolvendo, por exemplo, vidro Google pode recurso, vamos ver o que podemos fazer em termos de ligar-te com alguns emprestado hardware, bem como o API publicamente acessível para que você possa realmente começar a criar software que corre no mesmo vidro Google. Outro dispositivo que temos vindo a jogar com de tarde que nós pensamos que poderia ser diversão no final do semestre é esta coisinha aqui. É chamado Leap Movimento, e que você está prestes a ver é tecnicamente um anúncio para o dispositivo, mas ele fala o que neste particular dispositivo é capaz de fazer. E, também, vem com uma API via que você pode escrever software para controlar seu próprio computador de forma gosto muito deste filme de um minuto aqui. [REPRODUÇÃO] [FIM REPRODUÇÃO DE VÍDEO] Então, agora, este dispositivo passa a ser implementada como um pequeno USB conector que você pode ligar para o seu computador, mas eu não ficaria surpreso se antes de tempo que tem esses tipos de tecnologias no próximo lote de PCs e Macs para que você possa, de fato, interagir com ela de forma semelhante. Na verdade, o que eu pensei que eu ia fazer, também, é Puxei uma pequena demonstração programa que vem com este software. Então eu coloquei o pequeno sensor de na frente do meu laptop. E como você pode ver, ele já percebe que minha mão está lá controlá-la. E toda esta aplicação faz é maravilhas pequenas coisas como esta. Mas você pode ver que, de fato, Eu tenho cinco dedos lá. Se conseguirmos que ele faça todos os 10, você pode imaginar um piano limpo aplicação ou semelhante. Então, se você gostaria de vir até depois da aula hoje e brincar com isso como bem, você é bem-vindo. Então, mais sobre isso mais para o final do semestre. Assim, um par de administrativa anúncios. Um deles, por fazer parte desta sexta-feira ao meio-dia cs60.net/section. Essa URL é sobre o curso de página inicial também. Nesse meio tempo, porém, supersections vai estrear neste domingo. Supersections são uma coisa de uma só vez, porque nos leva algum tempo para trabalhar quem está em qual seção e onde. Portanto, este próximo domingo, haverá uma seção para aqueles menos confortável, uma seção para aqueles mais confortável. E aqueles de vocês em algum lugar entre são bem-vindos para ir para um ou ambos ou nenhum. Ambos serão filmadas. Eles vão estar em um auditório maior do que uma secção normalmente estaria dentro Mas o objetivo aqui é equipá-lo com algum conforto com um conjunto de problemas, com C, com o aparelho CS50, esta fim de semana, antes mesmo de você descobrir o seu atribuição formal de seção. Então, você vai conhecer o seu TF e sua menor grupo de sectionmates em cerca de tempo de uma semana. Horário de expediente, por sua vez, foram acontecendo. Fazer aproveitá-las hoje à noite ou amanhã à noite, se você gostaria. Problema set 0 é devido na sexta-feira. Este é um dia mais tarde do que o regular-programado quinta-feira. Mas, com um conjunto de problemas, você verá que inclui alguns warm-up exercícios com o qual você se pode estender sua Quinta-feira prazo para sexta-feira. Um conjunto de problemas, entretanto, vai estrear no site da Claro no próximo Sexta-feira, se você gostaria de se enroscar com como eu fiz era uma vez atrasado Sexta à noite no seu quarto. Então cs50.net/appliance é o lugar onde você pode obter o aparelho CS50 que começamos a usar na segunda-feira. Vamos usá-lo um pouco mais hoje. Mas a certeza de que o problema definido um especificação irá orientá-lo através precisamente os passos que você precisa para obter esse instalado e funcionando. Então não se preocupe em fazer isso antes Pset 1, se você não preferir. Tudo bem. Então, nós olhamos na segunda-feira no código-fonte, mas, no contexto de uma nova linguagem de programação, isto é, C. e C, ao contrário de risco, não é gráfica. Não é Puzzle Pieces. É mais Inglês-como sintaxe. E há um par de passos envolvidos realmente em escrever e executar um programa em C, pois além de fonte código como este, você precisa de algo chamado compilador. E, em termos leigos, o que não um compilador fazer por nós? Sim. ALUNO: Ele converte o código que você escreve para 0s e 1s. DAVID MALAN: Ótimo. Por isso, o código que converte nós escrevemos para 0s e 1s. Ele converte o chamado código fonte para código objeto, o último dos quais parece um pouco algo como isto. E é a sua CPU, os cérebros dentro de o computador, que, por causa da pessoas que criaram esses computadores, sabe o que essas sequências média de 0s e 1s. Talvez isso signifique impressão. Talvez isso signifique disso. Talvez isso significa subtração. Talvez isso signifique exibir um gráfico. Existem padrões predefinidos de bits que o mundo decidiu dizer certas coisas. Mas para a maior parte deste curso, nós vamos trabalhar em um nível superior, e vamos tomar como certo que existem coisas como compiladores que podem fazer a nossa função de código fonte na forma como pretendemos. Assim, o programa que escreveu pela primeira vez na semana passada e, em seguida, começaram a porta, de modo a falar, C esse passado Segunda-feira, foi isso. Quando a bandeira verde clicado, dizer Olá. Este foi, claro, escrito em risco. E afirmou que o equivalente programa em C parecia um pouco algo como isto. Então o que eu pensei que iria fazer em primeiro lugar é, vamos desmembrar o que parece, à primeira vista, na verdade, como bastante misterioso sintaxe, mas você vai começar a notar padrões muito rapidamente. O que nós também vamos fazer hoje é fornecer lo com um modelo mental para alguns canônico, algumas construções padrão na programação. E então nós vamos realmente chegar em nossas mãos sujo com alguns exemplos bem. Portanto, para aqueles de vocês mais confortável, perceber que esta semana e, em seguida, ao lado semana pode muito bem ser um pouco de crítica. Mas, sobretudo quando a edição hackers de um problema conjunto sai no site do curso na sexta-feira, eu acho que você vai descobrir que, mesmo que você preencher algumas lacunas ao longo da próxima semana ou duas, você vai começar a ficar cada vez mais desafiado e encontrar coisas novas e mais recentes. Então, vamos provocar este programa para além algumas linhas de cada vez. No topo, temos o que há de tecnicamente chamado de diretiva de pré-processamento. Esta é apenas uma linha de código que diz para incluir o conteúdo de um ficheiro, chamado padrão I / N, entrada padrão - ou, desculpe, padrão I / O, padrão de entrada / saída. h, para dentro do meu próprio programa. Portanto, em outras palavras, se eu escrevi isso programa com um editor de texto simples como gedit, o equivalente a mais simples de algo como o Microsoft Word, que instrução # include stdio.h, é apenas vai dizer ao compilador, pegue o conteúdo do que outro arquivo, stdio.h, e colá-los aqui. Agora, por que eu me importo? O que nós reivindicamos é dentro deste arquivo stdio.h chamado, que é armazenado em algum lugar no meu disco rígido, ou neste caso, em algum lugar do aparelho CS50? Alguém colocou lá para mim. Mas o que está nele? Sim, por isso é uma declaração de uma função chamada printf. Então printf recorda a função que exibe palavras e caracteres e números na tela de meu lance. Mas eu não queria escrever. CS50 não escrevê-lo. Anos atrás alguém escreveu, e eles essencialmente nos deu a receita para isso em um arquivo chamado stdio.h. Assim que a primeira linha apenas me dá acesso às funções que alguém escreveu anos atrás, entre que são printf. Agora, a próxima linha que eu vou acenar minha mão em, pelo menos até a próxima semana. Mas, por agora, saiba que int main (void) é essencialmente o equivalente desta peça do puzzle amarelo quando bandeira verde clicado. O mundo, há anos, decidiu que, se você está escrevendo um programa no linguagem chamada C, você começa o seu programa com uma linha que se parece com isso. Em apenas cerca de uma semana, ele vai fazer sentido que int é, o que é vazio. Mas, por agora, apenas pense nisso como esta peça do puzzle amarelo. Agora seguinte, temos uma chaveta seguido por outro perto encaracolados cinta, por assim dizer. E vamos ver ao longo destes programas em C, bem como a JavaScript e PHP. E estes apenas encapsular linhas afins de código. O aberto chaveta essencialmente diz, aí vem um código. E a chaveta fechada, o que é inclinado na direção contrária, apenas significa, isso é tudo para o código correspondente. Assim, a linha suculento neste primeiro programa é a última, printf, entre aspas, Olá mundo. E eu chamei a coisa entre citações que da última vez? Então é uma string. E uma corda é apenas o tecnólogo prazo para uma seqüência de personagens, uma palavra, uma frase. Mesmo uma única letra pode ser o dobro citado. Mas é uma seqüência de zero ou mais caracteres. Barra-n, no entanto, parece um pouco estranho. Mas simplesmente dizer algo simples para o computador. O que é barra-n? Nova linha. Então, isso é apenas a sequência especial de personagens que o mundo decidiu significa colocar uma quebra de linha ali, porque o compilador vai realmente começar confusa, geralmente, se você, muito compreensivelmente, mas incorretamente, apenas começar a bater Enter para colocar novas linhas em seu código. Você precisa ser um pouco mais explícita com barra-n. E nós vamos ver que há alguns outros, tais padrões para caracteres especiais. Por exemplo, se você quiser deixar o seu mente vagar a um caso de canto, supor que eu queria imprimir uma aspas na tela para qualquer razão, pareceria que ser um pouco problemático, certo? Porque se eu colocar aspas no meio do "Olá, mundo", para o que razão, por que é que isso parece potencialmente problemáticos? Ele quebra a string. O compilador é apenas um programa. Um programa como um compilador é só ir de ler o seu top código para baixo, esquerda para a direita. E se vê três aspas duplas em vez de dois filhos, ele não vai saber Se você quer dizer que a coisa à esquerda deve ser a string, ou a coisa a à direita, ou a coisa toda. É ambíguo, e assim o que um típico compilador fazer é surtar, e dar-lhe alguma mensagem de erro, e fazer você lidar com o problema. Assim, dado que a barra-n significa uma nova linha, o que faria seus instintos agora começar a ser se você quiser incluir algo anômalo como um duplo citar dentro deste caso contrário citado corda? Citação barra-dupla. E então vamos ver isso tipo de padrão também. Se você quiser fazer algo um pouco estranho, você vai descobrir que o soluções muitas vezes seguem um padrão, ea barra invertida denota uma seqüência de escape. E isso significa apenas algo especial que precisamos para representar em uma maneira diferente. Quanto à forma como você representa uma barra invertida, bem, vamos voltar a isso. Mas a resposta também é verdade um pouco óbvio. Então, vamos agora introduzir algum outro construções de programação que você viu em risco. Você provavelmente já tida como certa já se você já mergulhou conjunto de problemas 0. Mas vamos agora introduzir a sintaxe em C para estes caso contrário bastante intuitiva ideias, pelo menos alguns deles. Portanto, esta noção de uma condição ou um ramo, ao passo que anteriormente nós representado com um código que olhou como esta à esquerda em Risco - Se x é menor que y, então diga - em vez agora em C - deixe-me aperfeiçoar em no caso mais simples - estamos indo simplesmente para dizer que, se, abra parênteses, algo é verdadeiro - um Expressão booleana está a ir onde eu disse condição - Fechar parênteses, em seguida, fazer o que é dentro dessas chaves. Então, aqui, também, as chaves é tipo como de risco da Peças de quebra-cabeça em forma de U. Faça o que tem dentro dessas chaves. Neste caso, slash slash. E perceber isso é um atacante slash, não uma barra invertida. Barra, barra, para aqueles que já programou antes, apenas significa - é apenas um comentário. Um comentário não é uma linha de código, de per si. É uma linha de Inglês que você, humano, ter escrito a si mesmo para talvez lembrá-lo de fazer algo, explicar para si mesmo, para explicar a outra pessoa, o que o código está fazendo. É apenas um comentário descritivo. Agora, é claro, podemos ter uma de duas vias bifurcação na estrada, apenas por isso, um três vias bifurcação na estrada, fazendo isso, e se você continuar esta padrão, você pode ter de quatro vias, cinco vias, seis vias garfos na estrada se você precisa lidar, de fato, que muitas condições. E, em seguida, observe o paralelismo aqui - if (condição), else if (condição), eo único que é um pouco estranho é a última, que É justo que os outros. Mas, novamente, esta é idêntica, conceitualmente, para o que fizemos já, embora a sintaxe vontade demorar um pouco para se acostumar. Agora, no presente exemplo, existem alguma outra sintaxe estranha. Vemos printf novamente, parêntese aberto, e parêntesis. E lá dentro é uma string. Os parênteses, no contexto de printf, vá à esquerda e direito de quê? O que nós descrevemos que citada string como mais geral? Então é um argumento. Toda vez que você tem uma função, como printf, e, em seguida, um parêntese aberto e um perto parêntese e algo dentro de que, se é uma string, ou um inteiro, ou qualquer outra coisa, a coisa em entre os parênteses é chamado um argumento. E um argumento só influencia comportamento da função. Neste caso, é bastante claro como. x