[MÚSICA DE XOGO] DAVID Malan: Todo ben esta é CS50 e este é o final dunha semana. Entón, gustaríame presentar a miña ex orientando, Andel Duff, que non só fai iPhone 5 está, así como este púlpito, el tamén fai coches. ANSEL DUFF: Como vai, persoal? Eu só quero dicirlle algo pouco sobre Formula SAE, da cal eu son o capitán. É un equipo do MIT. Eu só quero che dicir vostedes un pouco sobre iso e esperamos xerar algún interese. Entón deixe-me pasar por un algunhas cousas sobre o noso equipo. Entón, nós estamos totalmente funcionamento do estudante, na que todos do deseño membros, simular proba, e fabricante dun subsistema do coche. Temos a nosa propia taller mecánico e garaxes, e N52-- ou moito, N51-- que é o mesmo edificio como o Museo da Ciencia MIT. E nós somos o pobo que dirixir o coche. Hai unha competición nacional ó final do verán, e despois hai menor tiroteo competicións ao longo do ano. E, entón, facer o adestramento de condutor días para recibir novos membros familiarizado. Os nosos días son de construción en Sábados once horas - oito horas. O xantar ea cea están coidando de, a partir do Bertucci e Beantown respectivamente. Temos unha reunión semanal e seminario, que é un curso de créditos. Que é novo dende semestre, e tamén será ao seguinte semestre, así pode cruzarse reg por iso. E despois temos o deseño, tenda, e días de CAD durante a semana, Considerando que os membros de forma autónoma Pezas CAD, da orde etcétera. Así, para eléctrica Enxeñaría en equipo temos o noso motor, sistema de alta tensión, que é executado nunha nominal 300 voltios, que inclúe motores, reguladores de motor, e baterías. Entón, temos un baixo sistema de tensión, o cal é executado a 12 voltios, que inclúe controis, PODE nós, o cerebro caixa, e no panel de control. No que se CS vai, o que facemos ten mantemento do sitio web que necesitamos facer para eventos, a adhesión cambios, novas imaxes e material de PR. E despois temos o código que controla a coche para o noso control de tracción, lanzamento control, control panel, vetorização de torque, e sistemas de freada regenerativa, que realizar normalmente en MATLAB, Simulink e LabVIEW. Diga-lle un pouco sobre o coche. Polo tanto, é de preto de 500 quilos. É regras limitados a 85 quilowatts. Ten 2 EMRAX 207 motores na atrás, un para cada roda traseira. Ten baterías custom-built desde células A123 bolsa prismáticos, nun total de 300 voltios e 5,6 quilowatts-hora. E é de accionamento directo con unha relación 2,64-1 unidade. Aquí están algunhas fotos que tomou del en competición. Aquí está o cono de volta, nariz, e aquí están os motores, os grandes discos negros debaixo da mens et manus. Aquí está unha foto que eu puxei fóra do noso sistema de competición. E esta é só a comparación do noso coche para un par de coches dispoñibles no mercado, como a KTM XBOW, Ariel Atom, e Caterha M 7-280. Se está familiarizado co prezo, poder tirar peso, dólares por cabalos de potencia, dólares por par, eo noso coche sopra-los todos para fóra da auga. Se ten algunha dúbida, anota esta dirección de correo electrónico. Tire nos un correo a fsae@mit.edu. Estamos felices en falar calquera cousa que quere. Estudantes de Harvard son do tipo da minoría no equipo. Se ten algunha dúbida sobre que faga disparar un correo electrónico, feliz de falar, e eu vou a cabeza de volta a David. Grazas. Eu aprecio iso, persoal. [Aplausos] DAVID Malan: Ansel pasou o verán traballar coa xente aquí no campus en CS50 este verán. E, ademais de traballar en cousas como as lámpadas de binarios, en realidade realmente abriu nosa eyes-- ea miña en particular-- para o que realmente a intersección de non de hardware e software pode ser. En realidade, unha morea de cousas que só excursionou-lo a través de, en última análise creado en software, e logo, en definitiva, fabricado no mundo real en hardware. Entón, se vostede está interesado en explotar aquel cruce, quizais levar ata ese grupo. Agora, con todo, aqueles de vostedes que son fans de tecnoloxía, e os produtos de Apple en especial saber que hai eran unha parella de anuncios onte. Pero pensamos en mostrar vostede que saíu uns días antes de que pode non ter visto. Jørgen EGHAMMER: Vostede sabe, xa nalgún tempo algo vén que cambia o xeito no que vivimos. Un dispositivo tan sinxelo e intuitivo usalo se sente case familiar. Presentando 2015 Catálogo IKEA. Non é un libro dixital ou un e-book, é un libro-book. O primeiro a notar é ningunha cables, nin mesmo un cable de alimentación. O Catálogo IKEA 2015 vén completamente cargada, ea duración da batería é eterna. A interface é de 7,5 por 8 polgadas, pero pode expandirse a 15 por 8 polgadas. A navegación é baseada en toque táctil tecnoloxía que realmente pode sentir. Contido vén preinstalado vía 328 páxinas en alta definición de inspirar ideas de decoración para casa. Para comezar a navegar, basta tocar e arrastrar. Dereita a esquerda para mover á fronte, esquerda a dereita para moverse para tras. Teña en conta outra cousa? Está seguro. Sen lag. Cada páxina cristalina cargas instantaneamente, non importa o quão rápido rolar. Se quere ter unha visión xeral, só Manteña-o na palma da súa man, e usando só o polgar, Velocidade navegar polo contido. Se atopa algo que quere gardar para máis tarde, pode simplemente marcar. E mesmo se pecha a aplicación, pode facilmente atopar o marcador novo. Incrible. [Risas] [Aplausos] Entón, iso nos leva a a fin de semana un. Algúns anuncios agora. Así, o corte está en progreso. Ir a este URL aquí nalgún momento entre hoxe e venres ao mediodía realmente especificar se está entre aqueles menos cómodo, máis cómodo, ou algures no medio. Este é normalmente un deses cousas que só tipo de saber. E, de feito, aqueles que son menos cómodo probablemente sabe que logo, aqueles de vostedes que son máis cómodo saber que logo, e, de novo, se non está seguro de que daqueles baldes caer está probablemente nalgún lugar no medio. Pero a certeza de que pode cambiar despois de algunhas semanas de ser necesario. Mentres tanto, para a próxima semana non comezarmos seccións por si só, pero seccións super, que están abertas a todos os alumnos. O próximo domingo nun local para ser anunciado na páxina web do curso teremos un para os menos cómodos, , Así como a unha os máis cómodo. E aqueles nalgún lugar entre pode escoller cal dos dous, ou ambos, se o desexa, para sentir-in on. E o foco dos será, en definitiva en C, que nós imos seguir a nosa conversa de hoxe. Problema definir 0, con todo, é espero que nas súas mans. Oficialmente debido mañá, Xoves, ao mediodía. A menos que gañar cartos con un dos seus cinco días de atraso, que traería ata o venres ao mediodía. Conxunto de problemas 1 mentres se publicado na páxina web do curso. E esta será a nosa primeira incursión como unha clase en C. E ese conxunto de problemas de especificación pode oriente-lo por medio dun monte de a mecánica do que Comezamos a falar sobre o luns, e imos seguir a falar hoxe. C, Linux, o CS50 aparello, todo isto esperan por ti na especificación. Horario de atención mentres están en marcha, na comedor de graduación. Enfrontamento esta URL aquí para ver o axenda para esta noite e mañá, Se desexa participar. Preguntas Non obstante, para que teñen a oportunidade de facer preguntas de forma asíncrono, 24/7, entende que é non limitando a seccións e oficina horas, senón esta ferramenta aquí, CS50 Discutir ese URL será o de curso en liña software BBS, a través do cal pode facer preguntas de compañeiros e tamén persoal. Polo tanto, teña presente que o recurso tamén. Mentres tanto, unha tradición comeza este venres. Como ten que ter hano descifrar desde video teaser do mércores pasado, temos unha tradición máis toda venres durante o mandato de levar preto de 50 alumnos e funcionarios dun restaurante local chamado Lume e xeo, na que estamos tipicamente acompañado por algúns ex-alumnos ou amigos da industria xeralmente para aspirar para facer unha gran clase sentir pequeno. Polo tanto, é un xantar completo casual. Un grupo de nós, o equipo especialmente, xogará cadeiras musicais e falar cos alumnos sobre 50, a vida fóra de 50, vida no futuro, o mundo real, Estou falando sobre as oportunidades de emprego cos amigos na industria. Entón, se quere unirse a nós este venres, a cabeza a este URL aquí. O espazo é limitado, pero imos facelo recorrentemente ao longo prazo. Xefe alí para cs50.harvard.edu/rsvp. E se non entrar en esta vez, non se preocupe. Imos facelo de novo en Nas próximas semanas tamén. Polo tanto, esta é a imaxe pintamos a semana pasada, e xa debería ser meter na ata agora. Pero imos tentar conectar iso agora para o que imos facer hoxe e de aí en diante. Podo ter un voluntario? Todo ben, ou varios. E aquí na final, coa camisa azul. Imos cara arriba, que o seu nome? Alana: Alana. DAVID Malan: Alana. Entón Alana, por só un moment-- bo coñecer você-- vai desempeñar o papel desta función aquí. O bloque vermello temos chamado, ata o momento, unha función. Entón o que eu estou indo a ir fronte aquí e ofrecer Alana é un pouco tag nome, para facer claro que o papel que está xogando. Entón ten que ser o bloque digamos. Se quere ir adiante e poñer isto no. E nós imos manter esta super sinxelo. Se o obxectivo en cuestión é simplemente agora a aplicar con Alana, este chamado dicir bloque, aquí está como vai funcionar. Eu have-- imos chamalo un argumento ou parámetro, é realmente só unha folla de papel en branco. E é branco ao tipo de ser unha reminiscencia da caixa branca na que pode escribir palabras. Mentres tanto, eu estou indo a ir aquí. Eu estou indo a ir adiante e escribir H-E G L-O - comas mundo. E agora eu, como di o programador, non realmente sabe dicir algo. Podo chegar coas palabras, pero eu non necesariamente sei como me expresar verbalmente ou na pantalla. E así que eu vou que facer é levar esta peza de funcións, cuxa input-- ou argumento, como imos chamalo, Eu teño escrito sobre este anaco de paper-- e eu estou indo a terceirizar. E, de feito ese é o papel que funciona dunha linguaxe de programación pode xogar. Algo parecido coa palabra bloque pode ser terceirizado para alguén que realmente sabe o que ela ou el está falando. Entón, se vai pasar por riba aquí só por un momento, Vou pasar esta entrada Alana, e pedir que di iso de entrada. Alana: Ola, mundo. DAVID Malan: É iso. Así que hai unha función. Agora podemos toma-lo un pouco máis, podemos dar un paso adiante aquí. Por iso era claramente por baixo do esperado. Entón, imos agora converter isto en algo un pouco máis sofisticado. Entón, iso, por suposto, é a nosa versión C. Polo tanto, agora se quere ter que un fóra, que etiqueta nome fóra, e imos ter que poñer nun novo nome. Pero, fundamentalmente, está interpretando o mesmo papel, iso só acontece a chamarse printf agora. O artigo é, por suposto, vai probablemente ser-- tal como se underwhelming-- será o seguinte. Agora é o printf función. Eu son o chamador ou a programador, que quere ir sobre os ombreiros de persoas no pasado como, que xa descubrín como para realmente escribir algo. E así, neste momento, no canto de dicir que imos realmente usar nosa pantalla aquí. Entón, se quere intensificar aquí, eu vou para pasar de novo esta como entrada para o meu amigo printf. Se puidese ir adiante e imprimir iso na pantalla, simplemente debuxando co dedo sobre a pantalla negra. Excelente. Todo ben, entón unha morea de suspense para como que ía xogar fora. Entón agora imos levar as cousas ata un entalhe final, se puidésemos, como segue. Polo tanto, este é un programa C como se dixo a última vez. E iso só fai o que fixo, imprime en pantalla, Ola, mundo. Aínda que non haxa claramente un monte material de distracción alí enriba. Pero imos levar as cousas por riba de un entalhe e introducir esta versión, que recordan foi a terceira versión acabamos coa última vez. E agora non hai claridade dous usos de printf. Hai dúas chamadas a Alana neste caso para printf, pero hai tamén unha chamada a outra función. Que a función claramente? GetString. Podemos conseguir un voluntario? OK, imos cara arriba. Cal é o seu nome? JAVIER: Javier. DAVID Malan: Javier, imos alí cara arriba. Así, o papel de Javier é en este anaco de papel. O que eu vou chamar xenericamente s. Agora, esta é unha variable, é do tipo cadea, como se desprende polo que a segunda liña do medio aí. E gustaríame que para ir buscar-me unha corda. Especificamente cabeza para abaixo para orquesta sección e obter-me o nome de alguén, e volver cunha variable que contén ese valor. Pode ser quen ti queiras. Aquí imos nós. Todo ben, Javier é escribindo o nome. Todo correcto. Todos podemos probablemente imaxinar como iso vai xogar fóra. Nós quizais estea belaboring o punto de que unha función está facendo, pero aínda así moitas grazas. Entón Javier volveu esta cadea aquí, o que, non podo ver, Jonathan é a cadea que obtivemos. Entón, agora que eu estou indo realmente para facilitar a Alana aínda é algo un pouco diferente. Porque nesta versión do programa, en primeiro lugar, hai o seu nome. Así, o primeiro argumento Eu teño proporcionar Alana con será literalmente o seu nome. Todo ben, tan sinxelo coma iso Eu ía entregar iso a ti. E mentres eu escriba o preto argumento, se quere ir adiante e escribir este na tarxeta, imos adiante e facer o último exemplo aquí para facer limpar o que está en definitiva, ten que pasar. Entón diga o seu nome, gravala-lo cara arriba se non lle importa, só para que temos espazo para unha segunda liña. Porque a última cousa que eu vou agora fornecer-lle non unha, pero dous anacos de papel. Todo correcto. H-L-L-L-S comas e, a continuación, unha liña en branco. Entón o que eu estou a piques de entregar Alana agora é algo un pouco diferente. Non só ela está a recibir este, onde encher o baleiro representa que percent-- cal foi o espazo reservado estamos a usar? Si, entón por cento s. Mentres tanto, eu vou pasar ela nun segundo argumento, que é precisamente o que Javier recuperado dende Jonathan. Entón deixe-me dar-lle os dous. Se desexa, vai adiante e imprimir o efecto. O que está pasando en definitiva, agora é, Alana novo está facendo o papel de printf. Javier estaba xogando o papel GetString. Entón esa será a súa lembranza. E, finalmente, o que está a suceder, a pesar de este hello-- si ir adiante e vírgula. Alana: Recibín este aínda ou non? DAVID Malan: Si, recibiu os dous á vez. Así, a idea é que agora pode pasar páxina para xestionar a segunda destas dúas entradas. Polo tanto, esta é só a martelar a apuntan que, aínda Alana executado esta liña verde aquí, e entón Javier fixo iso para nós e volver para me algo imos chamarlle s, pero foi realmente só aquel anaco de papel do seu propio. E agora Alana fixo esta terceira liña. E a pesar de todo isto parece tan incrible enigmática quizais a primeira vista, é realmente É tan sinxelo coma iso. Pasando entradas ao redor, obter resultados, tanto sendo entregado físicamente atrás algo, ou ver un efecto colateral deste xeito. Algo visual escrito na pantalla. Entón, imos adiante e gracias Alana e Javier, que estaba aquí debaixo, para unirse a nós aquí enriba. [Aplausos] Entón agora imos tomar como certo o quão simple todo isto podería ser. E imos seguir a verdade facer algo no código actual. Entón, na pantalla aquí está un screenshot do así chamado aparello CS50. E se tivese que no, como un 02:00 do mércores pola tarde, explicar a algún amigo CS50 que o aparello é, como definiría nunha frase? Calquera frase? Si? ALUMNO: É como un programa que fai que o ordenador de todos executar co mesmo sistema. DAVID Malan: Good! É un programa que permite que todo o mundo ordenador para realizar co mesmo sistema. É unha especie de seu propio exemplar dunha operación sistema que pasa a chamarse Ubuntu Linux. E é executado de forma eficaz dentro un diálogo no seu propio Mac ou PC, para que este camiño certo para fóra da porta Na 1 ª semana, todo aquí na clase ten acceso ás mesmas ferramentas, a mesma configuración, e non hai ningunha curva de aprendizaxe específica a un Mac ou PC en particular. Agora abrimos, dentro do CS50 aparello o luns, aquí neste programa. Acontece a chamarse Gedit. Pero iso é realmente só un editor gráfico. É algo así como o bloque de notas ou texto Editar en Windows ou Mac OS, respectivamente. E eu propuxen que houbo realmente tres pezas importantes para esta pantalla. A parte superior é onde ía escribir o seu código. E é aí onde pasamos gran parte do noso tres exemplos na clase de luns. O fondo chamamos o que, este diálogo negro, non? ALUMNO: Compiler? DAVID Malan: Compiler nós acceder por medio desta xanela. Pero en xeral. Si, era só unha fiestra de terminal. Este é un termo antigo que era só describe esencialmente un chiscar rápida, que anos adoitaba ser en un deses grandes monitores CRT estilo. Pero hoxe en día é unha especie de virtual no software. E as fiestras de terminal permitiranos introducir comandos. É unha especie de versión simplificada da interface de usuario ou interface de usuario. Non é unha gráfica UI ou GUI, é unha interface baseada en texto ou unha interface de liña de comandos. E de feito é aí que, en última instancia Eu era capaz de escribir un código. Xa que eu escribira algún código, porén, lembro que eu usei este comando. E, como o nome tipo de indica, esta me permite facer unha programa chamado Ola. Pero o que realmente está facendo? Ben make estaba tomando meu entrada, o meu código fonte, e convertela-lo para o que, en definitiva ,? Código obxecto. E código obxecto é só unha fantasía forma de dicir ceros e uns. E, a continuación, xa que eu quería para realizar este código obxecto, Unha vez eu quería pasar como entrada os ceros e uns no meu ordenador de cerebro, o chamado CPU ou a unidade de procesamento central Eu tiña que executar o programa. Pero non foi un simple o luns como só un dobre clic algún icona. Que en vez que eu teño que facer, a fin de realizar un programa? Que foi segundo mando? Estou escoitando un pouco de barras? Si, si? ALUMNO: Dot corte e o nome do programa. DAVID Malan: Exactamente. Dot barra eo nome do programa. Agora o que significa isto? Ben dot é só un xeito misterioso de dicir directorio actual. Sexa cal sexa o cartafol que está é como referencia, é representado como punto. A barra é só o que xa viu en Mac OS e Windows hai anos, é un separador entre un directorio ou cartafol eo resto dalgún nome. En Windows isto ocorre para ir cara atrás, en Linux e Mac OS pasa a ir á fronte. Pero é só a ficha, polo que é só un detalle sintático desinteressante. A parte suculenta do curso é o nome do programa, Ola. E iso é o que fan creou para nós. Reproducirase o arquivo para nós. Pero como chegamos a ese punto? Imos agora pedirlle ao pregunta, o que foi realmente pasando aquí, polo menos con relación a algunha desta sintaxe? Así, nunha frase máis ou menos, como é que imos explicar afastado Nesta primeira liña que se destacadas en verde? Que foi que a primeira liña facendo, no que se refire ao meu programa? Si? Estudante: [inaudível]. DAVID Malan: Diga iso de novo? ALUMNO: Ata e descargar funcións pasadas [inaudível]. DAVID Malan: Good. Ata, eu non vou dicir descargar, pero digamos incluíndo funcións que a xente ter escrito no pasado. E esas funcións son aplicadas nalgún lugar no meu ordenador. Alguén escribiu un ficheiro anos, e ese arquivo está nalgún lugar dentro do CS50 aparello, ou no meu disco duro de modo máis xeral. E así, esta liña é esencialmente dicindo: ir atopar o ficheiro, E / S estándar dot h, e copiar e pegar o seu contido aquí na parte superior do meu arquivo para que eu non teño que facelo manualmente min. E entre as pezas máis suculentas dentro que ficheiro que dicía ser o que función? Cara a unha función que nós dixemos foi declarado ou mencionado en E / S estándar dot h probablemente? Printf, non? Non escribimos sobre printf Luns, el só existiu. Moi parecido Alana acabou encima do escenario e ela só existía e sabía como deseñar algo na pantalla, de xeito que printf existir durante moitos anos. E así é como acceder a ela. Agora, se imos pasar aquí, principal era que análogo dixo á peza de puzzle chamado cando premendo bandeira verde no mundo do scratch. É só unha especie de nome estándar que os seres humanos Decidiu representaría o estándar punto de entrada para un programa. O anaco de código de programación que se executa por primeira vez. Mentres tanto, estas claves son como o tipo de formato curvo de moitas destas pezas rabuñar amarelas. Eles tipo de encapsulado un conxunto banda de instrucións xuntos. Por iso, só unha especie de conexión entre as algunhas funcións relacionadas. printf, por suposto, é unha función que imprime en pantalla, como acabamos de facer. E eses parénteses? Como define-- Aínda que teña nunca programou antes, pero só con base agora un aumento espero que a intuición, o que son os parénteses facendo por nós aquí? Ou o que están arredor? Si? ALUMNO: Están dicindo que vai imprimir con printf. DAVID Malan: Si, están dicindo que vai imprimir con printf. Ou, máis xeralmente, son arredor das entradas para a función. Entón, ten case pode pensar destes parénteses como o metal clip nesta portapapeis. É o que está seguro, é o que se será usado para proporcionar argumentos para a función, no que Neste caso chámase printf. Así, en xeral, case calquera xa que chamar a unha función, veremos un par de parénteses. Quizais con algo nel, como agora, quizais nada nel. Pero é aí que colocaría as entradas ou os chamados argumentos a unha función. Aquí está un tal argumento. Eu destacou todo entre as comiñas, pois verifícase se neste linguaxe chamada C, cando pretender representar unha string-- que é unha palabra ou unha frase ou un paragraph-- ten que cerca-la con comiñas dobres. Non citas simple, comiñas dobres. E iso é o que eu fixen aquí. Mentres tanto, hai un mal cheiroso símbolo ao fin alí. A barra invertida n. O que nós dicimos que representou? Si? ALUMNO: A nova liña. DAVID Malan: Nova liña. Certo, non xeralmente prema Intro cando quere que o programa para cuspir unha nova liña. Pola contra vostede diga a el explicitamente con esta peza reconhecidamente arcano de sintaxe, barra invertida n, que quere unha nova liña para ir alí. Finalmente, o punto e coma. Nós realmente non falar moito sobre iso, e, de lonxe, esta será a ruína dalgúns da súa existencia para o primeiro problema definido, cando só non entendeu esqueciches algo tan estúpido como un punto e coma. E xeralmente colocándose a non vai resolver este problema. Pero o que está facendo para nós, diría? Estudante: [inaudível]. DAVID Malan: Sentímolo? Estudante: [inaudível]. DAVID Malan: Finalizando un comunicado. É máis ou menos como o período en o fin dunha frase Inglés, Considerando que, neste idioma C está rematando un comunicado. Unha instrución de programación código que só quere dicir, Estou satisfeito con iso. Agora conta que é o único aquí. Entón non quere entrar en o costume de poñer puntos e comas despois de cada paréntese pechada. Por exemplo non hai ningún xunto a anular, e nós imos volver no futuro para o medio baleiro. Pero neste caso o printf é unha función, é unha declaración de que está a ser usado, e por iso queremos ter que terminal ao final do mesmo. E eu estou intencionalmente pegando no C. E francamente unha morea de linguaxes como C, C ++ Java, JavaScript, e calquera número de outras linguas ten unha morea delas tipo de detalles sintácticos. Isto, por suposto, se é novo para programación realmente te enganar. E vai, marcar meu palabras, algúns de vostedes van ter esa experiencia en horario de oficina ou tarde Noite traballar nalgún p-set, onde seu programa maldita só non compila, el non é executado, ten ningunha idea o que está mal, parece completamente loxicamente correcta para ti. E é porque se esqueceu algo como bater un punto e coma ao final da liña de algúns. Pero estes son os tipos de cousas que se Vai aprender inmediatamente para ver. E, de feito estas son as cousas que e TF da do CA ten foi unha especie de adestramento para ver moito máis rápido do que. E así, esta é só a dicir, como mergullo no conxunto de problemas 1, especialmente, non se sente frustrado por iso. Así que tipo de aclimatar ao mundo, ten comezar a ver cousas que non pode ver a primeira vista, esta primeira semana. Así, o código fonte é algo parecido. Queremos pasalo a o chamado compilador. E iso compilador como dixemos ofrece saída coñecido como código obxecto, o chamado ceros e uns. Pero a partir de aí, o que iso nos dá? Ben, iso dános estes patróns. E unha vez máis o seu ordenador, o Intel inside, entende estes patróns de ceros e uns. E ás veces o estándar representa un número decimal real como vimos a semana pasada, por veces, representa unha carta como vimos a semana pasada, por veces, representa unha instrución, como imprimir algo en pantalla. Entón printf para instance-- pero si, deixe-me volver atrás. Temos que chegou a tomar para concedida que estes ceros e uns son producido por esta orde make. Pero make non é un compilador. Facer non é a cousa no medio que está producindo os ceros e uns. Prefire facer é só un moi cómodo programa chamado cuxo propósito na vida é, esencialmente, para descubrir como compilar o seu programa. E nós usalo nestas primeiras semanas, porque só nos salva unha morea de problemas. Pero o que facer é realmente facendo cando compilar Ola, é, como se dixo a última vez, é mirando no seu disco duro ou no cartafol actual, para ficheiro chamado que, ao parecer? Hello.c, non? Isto é só unha especie de convención. É arbitrario, pero esa é a forma como as cousas son. Fai, se acaba de indicar o nome dun programa que aínda non existe, que vai mirar para o código fonte nun ficheiro, por defecto significa ola.c. E se atopar, xenial. Vai converter esta fonte código en código obxecto para ti. Pero cada vez que eu prema Intro tras executar o make Ola, Vostede recorda de ver unha última vez moi longo e secuencia enigmática doutras letras brancas e caracteres na pantalla? Ben, iso foi a orde real, o compilador real, que estaba a ser executado. Así, o compilador real, imos utilizar a maioría dos do semestre é algo chamado clang. Algúns de vostedes poden usar Visual Studio antes, ou GCC, ou calquera número de outros compiladores. Usaremos clang. E clang permítenos realmente converter que o código fonte do código obxecto. O que isto realmente significa na práctica? Ben, deixe-me entrar nun dos miñas carpetas de última hora. Dentro do aparello CS50. E deixe-me ir adiante e crear esta mesmo arquivo, inclúen estándar I / O punto h. Void main Int. E nós imos voltar no futuro como ao que int medios e que significa baleiro. Pero, por agora, imos facer Ola barra invertida mundo n, Así como fixemos no taboleiro. Déixeme gardar este ficheiro chamado ola.c. E agora, se eu queira compilar este Eu could-- me deixe zoom prazo em-- Ola facer entrar. E esta foi de novo esta liña moi enigmática. Pero agora, polo menos, unha palabra probablemente salta en ti. Clang é nesta liña que vimos antes. Agora hai unha morea de outras cousas francamente que imos trasfega as mans no para hoxe. Pero hai algúns subconxuntos, algúns personaxes aquí que son de interese. Pero eu estou indo a ir adiante e facelo. Eu estou indo a primeira carreira Ola, só para probar que este está a funcionar como era luns. Pero agora eu vou eliminar o programa. E así como tivemos estes nomes curtos última vez, a orde para a eliminación algo é rm, eliminar entrar. Está indo a obter un cuestións moi enigmática. Difícil de crer que se pode facer mesmo esta pregunta difícil de entender. Pero eliminar Ola ficheiro regular só medios quere borrar Ola. E podo ir adiante e escriba y para si, Intro, e agora ela se foi. O que isto significa agora, se eu borrar miña pantalla, é que, en vez de que fai vostede hello-- Sabe, eu estou quedando bo niso. Eu estou indo a executar o compilador min. Eu non teño un programa para descubrir o que o meu ficheiro chámase. Escribín ola.c, I sabe o que se chama, Estou claramente capaz de escribir isto. Entón, eu estou indo para adiante e non clang ola.c Intro. Parece funcionar. E non hai ningunha saída adicional, porque clang é o compilador. É o que está convertendo a código fonte para ceros e uns. Entón, se eu fago agora dot reducir Ola Intro, hm. Nova mensaxe de erro hoxe. Entón bash é só o nome do palpebrar ventá que estamos a usar. Isto é unha simplificación groseira, pero de momento isto é todo o que é, é o poder piscando. E é por iso que está berrando coa xente. Ningún ficheiro ou directorio é un pouco máis simple. Pero, certamente, eu fixen este código obxecto. Pero o problema é que, se eu escribir o comando para consultar o contido deste directorio, que é o que? ls para lista. Hai unha morea de cousas aquí, algúns dos cales viñeron co aparello, como a miña carpeta Desktop, Descargar cartafol, cartafol Dropbox, e todos estas cousas. Pero o que é interesante é ola.c, que Eu creei un momento atrás, con gedit. E o que é o máis estraño mirando nome aquí, quizais que non fixo vexa última hora en todo? a.out, non? Entón, de volta ao día, el se decidiu que só cando vostede compilar un programa , Por primeira vez, e non especificar o nome dun ficheiro, imos chamalo a. E a.out significa só que esta foi a saída do compilador. Polo tanto, é un nome horrible para un programa. Pero por esa lóxica, punto para cortar directorio actual, cortar a.out, debe dicir que hai, de feito, Ola meu programa mundial. Agora un pouco quentar exercicio tamén. Se eu queira cambiar o nome desta arquivo, acontece que mover un ficheiro dun nome a outro. A.out Entón mv, e entón eu pode chamalo Ola Intro. Polo tanto, este é un comando Linux. DOS tiña iso hai uns anos, O Windows ten unha fiestra de terminal dalgún tipo que parece así, Linux e Mac ordenadores teñen este poder piscando. Aínda que a maioría de nós probablemente raramente, ou nunca, usalo. Pero o que eu teño feito é realizar un programa, cuxo nome é mv, e eu teño sempre que dous argumentos, por así dicir. Dúas entradas. a.out é o nome orixinal. Ola é o novo nome. Entón, se eu agora facer corte de punto Ola, Intro, o que hai. E se eu fai dot a.out barra, o que espera que eu debería ver? Bash, non existe tal ficheiro ou directorio. Porque eu só renomeou. Entón, iso leva un pouco de tempo para se acostumar. Pero o conxunto de problemas 1 especificación será verdadeiramente soster a súa man algunhas desas minuciosa. Porque este é un completo distracción intelectual do máis interesante ideas en man, que é, en realidade, creando algo fóra do código. Pero imos facer unha modificación agora a este programa. Lembre que a última vez que fixen algo así, printf, diga o seu nome. E, de feito nós só fixo iso na pantalla grande por alí. E entón eu fixen cadea s queda GetString paréntese aberta, preto paréntese. E paren só taquigrafia notación de corchetes. Entón non GetString tomar calquera argumentos? Non hai entradas Non, pero precisa dos parénteses, porque iso é o que demarca a convocatoria dunha función. Entón, eu estou indo a ir adiante e tratar de realizar o compilador sobre este programa agora. Clang ola.c porque eu non cambiou o seu nome para o momento. E eu teño unha morea de erros. Imos reducir aquí. Se eu rolar para arriba de novo, como dixen a última vez, ao primeiro, mesmo erro que eu teño a última vez. Na liña 6 do ola.c eu tiven unha secuencia de identificador non declarado, quero dicir estándar en? Non. Porque o erro xa fixen nesta programa, se recorda a última vez? Si, necesitamos da chamado Rodas pequenas que nós imos usar só por algunhas semanas. Pero eu teño especificar que tamén, nalgún lugar dentro do aparello, é un arquivo que escribimos só uns anos. Dentro dos cales son funcións como ao parecer GetString. Polo tanto, agora se eu volver aquí, aumentar o zoom, e re-executar clang ola.c. Droga, outro erro. Pero nós non vimos que antes. Esa é un pouco máis esotérico para descubrir. Pero esta é deliberadamente na pantalla, porque quería contar esta historia. Cando compila ola.c, así como a imaxe de antes suxerido, está convertendo só que código fonte para ceros e uns. Agora o equipo CS50 fai uns anos escribiu CS50.h, e un arquivo correspondente, CS50.c. E nós, hai uns anos, compilou os ficheiros nun arquivo que pasa para ser chamado CS50.o. Ou pode ser renomeado unha algunhas cousas diferentes. Pero iso é un xeito sinxelo de pensar sobre iso. Entón, nós compilamos CS50 da biblioteca en ceros e uns. Pero en ningún lugar que eu especificada que quero xuntar os ceros e aqueles para a miña Ola mundo programa cos ceros e uns que o persoal CS50 creei hai uns anos atrás nun programa completo. Todo o que eu especificar por escrito ola.c clang é compilar ola.c. Non contei para clang enlace nos ceros e uns que o persoal CS50 creado para ti hai algún tempo. Por iso é fácil de resolver, trazo l para enlace, CS50. E nós imos volver ver esta en pouco tempo unha e outra vez. Pero teña en conta o momento non houbo queixas. Polo tanto, agora se eu corro barra dot Ola, agora está a traballar. A pesar de que é un pouco erro sempre que eu só recriou o ficheiro? a.out. Entón deixe-me recuar por un momento. O programa que acaba de compilar ten as tres liñas de código. Cando eu execute Ola mundo, Ola un momento atrás, eu non vin o seu nome. E iso é porque eu execute o versión antiga do programa. Pero se eu, de feito, realizar dot a.out barra Entre, diga o seu nome, Rob, Ola, mundo. Hm. Isto é un tipo de erro. Probablemente quería dicir Rob, non? Entón, cal é a corrección aquí no código. Estudante: [inaudível]. DAVID Malan: Exactamente. Entón eu só teño que facer esta emenda definitiva por iso que eu estou pasando nun espazo reservado, como un encher o baleiro, como fixemos hai pouco. Pero por cento s é agora que encher o baleiro. Entón finalmente imos revelar unha última detalle para que non hai máxica. Eu estou indo a ir adiante e se librar de hellow. Eu estou indo a ir adiante e se librar de a.out. Entón agora eu teño ningún programa, só o meu código fonte. E eu estou indo a executar un algo máis de mando, clang trazo o Ola ola.c trazo LCS50. Agora iso está empezando a sorte de ir por un oído e sae polo outro, quizais. Pero só desmembrar o que este fai. Clang é o compilador, LCS50 trazo deliberadamente ao final fai o que nunha frase? Ligazóns á biblioteca CS50. Agarra os ceros e aqueles que o equipo fixo e abarrota los no meu propio programa. Así, a última cuestión en apreciado é, o que é o trazo Ola probablemente facendo, mesmo se nunca ver esta sintaxe antes? Producir un programa que é non nomeou o a.out estándar. Pola contra, se chama Ola. Polo tanto, agora non hai a.out. Non hai tal ficheiro ou directorio, porque eu dixen explicitamente chamar este programa Ola, de xeito que Agora podo escribir un nome como este e telo comportarse. Agora, a verdade, neno é que desinteressante para ter para lembrar de todos os que minuciosa pouco, non? Entón, imos adiante e librarse Ola de novo. E imos agora volver a un mundo en que simplemente dicir Ola facer. Pero esa é a maxia que facer está facendo por ti, que é o aburrimento que que está facendo para ti. E, como os nosos programas e problemas se fan máis complexos, facer vai realmente ser o seu amigo. ¿Por que non moito tempo a partir de agora imos ter programas que están escritos non cun ficheiro, pero varios ficheiros, e facer pode automatizar o proceso de compilando todo isto para nós xuntos. Entón agora imprimir. printf está dentro deste arquivo, estándar I / O punto h, que xa vimos antes, pero hai máis para printf do que iso. Non hai barra invertida n, pero hai tamén unha morea de outras secuencias de escape. E secuencia de escape é só un xeito elegante de dicir algo que comeza con unha barra invertida, non unha barra, unha barra invertida e fai algo especial. E non vou me debruzouse sobre a maioría destes, pero por que hai barra invertida comiñas dobres, Que pensas? Por que hai esa secuencia estraña de caracteres, comiñas dobres barra invertida, por que pode que pode ser útil? Estudante: [inaudível]. DAVID Malan: Exactamente, non? Debería de volta para o noso programa Ola Mundo que vimos algunhas veces agora, cada vez que vimos que Ola mundo programa tivemos comiñas dentro de que é Ola comas barra invertida mundo n. Pero pensar a si mesmo, E se realmente quería imprimir unha comiñas? O seu primeiro instinto pode ser, eu non sei sabe por que eu podería querer fazer-- aquí, que pode ser un pouco pasivo agresivo, Ola amigo. Podemos querer facer algo así. Pero por que isto agora é problemático? Ignorando as comiñas curvas de lado que keynote fixo por nós automaticamente. Por iso é problemático? Exactamente. Porque temos como 4 comiñas. Ben, o primeiro probablemente continúa coa segunda, e quizais a unha cuarta continúa coa terceira, ou, quero dicir que eu non estou seguro, nin é o ordenador vai ser. Ordenadores de novo, compiladores unha vez máis, son moi idiota. Eles só vou facer o que ti dicirlles o que facer. E se non é inequívoco que probablemente vai publicar un erro. Se non é inequívoca canto á forma de facer unha manteiga de cacahuete e marmelada bocadillos cousas estrañas poderían chegar. É a mesma idea. Agora só tes que dicir que hai algunhas outras secuencias de escape, pero nós imos chegar a aqueles antes de tempo. En esencia, estas fuga secuencias representan algo que pode non ser capaz moi facilmente no teclado, sen confundir o ordenador. Agora, con todo, temos espazos reservados no printf. Por cento d, que tamén pode ser escrito en case todos os casos por cento i, é un espazo reservado para o tipo de datos? Que tipo de valor? Un número decimal. Entón, en realidade nós imos comezar usando por cento i porque é algo máis simple, como un número enteiro. I por cento. Un enteiro que pasa a ser decimal. Porcentaxe s xa dixen foi un espazo reservado para a cadea. Que é só unha palabra, unha frase, un parágrafo, un ensaio, calquera que sexa. É unha secuencia de personaxes de algún tempo. E veremos pronto algúns destes outros. Pero por cento c é a única personaxe. Porcentaxe f é a un número de punto flotante, como un número real que ten un punto decimal no mesmo, que está claro que non un enteiro. E non hai un todo chea de outras persoas tamén. Mentres tanto, na C, e en moitas linguas, temos diferentes tipos de datos. Diferentes tipos de cuncas de vidro se quere. A copa que eu usei última vez foi para as pelotas de ping-pong, pero tamén podemos almacenar diferente valores como caracteres e cadeas e enteiros nun recipiente, como unha variable, e C ten estes. Char é o tipo de datos, o tipo de variable, no que pode almacenar un carácter. Float é un tipo de variable en que pode almacenar un número real. Int é, por suposto, para un int. E, no canto ridiculamente nomeado un longo é o lugar onde podes almacenar esencialmente un número moi longo, mesmo con máis díxitos, a continuación, unha típico tenda pode int. Pero imos voltar a iso en pouco tempo. En CS50 dot h mentres tanto o outro ficheiro de cabeceira que vimos unha parella veces en uso, hai outros dous tipos de datos que non existen en C normalmente. Un deles é de cordas, e imos ver o unhas semanas que liñas realmente están debaixo do capó. E é bool. E un bool é unha variable que só pode asumir certos valores. E só con base na última semana explicación do scratch, e, máis recentemente, C, o que imaxinar son os dous valores posibles para algún recipiente que é do tipo bool? Si e non. Un e cero. Certo ou falso. E, de feito, é o último que tende ser convencional nunha programación linguaxe, dicindo algo como verdadeiro ou falso. Mentres tanto, a biblioteca CS50 vén con unha morea de funcionalidade que o persoal escribiu para ti, ademais de só recibindo unha cadea. Nós escribir en funcións de avance que pode obter un número enteiro a partir do usuario, obter un único personaxe, obter unha boia, que é só un número con coma decimal. Obter un longo tempo, realmente gran valor para o usuario. Por iso, só vin iso en acción en forma de GetString. Pero a través destas funcións en breve será capaz de escribir programas que reciben a entrada do usuario. Mentres tanto considero este programa, e considerar como podemos agora comezar a engadir a con novas construcións. Un rápido tour rápido e despois imos ver nalgún escribir algún programas manualmente nós mesmos. A partir deste momento, se quere aplicar unha condición, non vai mirar como un bo anaco de puzzle bonito. Vai parecer un pouco máis misteriosa. Pero esta é a canónica estrutura dunha condición en C. A palabra se, dous parénteses, no interior dos cales será algún tipo de expresión booleana. Agora a barra barra no medio, é dicir no momento máis ou menos como espazo reservado código pseudocódigo. Pero, máis propiamente, calquera liña de código en C que comeza con slash slash é un comentario. É como unha nota que se pode poñer nun ensaio, impreso en papel. É unha nota a si mesmo. Non ten ningún funcional impacto sobre o programa. É unha especie de recordatorio, é a súa propia documentación sobre o que está pasando. Entón faga iso no momento é unha especie de espazo reservado para o que está dentro desas claves finalmente, vai facer algo. Mentres tanto, ten dous garfos na estrada, outra se construír como este. Pode, se, elseif, else. Agora é importante ter en conta, sobre todo se ten sido buscando por aí recursos en liña para fóra da curiosidade, ou se incorporarse un do curso de libros recomendados sobre C, vai ver que os seres humanos teñen moitas de diferentes preferencias de como de expresarse en código. Algunhas persoas quere poñer o claves como eu fixen aquí. Algunhas persoas quere poñer o rizado tirantes, por exemplo, aquí enriba. Algunhas persoas quere poñer a elses aquí enriba e logo, este aquí. Non hai ningún número de formas de escribir código, e ningún deles ten razón per se. Aínda hai algúns que son moi mal. Pero hai no-- se este é en definitiva, un debate moi relixioso. De feito, un dos máis irritantes cousas sobre ciencia da computación é como opinativo científicos da computación pode ser. E vai atopar ao longo do tempo que mesmo a desenvolver preferencias persoais sobre o xeito no que o código debe ollar. Non só se comportan, e non só crear unha saída, pero como se debe ollar esteticamente. Entón, o que imos facer é oriente-lo ao longo o camiño para, polo menos por agora, CS50 un estilo estándar que polo menos mantén as cousas uniforme e fácil de ler. Pero máis sobre os distincións antes de tempo. Unha expresión booleana en C, se quería dicir se esa condición sexa verdadeira e esta é outra condición certo, non escribir a palabra e, como faría en inglés. Vostede si usar e comercial e comercial, por razóns que vou volver. Se quere dicir ou usa dous barras verticais, que nun teclado americano adoita enriba do Enter seguinte clave para a barra invertida. E iso só quere dicir que se esta condición este ou outra condición é verdadeira facelo. Mentres tanto hai esa cousa tola, que vai ter ocasión usar de cando en vez. Pero é só unha alternativa forma de expresarse. Este, por agora, imos estipular, é só outra forma divertida de expresar se, elseif, elseif, elseif, elseif. É só formato en termos de casos, onde literalmente enumerar os valores que pode querer comprobar. Mentres tanto lazos. Vimos unha comparación de Acoitelado cun lazo. E eu vou acenar a man en o que cada unha desas cousas significa. Pero teña en conta que un loop será moi moitas veces comezan coa palabra chave para. Ou será que vai comezar coa palabra clave cando. Ou será que vai comezar coa palabra clave facer, e rematan coa palabra chave á vez. Pero o que estamos a piques de ver é as cousas máis como este. Aquí está, en xeral, en C, como pode declarar unha variable e darlle un valor. En C non basta, como en perigo, só dicir-me dar unha variable chamada algo. Ten que dicir C, e dicir seu compilador, máis en concreto, que tipo de valor que quero poñer na tixela de vidro. É un enteiro? Se é así, ten que literalmente dicir int e despois nome da variable, logo, un punto e coma. Se en vez quería corda e chamado É como eu fixen o meu código aquí hoxe, diría comas cadea s. Xa que quere darlle un valor entón podes usar o signo igual, tamén coñecida como a operador de asignación. E entenda como cada destas liñas de código ten o punto e coma ao final do mesmo. Pero, francamente, iso só parece un pouco feo. Por que eu non podo dicir ao ordenador, dar me unha variable e inicializa-lo a cero. Ou sexa, dáme un recipiente de vidro baleiro. Mentres se poida. E así unha das xuízo chama vostede Ten que facer durante o tempo estilística é, escribe o teu código coma este, é vostede tipo de limpa-lo e impresionar persoas por escribir dúas liñas como só un. E isto sería considerado en xeral, unha forma máis elegante de escribir o seu código estilisticamente. Funcións estamos naturalmente visto. Eles van ter este formato. O nome dunha función, algúns parénteses, e despois pode que algúns cousas dentro. Ou pode ver os usos de múltiples funcións lado a banda, como algo parecido a isto. Agora como unha tanxente, fai esa broma agora ten sentido? [Risas] Iso non significa que é divertido, pero non, se cadra, facer un pouco máis de sentido. Entón agora imos entrar na Aparello CS50 por un momento. E déixeme abrir unha provocación aquí. E, de feito unha das razóns para a introdución de catálogo IKEA e chiscando a imaxe do iPhone un pouco atrás era, en realidade, o lazo en conxunto feito de que só uns anos, en 2007, este anaco de código foi liberada, o que foi un dos primeiros implementación dunha parte do programa que fai o que se chama jailbreaking. Para quen non coñece, o jailbreak algo así como un teléfono ou un iPhone significa, esencialmente, figurando como facer as cousas que a empresa quen fixo iso non tiña a intención. Como quere instalar determinado software que non está na tenda de aplicacións, jailbreaking o teléfono que fai cousas como esta e moito máis. Pero o que era diversión en 2007-- e houbo decenas de versións distintas estas cousas, desde entón, en todo tipo de languages-- é que este programa aquí, chamado iUnlock, foi realmente escrito en C. E así eu tirado para arriba o código fonte para iso, só para o tipo de mostrar algúns dos as semellanzas coas construcións estamos discutindo ata agora. Agora hai moito máis complexidade aquí do que xa vimos en clase. Déixeme ir cara arriba un pouco aquí. Pero teña en conta así these-- notamos algúns coisas-- pero observar estas liñas aquí, incluíndo o estándar I / O punto h. E tudo-- liña 24, por favor-- notar E / S estándar dot h e unha morea de outros arquivos que aparentemente outros ter escrito. E, se desprazar para abaixo esta, pouco arbitraria, Repare que eu non sei como escribir todo isto aínda me necesariamente, pero non hai que. Entón, ao parecer, iso ten unha filial. E se eu rolar para abaixo un pouco aínda hai outro caso. Se eu rolar para arriba, eu creo que arredor da liña 100 que vin a. Entón, eu non estou moi seguro como funciona aínda, pero iso é un loop que vai déixeme iterado un determinado número de veces. E se eu percorrer todo o camiño para o fondo Vexo que hai unha funcionar aquí chamado principal, e algúns créditos adicionais para o seu pracer da lectura. Polo tanto, esta é só a dizer-- e poremos esta liña entre a fonte do curso código hoje-- que mesmo algúns destes dispositivos que nós tomamos para concedida, ao final do día aínda está usando estas construcións básicas que nós xa foi introducindo ata agora. Isto é suficiente daquel. Todo ben, entón agora imos realmente construír algo. Imos aló algo como ola.c, e abrir isto, imos escribir este programa aquí. Eu estou indo a ir adiante e escribir un programa chamado adder.c, cuxo propósito na vida vai ser como a miña primeira calculadora super sinxelo que engade un par de números. Non porque é un disco problema, senón porque permíteme agora amarre xuntos algunhas cousas. Entón, eu estou indo a ir adiante e inclúen E / S estándar dot h e CS50 punto h. Vou dicir void main int. E de novo no futuro imos volver a el en neste contexto e medio baleiros. E agora eu vou dicir unha cousa como printf, dáme un enteiro. E agora na miña segunda liña, como fago para expresar tal que quero declarar unha variable que vai gardar un int? Literalmente, o que eu escriba, se eu queira crear unha variable que almacena un int que diría? int a igual getInt. Por suposto, así que funciona. E só para consistencia co código que ver en liña, deixe-me cambiar isto para x, só porque x é un nome común variable de usar, polo menos en álxebra. Agora, deixe-me ir adiante e facer printf novo. Dáme outro enteiro. E agora eu vou tipo de aprender con esta configuración, Vou dicir int y comeza a getInt. E nós non usei GetInt antes, pero só como GetString vai e colle unha corda, como Javier fixo do público, semellante fai GetInt comezar a palpebrar o poder. E efectivamente espera para o usuario para darlle un número enteiro, escribindo-o e premer Intro. Agora por fin vou facer esta, a suma printf de-- e me deixe agora-- fantasía i por cento e cento i está presente i Punto de Exclamación barra invertida n. E o que pensas que eu vou poñer agora como as entradas adicionais para printf? Non quero dicir literalmente entre comiñas x. Quero clase en xe entón, e agora imos comezar a fantasía e imos supor podemos facer o que queiramos. O que quere dicir a continuación? x máis y. E, de feito, que vai funcionar. É minimamente linguaxes de programación facer entender a aritmética básica, e por iso debe de feito funcionan. Entón deixe-me ir adiante e fan víbora na miña fiestra branco e negro aquí en baixo, Intro. Liña críptica pero ningún erro mensaxe, entón iso é bo. Dot cortar víbora, me dea un número enteiro, 1. Dáme outro enteiro, 2. A suma de 1 e 2 é 3. Todo ben, entón unha ben sinxela programa, pero o que está feito? El me permitiu usar unha función chamar aquí, chamar outra función aquí, dúas chamadas a GetInt, un terceira chamada a printf, e logo usar estes espazos reservados. Polo tanto, é un pouco máis sofisticado do que a última vez. Pero e se eu queira estar un pouco máis extravagante? Deixe-me ir adiante e facelo agora. Deixe-me ir adiante e crear un novo ficheiro chamado condicións cero. E eu estou indo a gardar moito tempo para as clases de amor e basta pegar no que código como un punto de partida. E agora eu só vou poñer algo novo aquí no medio. Entón printf Gustaríame un número enteiro por favor. E todo este código está dispoñible na páxina web do curso, non precisa escriba-lo todo para fóra na aula, se o prefire non. int, e agora eu vou utilizar, no canto de x e y, Vou usar n, que é probablemente o nome máis común a un número enteiro de un programa de ordenador. E agora quero facer un pouco xuízo aquí. Vou ver se n é maior que 0, entón Vou dicir berros printf--, printf-- escolleu un número positivo, punto de exclamación barra invertida n. Peche esa. Máis eu vou imprimir printf escolleu un número negativo. Agora, antes de berrar comigo, imos realizar este programa. Deixe-me ir para abaixo aquí. E como fago para compilar un programa chamado condicións trazo 0? Fai condicións trazo 0. Tipo de un nome estúpido, mas-- caramba. OK, bo momento de ensino. Por que que romper? O que eu accidentalmente chamar este ficheiro? Pode tipo de inferir a partir da guía aquí. Polo tanto, non é malo que eu Fíxoo porque esta ocorrerá quizais para algúns de vós. Entón eu chamei meu accidentalmente 0 código fonte condición. Pero o meu código fonte por convención debe estar nun ficheiro chamado condición 0 trazo c, é dicir alí o punto c. Entón deixe-me corrixir isto. Así como o Microsoft Word que podo ir para arriba para Gardar como e facer condición 0 punto c. Agora é só para ser ordenado eu son indo para adiante e retire condición 0, o que foi a miña versión antiga. E agora imos facer facer condición 0, Intro. OK, parece bo. Condición 0, Intro. Gustaríame un número enteiro, por favor, 50, escolleu un número positivo. Agora, que tal negativa de 50? Escolleu un número negativo. Que tal momento, 0. Seguro que 0 non é negativo. Polo tanto, este é un tipo de erro lóxico. Como fago para corrixir isto? Else se n é menor que 0, faino, senón podemos ter unha de tres vías filial aquí, printf escolleu 0. Polo tanto, agora se eu executar novamente este programa, despois de compilalo lo novo co make, e agora realizar de novo condición 0, o que eu vou ver aquí é 0 dáme esa saída. Entón onde estamos indo con iso? Ben, é moi doado perder de vista do bosque para as árbores. E así nos permiten concluír con este vídeo de 2 minutos e media en definitiva, que é un pouco dun anuncio de Google, pero que en realidade é a proba que mesmo utilizando estes construción básico bloques que poden finalmente facer unha vez temos un pouco de programación ilustrado baixo nosos cinta. [MÚSICA DE XOGO] SAROO Brierley (narración): Foi hai 26 anos, e eu estaba a piques de completar 5. Chegamos á estación de tren e embarcamos noso tren xuntos. Meu irmán acaba de dicir que eu vou estar aquí, e eu vou volver. E eu penso, ben, vostede sabe, Podería moi ben só ir durmir e el só me vai espertar. E cando eu acordo á seguinte día, o conxunto de coche estaba baleiro nun tren desgovernado, unha pantasma tren me levar Non sei onde. Eu fun adoptado para a Australia, para unha familia australiana. E a nai tiña decorado miña sala co mapa da India, que puxo ao lado de miña cama. Eu acordo todas as mañás vendo este mapa, e, polo tanto, que tipo de mantidas as memorias vivas. As persoas dicían: es intentando atopar unha agulla nun palheiro, Saroo nunca vai atopalo. Eu brillou dos lugares que eu adoitaba ir, os flashes da miña familia afronta. Había a imaxe da miña nai, sentir-se coas pernas cruzadas, só observándose a chorar. A vida é tan difícil. Ese era o meu tesouro. E eu estaba mirando para Google Map e entender que non é o Google Earth tamén. Nun mundo onde podes aumentar o zoom, Eu comecei a ter todos eses pensamentos e as posibilidades que isto podería facer por min. Eu dixen a min mesmo, xa sabe, ten ten todas aquelas memorias fotográficas e marcos de onde é, e Vostede sabe o que a cidade se parece. Esta podería ser unha aplicación que pode usar para atopar o seu camiño de volta. Eu penso, ben, eu vou poñer unha punto na estación de tren de Calcuta, e unha liña de raio, xa sabe, que debe estar a buscar en torno a esta área. Eu medio que me deparei estes carrís do tren. E eu comecei a seguila, e Cheguei a unha estación de tren que reflectía a mesma imaxe que estaba en miñas memorias. Todo combinado. Eu só penso que si, eu sei para onde estou indo. Eu só vou deixar o mapa que teño na miña cabeza guía-me e levarme de volta a miña cidade natal. Cheguei á porta do a casa en que eu nacín. E andaba preto de 15 metros en torno ao canto, había tres mulleres en pé fóra, adxacentes uns ós outros. E o do medio deu un paso adiante, e Eu só penso, esta é a súa nai. Ela veu para adiante, ela me abrazou, e estabamos alí por preto de cinco minutos. Ela colleu a miña man e ela me levou para a casa e colleu o teléfono, onde tocou a miña irmá e meu irmán dicir que, vostede sabe, teu irmán ten só de súpeto apareceu como unha pantasma. E entón a familia estaba reunida de novo. Todo é todo de bo, Eu axudei a miña nai para fóra, ela non ten que ser escravizado. Pode vivir o resto da súa vida en paz. Foi unha agulla nun palheiro, pero a agulla estaba alí. Todo está alí. Todo o que temos no mundo é, ao toque dun botón. Pero tes que ter a vontade ea a determinación de querer. [MÚSICA DE XOGO] DAVID Malan: Marabillosas declaración doce só o que pode agora facer coa tecnoloxía. Imos velo a próxima semana.