>> Jason Hirschhorn: Benvido á CS50 sección, todos.
O meu nome é Jason Hirschhorn.
Eu son unha morea de TFS seu, pero unha morea de xente veña unirse a nós
estudantes, extensionistas e estudantes en liña intentando mirar a sección se
perdeu a súa sección naquela semana ou só incorporarse se quixesen
revisar algunhas material.
>> Así, de acordo co programa, que todos de que leu, correcto?
Eu vexo unha morea de acenos de cabeza.
Seccións proporcionarlle oportunidades para explotar o campo de
material nun ambiente máis íntimo, así como mergullo
actividades hands-on.
>> Entón, iso é basicamente o que estamos estará facendo cada semana.
Nós imos pasar por o que temos determinado a ser o máis importante
temas abordados na aula, e os Probablemente a máis útil, e tamén
máis probable que veña en conxuntos de problemas e en probas, e na súa codificación
vida fóra do CS50.
Entón, nós estamos indo a ir a eses temas, discutir-los, pasar por riba deles,
responder a calquera preguntas que vostedes teñen, e entón imos facer unha chea de
problemas prácticos de codificación.
>> Vós todos trouxo portátiles, o que é fantástico.
Esta é unha clase de ciencia da computación.
Con todo, moitos dos exercicios que facemos, non vai ter os seus portátiles para.
Pode facelos nunha folla de papel.
É así que está indo a facelas na quizzes.
E, de feito, esta é unha gran forma de realmente sei que como facer
algo, se non ten 50 Comproba a dependen ou Facer a confiar en nós, dicindo
cometeu algún erro.
>> Entón, vostede é benvido ao código da run.cs50.net aparato ou, o que é
outra ferramenta que permite codificar en liña, pero eu tamén recomendo, se
aínda non experimentou, usando unha folla de de papel e tratar estas prácticas
problemas nunha folla de papel.
Porque unha vez máis, que é en definitiva, o que será
pediu para facer en quizzes.
>> Entón, imos comezar co noso axenda para hoxe.
Nós imos pasar por riba de algunhas normas para nosa sección, entón imos mergullar
en matrices, funcións e liña de comandos argumentos, que é o que vostedes
Cubrimos a semana pasada, en charla e luns, eo que vai cubrir
máis de mañá.
E entón, finalmente, imos para falar pset2.
Se eu puidese ter un concerto de mans non olhei ao problema conxunto de dous
especificación.
Digamos todos.
Fantástico.
>> Imos falar sobre conxuntos de problemas un pouco, pero se ler o conxunto de problemas
especificación, que é todo o que precisa facer.
Se ler isto antes de vir a clase e sección o martes, vai
ser unha boa posición.
Podemos percorrer o conxunto de problemas, que é o que imos
para facer o final.
Nós imos pasar por a lóxica, comproba se
todos están na mesma páxina.
>> Eu quero que sexa capaz de saír o martes me sentindo moi cómodo co que
cómpre facer para o conxunto de problemas desta semana, e se non fai iso, eu vou feliz
ir despois e traballar con vostede.
Pero iso é algo que ten que facer, pero eu creo que sería moi intelixente,
só para ler o conxunto de problemas especificación de clase o martes,
que soa como unha moitos de vostedes fixeron.
>> Vou comezar por unha axenda cada clase entón vostede sabe a onde estamos indo.
Isto tamén é útil para persoas que asisten en liña, xa que cada sección
é codificación por cores, por iso, se quere vir cara atrás e só asistir a 10 minutos antes
que toda a sección de 90 minutos, pode simplemente ir á sección código de cores
e ollar para esa parte.
Entón, eu tente división las en bo módulos que permiten a ti -
se quere volver e revisar, ou outros alumnos que só son
ver unha sección para repasar -
para atopar a cousa específica que querer prestar atención para
e aprender máis sobre.
Doce.
>> Normas.
Eu son un líder FOP no campus.
Non sei se alguén fixo FOP.
Alguén facer FOP?
Unha persoa fixo FOP.
Dúas persoas fixeron FOP.
Incrible.
Entón FOP é o primeiro ano ao aire libre Programa de Orientación.
Tomamos calouros para o bosque e facer das experiencias máis máxicas de
súas vidas, correcto?
Si
Soa sobre a dereita.
>> Entón, eu só quería comezar a nosa primeira sección discutindo algunhas normas
á clase e nosa relación porque eu creo que
son moi importantes.
En primeiro lugar, como os que son a miña sección recibiron e
foi discutida en que correo electrónico, eu adoro iso.
Esta é a miña parte favorita do ano.
Eu estiven tan animado.
Estiven aquí durante horas de hoxe.
Non deixei este edificio, excepto para ir comer, porque eu amo CS50 sección,
amo ensinar, me gusta moito de traballar convosco.
>> Unha das miñas maiores prioridades, se non o meu prioridade número un, non só para
esta clase, pero incluíndo a miña outra clases e extraescolares, é
apoiar vós e axudar vostedes, e facer o meu mellor para estar seguro de que
caras teñen un marabilloso, divertido, produtivo contorno, emocionante
experiencia nesta clase.
Iso é o que eu estou comprometido.
É por iso que eu amo facelo.
Ese é o meu número de unha cousa, apoiar vós.
Se tes algunha dúbida sobre charla, o conxunto de problemas, sección,
vida, mesmo se quere falar vida, sentirse libre para chegar por favor.
>> Ten o número do meu teléfono móbil, ten meu correo
dirección, ten a miña GChat.
Pode contactar-me en calquera ou todas os que sempre, pero probablemente non vai conseguir
a resposta sempre.
Intento e volver dentro de 24 horas.
A miúdo será dentro 20 minutos ou 24 minutos.
Eu debería ter dito que para facela en paralelo.
Pero vai ter unha resposta moi rapidamente.
>> Se me texto dunha hora antes do conxunto de problemas é debido, vou calmalo
para abaixo e facer exercicios de respiración profunda con vostede, pero se aínda non comezou,
probablemente non vai rematar, e Realmente non podo axudar alí fora
aínda que eu vou probar o meu mellor.
Entón eu vou facer de todo Podo apoia-lo.
Por favor, Sinto-se libre para chegar é na sección de novo, en horario de oficina
se me ver, ou incluso do lado de fora.
Estou feliz por marcar un horario para atender e traballar con problemas
con ou pasar por riba de material.
Así que é o número un, soporte.
Vou facer todo o que eu pode apoia-lo.
>> Número dous, reunión no medio.
Polo que eu quere ser, eu son non é omnipotente ou todopoderoso ou
onisciente, entón eu non sei todo o tempo se o que estou facendo está quedando
transversalmente, a forma que eu estou ensinando a tema axuda a aprender, ou se
están confuso sobre un tema, aínda que non levantar a man ou pedirme
ou me envíe un correo-e.
Ou mesmo se, unha vez máis, están confusos sobre algo sobre o conxunto de problemas.
Se non chegar a min, Non podo saber con certeza.
Vou facer o meu mellor para a facturación en Vós, asegúrese de que todo é
indo ben, intento ensinar as cousas dun xeito que será propicio para a maioría dos
os seus estilos de aprendizaxe, pero se hai nada que eu poida facer, me aviso.
>> Ao longo destas liñas, se queres algunha axuda co conxunto de problemas, eu son máis
que feliz en axudar co conxunto de problemas.
Nós imos facer unha chea de que na dirección da segunda
metade desta sección.
Pero se aínda non leu o problema define atrás e aínda non asistiu a ruta
a través e non asistir os shorts e esperando que eu te ensinar
todo o que foi filmado en liña ou que se pode atopar en CS50
estudo, iso non é realmente xusto comigo ou con seus outros compañeiros.
>> Entón, por favor, eu estou máis que feliz en axudar vós, mais vós ten que me coñecer en
medio.
Temos toneladas de recursos para Está dispoñible na CS50.
Eu mencionar algúns deles.
Por favor, sacar proveito deles.
Se está confuso, eu estou máis que feliz para axudar explicalo las
doutro xeito, pero non é xusto que alumnos mostran-se en horas de oficina,
non comezou nada, e é Xoves á noite e están esperando
o TF para camiñar con eles a través de cada cousa para o conxunto de problemas debido
ao mediodía do día seguinte.
Ten sentido?
Unha vez máis, por favor, nos atopar no medio.
>> E, finalmente, as altas expectativas.
Eu vou estar de clasificación todo o mundo que é na miña sección, ou marcando a súa
conxuntos de problemas.
Non volveron problema definir cero ou un aínda.
Estamos moito sobre iso.
Levou moito tempo para rematar establecer seccións, e agora
podemos empezar a clasificación.
>> Vou leva-los de volta para ti o máis axiña posible.
Estes son algúns dos meus orientandos aí.
Vou leva-los de volta para ti o máis axiña posible.
E para o problema de conxunto de dous, estaremos en programar e imos comezar facelos
para ti moi rapidamente tras ti transformalo los dentro
>> Cando comeza o seu conxunto de problemas cara atrás, vostede terá puntuación, como vostede sabe de
lectura do currículo - exactitude, proxecto, ámbito e estilo puntuacións.
Tamén terá comentarios.
Os comentarios son máis importantes que as correas.
Eu creo que é seguro dicir que.
>> Puntuacións son só un número dun a cinco.
É difícil ler naqueles.
É difícil mellorar daqueles.
Pero os comentarios serán apuntar específico cousas que fixo ben ou áreas
pode mellorar e darlle algúns ideas para o futuro ou alternativa
formas de facer as cousas.
>> Entón, por favor, por favor, por favor lea a través dos comentarios.
Eu coloque unha morea de tempo en eses comentarios.
Por favor, lea con eles e non só desprazar para abaixo para o fondo do
PDF, busque a súa puntuación, ou ir en liña e atopar a súa puntuación, e despois pasar por alto
os comentarios.
Isto non é como está pode ir mellor.
Isto non é como está indo para aumentar súa puntuación final, só
mirando para as puntuacións.
Por favor, mire estes comentarios.
>> E ao longo da liña de grandes expectativas, unha vez máis, como dixen, vostede
poden ser pontuadas dun a cinco.
Dous, tres, e catro son os gran maioría das contas
vai estar recibindo.
E fives están realmente raro.
Sempre hai cousas o que podemos facer mellor.
Cada vez que codificar un programa, non hai sempre algo que me
podería ter feito mellor.
>> Entón, en vez de dicir que comeza un período de cinco o tempo en todo e fixo
todo perfecto, eu non creo que calquera de nós realmente cremos que nós - ou
Por sorte, nós non facemos todo mellorar o tempo.
Entón non se preocupe se non recibín cinco.
A cinco non mapea a un A, un catro non mapea a un B, tres non
non mapa nunha C. Isto non é como as puntuacións traballar.
>> Como David xa dixen moitas veces, en final do semestre as súas puntuacións e
entrada de min, o seu TF, reúnense e determinar a clasificación final para ti.
Pero, de novo, non é cinco, A, catro, B, et cetera.
Entón eu vou ter grandes expectativas para vós.
Vou esperar un bo problema conxuntos e eu vou dar
o producto como tal.
E non vai dicir que é indo para obter un grao peor.
Está clasificada en termos de o seu progreso de semana
cero cara ao final do curso.
>> E, finalmente, en termos de alta expectativas en clase, encántame cando
as persoas participan.
Entendo que algunhas persoas se senten máis ou menos cómodo participante.
Outras persoas están participando non levantando a man e
falar o tempo.
Pero nesta clase van ser facendo unha serie de pequenos problemas, unha morea
de mini preguntas, e, a continuación, algúns maiores problemas de codificación.
Entón, en definitiva traballar estes exercicios fóra cando facelas no seu computador ou en
unha folla de papel.
>> Pero eu tamén vou che dar algún tempo antes Alguén sempre ten que responder a algunhas
das preguntas que eu pido.
Entón por que eu vou darlle un tempo para pensar sobre iso, porque nós imos
facer as cousas de socios, ás veces, Vou esperar que todos
para ser contratado un pouco.
E por falta dun termo mellor, non probablemente será chamada fría, que
é o lugar onde todo o mundo vai ter a oportunidade pensar sobre a resposta, e, a continuación,
Eu ligo para ti, e, a continuación, vai dicir a resposta.
>> Non hai problema, ou se asustar con iso.
Xa fixen iso no pasado e atopamos que é moito máis exitoso,
tamén ler a investigación educativa no que a determinar se era ou non un
boa táctica.
É moi útil, especialmente se dar aos alumnos tempo para pensar sobre o
respostas e non sexa los só vir e dicir isto pronto de cara.
Pero se non sentirse cómodo responder, eu tamén son moi bo en
sentindo que fora, e nós non imos poñelas no lugar, especialmente en
a cámara, a pesar de ningún dos está na cámara agora.
>> Polo tanto, estas son as normas que eu teño.
Só unha cousa ao longo das liñas de atopar no medio.
Vou dar a vostedes unha morea de feedback.
Por favor, me dea un feedback ben.
Hai un sitio web, sayat.me/cs50.
Polo tanto, é un producto honesto.
Se queres dar a el durante a sección, Eu recibín un correo electrónico cada vez que isto ocorre.
Imos facer unha pausa un pouco, entón eu vou ollar a través do feedback despois.
Se ten calquera producto, por favor, deixa-me alí.
>> Se me dar feedback sobre o Q, que é marabilloso, pero este é o guía
o que fai ao final.
Pero iso será ao final do semestre para Non vou ser capaz de aproveitar calquera que
producto e transformalo en ensinar vostedes mellor.
Entón, por favor, se ten calquera producto, deixa para min.
Amo producto.
Back to FOP, temos o producto o tempo.
>> Vostede me pode dar vantaxes, cousas boas, deltas, cousas que podo mellorar.
Podes comentar as miñas roupas.
Isto non vai ser tan útil, pero é benvidos para comentar calquera e
todo.
Por favor, por favor, me dea feedback.
Eu valoro moito iso e Significa moito para min.
>> Unha norma, divertido.
Nós imos ter unha chea de diversión.
Espero que neste curso, vai ten unha chea de diversión.
Teremos doces na sección.
Haberá música.
Estaremos espero coñecer un outra algo así, entón eu quero
que este sexa un desfrute, experiencia envolvente.
>> Sei que algúns de vós xa durmiron en as conferencias que tivo hoxe máis cedo,
por iso espero que non vai ser agora o caso.
E se é o caso agora, só non ronco porque iso podería
ser trabado na cámara.
Doce.
Calquera dúbida, comentarios ou preocupacións Antes de pasar calquera cousa temos
falou?
Grande.
>> Entón, nós estamos indo a ir en matrices primeiro.
Isto é como facer un array.
Nós xa vimos isto antes.
Ten un tipo de datos, ten un nome, e entón tes un tamaño.
Ben aquí, eu creo dúas matrices.
O primeiro é un conxunto de caracteres, e ten 26 espazos.
O segundo é un array de puntuación, e ten tres
espazos de tres enteiros.
Si?
>> ALUMNO: Son todos estes diapositivas dispoñible en algún lugar para nós?
>> Jason Hirschhorn: Gran pregunta.
A pregunta era: son todos Estes diapositivas dispoñibles?
Si
Todas estas láminas estará dispoñible, e, no futuro, vou envialas a
antes sección.
Hoxe, con todo, xa que este é o primeiro semana, tivemos un inicio tardío.
Por iso, normalmente, vai ter eses diapositivas, pero elas estarán dispoñibles en liña e
Vou envialas a ti logo da clase.
Calquera outras preguntas?
>> Entón, de novo, as matrices son caixas, por falta de unha palabra mellor, que posúan múltiple
elementos dun tipo de datos, e eles están á beira do outro na memoria.
E así, unha vez máis, esta é a forma como pode facer dous tipos de matrices.
>> Entón, despois de que fixo a súa matriz que a primeira liña - puntuación int, soporte
tres, preto do soporte - vostede quere arrincar.
Quere poñer algúns valores alí.
E é así que poñer algúns valores en alí, basta escoller o indice e
escribir o número.
Imos aproveitar esta na tarxeta.
Todos poden ver?
Todo o mundo pode ver.
Doce.
>> Entón iso vai ser o meu array chamado Scores.
Como podes ver, é o tamaño tres.
Hai tres caixas de alí.
Cada un pode caber o que tipo de tipo de datos?
>> ALUMNO: Integer.
>> Jason Hirschhorn: Un enteiro nun presente.
Nós escribir decenas int, ea primeira palabra é o tipo de datos que
ir nas caixas desa matriz.
Entón, podo encaixar tres.
Por que eu teño cero ata alí na tarxeta?
Por que dicir puntuación de cero é igual a 1?
Lembre me do seu nome.
>> ALUMNO: Kurt.
>> Jason Hirschhorn: Kurt.
>> ESTUDANTE: si.
>> Jason Hirschhorn: Por que?
>> ALUMNO: Por o primeiro índice é cero, imos comezar a partir de cero.
>> Jason Hirschhorn: Entón, imos comezar a partir de cero.
Isto é exactamente correcto.
Esta é a parte confusa e viaxe vontade ti, especialmente cando se está
intentando percorrer matrices, o que imos facer de aquí a pouco.
Comezamos a partir de cero.
Entón, se eu queira referirse ao primeiro caixa, non é unha caixa.
Desafortunadamente, é caixa cero.
A segunda é unha caixa, e no presente caso, o terceiro é unha caixa de dúas.
>> E sobre o cadro tres?
Onde caixa tres é?
Ou se quero facer contas, soporte tres, franxa estreita, o que é iso?
Entón, vostede dixo que o personaxe nulo.
Outros pensamentos?
Qué é o soporte de marcar tres soporte?
>> ALUMNO: realmente non existe porque só definir como puntuación,
soporte de tres.
>> Jason Hirschhorn: Entón vostede di realmente non existe.
Nalgúns casos, cando estamos lidando con cordas, xeralmente nós imos poñer un valor nulo
personaxe no final.
Nós imos chegar a iso nun segundo.
Pero, neste caso, non hai hai unha terceira caixa aquí.
Así, a última caixa en calquera matriz tamaño é menos 1.
Entón, se temos unha matriz de tamaño n, a primeira caixa está en cero, a última é
en n menos 1.
E neste caso, non existe.
Hai algo aquí en memoria, pero non é o noso.
Non el propio.
Non pedimos para el.
Polo tanto, se tentar acceder a ela, o que imos facer algo, estamos indo probablemente para
entrar en apuros.
>> Neste caso, estou inicializar meu matriz con tres variables.
Estamos poñendo un en caixa cero, un dous no cadro unha, e tres no cadro dous.
Alguén ten algunha dúbida sobre arrincar un array?
>> Entón nós fomos ao longo deste momento.
Scores, soporte de tres, preto do soporte, que non existe.
Estamos a cero indexadas en ciencia da computación, entón comezamos a contar desde cero.
O último cadro dispoñible para nós, é a terceira caixa, pero o cadro chámase
número dous.
>> Alí en baixo, esta é unha alternativa xeito de arrincar arrays.
Así, no canto de crear unha matriz sobre liña, enche a primeira caixa e logo
a segunda caixa, a continuación, a terceira caixa, pode facer todo nunha soa liña.
Entón, nesa liña, ambas matrices.
Isto xera a mesma matriz exacta como o que creamos aquí, pero
só fai iso nunha liña.
>> Agora creamos a nosa matriz.
Normalmente, unha vez que crear unha matriz, ten quero facer algo con el, se
que é enche-lo ou facer as cousas de fóra e imprimir-los na pantalla.
Neste caso, estamos pasando pola nosa conxunto puntuacións, que inicializar en
a primeira liña aquí en gris.
E, a continuación, na segunda liña, comezan iteración través da matriz.
Alguén ten algunha dúbida sobre a estrutura dun loop?
>> Entón que é o loop for.
Temos a nosa condición de inicio, e logo, nosa condición final, e entón nós
iteración, i, cada loop.
E nas claves no presente para loop, o que pasa se eu fose para executar
este programa?
Alguén me pode dicir o que teriamos?
[? Matu? ?]
>> Matu: Imprimir todos os resultados en cada liña.
Sería imprimir cada puntuación nunha liña separada.
>> Jason Hirschhorn: O que é exactamente sería imprimir?
>> ALUMNO: Sería imprimir un, despois dous, despois tres.
>> Jason Hirschhorn: Exactamente.
Ía imprimir un, despois dous, despois tres, cada un en liñas separadas, xa que
imos a través da matriz e vai ver que a segunda, o printf
declaración, puntuacións i.
Así, na primeira rolda a través de noso para loop, i é igual a cero, o que significa que estamos
quedando o valor en puntuación de cero -
que, se volver para noso diagrama, é un -
e recheo en -
Oh, el di que c.
Iso debe ser% d.
Vou corrixir isto en algo cando Eu entrego iso para vós.
Pero nós estamos presentando un enteiro polo que debe ser% d aquí, non% c.
Que é% c para?
>> ESTUDANTE: Carácter.
>> Jason Hirschhorn: Carácter, exactamente.
Qué é o outro?
Se non queres facer d% a un enteiro, o que máis pode facer?
>> ALUMNO: i.
>> Jason Hirschhorn:% i, exactamente.
Entón, calquera dúbida sobre a iteración a través da matriz?
Entón o que ocorre se non se fai iso?
No canto de facer i é inferior a tres, nos i é menos
que ou igual a tres.
Que pasa cando executar este código?
Si, Annie?
>> ALUMNO: Eles están indo para imprimir cousas estrañas na cuarta liña.
>> Jason Hirschhorn: Entón dixo, é vai imprimir cousas estrañas no
cuarta liña?
Alguén ten unha resposta á súa pregunta?
Así, as posibilidades son de que, cando chegamos ao -
Entón, na cuarta rolda a través da nosa para loop, así como penso, Annie,
será puntuacións franxa tres, que que xa descubriu que non
existe, e nós imos tratar e acceder tanto, imprimir lo
fóra, use-o de algunha maneira.
Así, o ordenador probablemente ir con rabia de nós.
Está absolutamente seguro.
>> Pode pechar o programa completo.
Pode imprimir algo moi raro.
Non pode dicir con certeza.
As probabilidades son de que probablemente vai estar bravo con ti e só saír inmediatamente.
>> Pero este é un erro común que vai ter onde está só fóra por un de
fin, e este é un problema que vai praga que en toda a súa codificación.
Un xeito que máis me gusta de facer é só nun cadro branco, pasar por cada iteración
do lazo na man ou no papel para ver o que está pasando, e entón
xeralmente entenden, oh wait, eu non debería ir á menor ou
igual a tres.
Eu debería ter parado a dous, que se o que pasa se a súa condición é menos
que tres.
Calquera dúbida tan lonxe?
Doce.
>> Entón, todos vostedes teñen os seus ordenadores aberto.
Nós imos darlle 2-3 minutos para escribir un programa que
crea un array cos enteiros dunha por cinco anos e, a continuación, imprime cada
enteiro nunha nova liña.
E se tes algunha dúbida, levante a man.
Estou feliz de pasar por aquí.
Como dixen, imos dar tres minutos a escribir isto.
Están todos ben, se eu fose a un nova ventá e pechar isto?
>> Sinto moito se non tivo a oportunidade para rematar, pero imos facelo
xuntos agora.
Entón, na pantalla, eu # include cs50.h, # include stdio.h.
Alguén me pode dicir o que estas dúas liñas fan?
Michael?
>> ALUMNO: Inclúense as bibliotecas CS50 que fixo e que ten Steve
gardados para que poida usar para facer a súa vida máis fácil.
>> Jason Hirschhorn: Entón dixo que eles incluír as librerías, unha que CS50
feita, cs50.h, e un que é só estándar, ven con
o paquete C, stdio.h.
O que quere dicir incluír as bibliotecas, aínda que?
Pode ser un pouco máis específico?
>> ALUMNO: El fai que se pode empregar certas palabras de código para unha
funcionando pasar sen ter que ir e facer a función c si mesmo.
>> Jason Hirschhorn: Pode darme un exemplo?
>> ESTUDANTE: Como printf é aquel que pode usar.
>> Jason Hirschhorn: printf.
Entón dixo que printf é un destes funcións en vez de ter que
printf escribir no seu propio país, printf é incluído na verdade en stdio.h, para que
só pode usalo e asumir que vai traballar.
En stdio.h, se abriu o ficheiro, sería incluír como printf
obras, todo o código para printf?
Por que está bailando a cabeza?
>> ALUMNO: Por o ficheiro de cabeceira só inclúe a declaración da función.
>> Jason Hirschhorn: Exactamente.
O ficheiro de cabeceira só inclúe declaración da función.
Entón, basicamente, cando compilar tanto, bateu Fai a conta, que imos facer nun
segundo, o compilador sabe que se usa printf, printf existe.
Vai ser definido en algún lugar.
Non é un problema para vostede usalo.
E entón, máis tarde, que incluirá a ceros e uns que realmente conteñen
printf de implantación e fundín-los co seu código.
Como asegurarse de que inclúe o uns e ceros para, por exemplo, conseguir corda?
>> ESTUDANTE: Obter corda está cs50.h.
>> Jason Hirschhorn: Correcto.
Entón, que di estar corda existe, declaración da función.
Pero entón os ceros e uns, o binario arquivo que realmente inclúe a
implantación de corda get?
Como asegurarse de que vai co seu programa?
>> ALUMNO: Pase o vinculador argumento de liña de comandos.
>> Jason Hirschhorn: Pase o ligador no argumento da liña de comandos.
Como fai iso?
>> ALUMNO: É a l-liña no bumbum
>> Jason Hirschhorn: Exactamente.
Dis-l CS50, non?
Isto inclúe os uns e ceros.
>> ALUMNO: Pero Facer fai que, para ti, non?
>> Jason Hirschhorn: Exactamente.
Faino por ti, pero, finalmente, Non terá que facer, ou
vai ter que facer unha facer no seu propio país, de xeito que é un
bo para lembrar.
Se estaba indo a usar un destes outras bibliotecas, non só ten
para escribir # include e logo á biblioteca.
Tamén cómpre vincula-lo dentro
E esas dúas cousas son diferentes. L-CS50 é diferente
de # include cs50.h.
>> Entón temos int main baleiro rizados claves, e agora imos ao código
dentro principal.
A primeira liña que eu teño aquí é un comentario que di, crear unha matriz
con ints dun a cinco.
¿Que é unha boa palabra para describir o que eu teño agora na pantalla, só
comentarios dentro principal?
O que chamamos iso?
>> ALUMNO: Pseudocódigo.
>> Jason Hirschhorn: Pseudocódigo.
Grazas, Jeffrey.
Isto é exactamente correcto.
Pseudocódigo.
Vostedes viron pseudocódigo antes?
Levante a man se xa usou pseudocódigo antes de definir un problema.
Aproximadamente a metade de vós.
>> Recomendo o uso pseudocódigo para romper os problemas en
menor, máis fácil de morder anacos.
Por outra banda, se fai o pseudocódigo, ten ter os seus comentarios xa amplamente
embutido, así que non ten que volver e tentar descubrir
o que estaba facendo.
Entón, alguén me pode dar esa primeira liña para crear un array con ints un
a cinco anos?
Vostede?
>> ALUMNO: Int e logo, pode chamar calquera número, e despois cadrado
soporte de cinco anos.
>> Jason Hirschhorn: números para int, corchete cinco.
>> ALUMNO: Igual, e entón chaves.
>> Jason Hirschhorn: Igual, chaves.
>> ALUMNO: Un, dous, tres, catro.
>> Jason Hirschhorn: Un, dous, tres, catro, cinco.
>> ALUMNO: E entón claves e logo, punto e coma.
>> Jason Hirschhorn: e Curly claves e punto e coma.
Excelente.
Imprimir cada int nunha nova liña.
Pódese dar me que o código, por favor?
[? Matu? ?]
Dalle.
>> ESTUDANTE: For (
>> Jason Hirschhorn: For (
>> ALUMNO: int i = 0
>> Jason Hirschhorn: int i = 0
>> ALUMNO: Punto e coma i inferior a cinco.
>> Jason Hirschhorn: Punto e coma, i inferior a 5.
>> ALUMNO: Punto e coma, i + +.
>> Jason Hirschhorn: Punto e coma, i + +.
>> ALUMNO: parénteses pechados, logo chave de apertura.
>> Jason Hirschhorn: parénteses pechados e dúas chaves.
Dentro das claves?
>> ALUMNO: E entón printf "% d / n"
>> Jason Hirschhorn: Sentímolo, espera.
Printf "% d / n, multimedia pechada.
>> ALUMNO: E entón cita pechado, comas, conta, soporte i.
>> Jason Hirschhorn: Comma, conta, soporte i.
>> ESTUDANTE: Sentímolo, números soporte i.
>> Jason Hirschhorn: Números, soporte de i.
>> ALUMNO: Sentímolo.
E, a continuación, pechado entre parénteses, punto e coma.
>> Jason Hirschhorn: Closed parénteses, o punto e coma.
Vou gardar ese.
Imos facer a conta.
E como fago para executar o número?
>> ALUMNO: barra invertida.
>> ALUMNO: Dot barra -
>> Jason Hirschhorn:. / Contar, exactamente.
Grazas. . / Contar.
Un, dous, tres, catro, cinco en novas liñas.
Parece que funcionou.
Si, Noah?
>> ALUMNO: Tamén pode facer igual ou igual a catro, como i é inferior a
ou igual a catro?
Hai algunha vantaxe de facer menos de cinco anos, ou só unha forma diferente de
gravala-lo?
>> Jason Hirschhorn: Entón a cuestión é vostede podería ter feito i é inferior ou
igual a catro, no canto de i é menor que cinco.
Tería que traballar a mesma cousa?
>> ALUMNO: Debería.
>> Jason Hirschhorn: si.
É totalmente tería funcionan do mesmo xeito.
Estilisticamente, é xeralmente menor que, e podes ver nun segundo cando
nós cordas, pode usar algo chamada strlen, que xa viu
antes, para obter a lonxitude da cadea.
E non pode facer menos que o igual strlen.
Podería facer menos que ou igual strlen menos un.
Entón é só máis agradable para facer menos que strlen.
Si?
>> ALUMNO: E na real quizzes, facer debemos proporcionar comentarios sobre o noso
código tamén?
>> Jason Hirschhorn: A cuestión estaba en probas, non se
Ten que proporcionar comentarios?
Entón, imos falar máis sobre probas cando eles veñen para arriba, pero en xeral, un bo
regra de ouro é sempre que estea escribir código, proporcionar comentarios.
Se obter o código mal, pero o comentar dereito, pode obter algúns
crédito tanto de min se eu estaba clasificación vostede nun conxunto de problemas ou nun quiz.
Entón, os comentarios son sempre bo para ofrecer.
Doce.
Conde.
Excelente traballo.
Imos seguir adiante.
>> Strings.
Strings.
Nós xa vimos isto antes na charla.
Isto fundiu miña mente cando eu atopou por primeira vez iso.
Probablemente non explotar de ninguén presente aquí, pero iso é OK.
>> Cadeas son arrays de caracteres, e eles acaban con, como dixen antes,
o terminador nulo, o que é este personaxe / 0.
Se imos trazar unha corda no consello, imos deseña-lo aquí.
Entón, canto tempo é esa corda?
Sentímolo.
Canto tempo dura esta cadea?
>> Estudante: [inaudível].
>> Jason Hirschhorn: Catro?
Por que é catro?
>> ALUMNO: Porque o quinto lugar é para o carácter nulo.
>> Jason Hirschhorn: Entón o quinto lugar é para o carácter nulo.
Entón, se eu fose para executar strlen en iso, el me daría catro.
Corrixir.
E a matriz, con todo, se eu fose arrincar esa matriz, cantos espazos
eu tería que pedir?
>> ALUMNO: Five.
>> Jason Hirschhorn: Five.
Eu tería que preguntar a cinco, pero eu podo só poñer catro personaxes aquí
porque eu teño poñer isto nulo terminador no final.
Entón imos escribir en "ohai" e poñer o terminador nulo ao final.
Imos dicir que esta é unha cadea s é igual a este.
Cal é a franxa de cero s?
s soporte cero, Annie?
>> ALUMNO: O.
>> Jason Hirschhorn: O, exactamente. s un soporte?
s soporte de cinco anos?
>> ALUMNO: Non existe.
>> Jason Hirschhorn: Non existe.
Exactamente.
Legal.
Calquera dúbida sobre a comprensión cadeas como arrays de caracteres?
OK, entón.
Máis un programa para vós.
Escribe un programa que pide ao usuario para unha cadea e entón móstrase cada
personaxe nunha nova liña.
Entón, imos ter tres minutos para escribir Neste programa, e despois imos codifica-lo
como un grupo.
>> Sentímolo.
Ten que ver iso?
>> ALUMNO: Non
>> Jason Hirschhorn: Aceptar.
Imos dar un minuto para este código, ou polo menos comezar a facelo.
>> Así, pode seguir traballando, pero eu vou para comezar a pasar por iso.
Así como antes, eu teño na pantalla # Include cs50.h, # include stdio.h.
int void main.
Dentro claves do principal, eu teño dous comentarios, pseudocódigo.
Unha delas é pedir unha cadea do usuario.
A segunda é imprimir cada personaxe nunha nova liña.
Entón, Anna, pode dar-me preguntar para unha cadea de usuario?
>> ESTUDANTE: printf.
>> Jason Hirschhorn: printf?
>> ESTUDANTE: si.
(
>> Jason Hirschhorn: (
>> ALUMNO: "dáme unha corda.
>> Jason Hirschhorn: "dar me un str - oops -
cadea.
>> ALUMNO: / n "), punto e coma.
>> Jason Hirschhorn: Acabar coa cadea, parénteses pechados, punto e coma.
>> ESTUDANTE: si.
E entón a seguinte liña, corda s = get cadea.
>> Jason Hirschhorn: cadea s = get cadea.
>> ESTUDANTE: si.
E, a continuación, ()
>> Jason Hirschhorn: ()
>> ALUMNO: Punto e vírgula.
>> Jason Hirschhorn: Punto e vírgula.
Fantástico.
Entón, eu vou ir unha corda e Vou gardalo en que?
Cal é a variable chamada que creou?
>> ESTUDANTE: String s.
>> Jason Hirschhorn: A variable chámase s.
É tipo cadea.
Exactamente.
A seguinte cousa que queremos é imprimir cada personaxe nunha nova liña.
Quen me pode dar ese código?
[Inaudível]?
Pode dar isto para min?
>> ALUMNO: Por suposto.
>> Jason Hirschhorn: Imos facelo.
E moito.
Eu non me gusta de repetir o que di por que está facendo as cousas ben, pero eu
ten que repetir de xeito que cando eles transcribir iso, poden obter toda
a saída de texto na transcricións.
Entón podes só seguir falando.
Desafortunadamente, non teño dicir sobre ti.
Sinto moito, pero -
>> ALUMNO: Isto é bo.
Para int i = 0
>> Jason Hirschhorn: Para int i = 0
>> ALUMNO: Eu menos -
>> Jason Hirschhorn: Punto e vírgula.
>> ALUMNO: Antes diso, podemos poñer unha variable para obter int lonxitude do nome?
>> Jason Hirschhorn: Oh, non quero poñer o punto e vírgula?
Aceptar.
Entón o que quere facer despois de cero?
>> ALUMNO: Eu quero comezar o lonxitude da corda de s e
establecer que unha variable?
>> Jason Hirschhorn: OK, Entón, como fago isto?
>> ALUMNO: Entón fai lonxitude int =
>> Jason Hirschhorn: Int length =
>> ALUMNO: S-T-R-L-E-N.
>> Jason Hirschhorn: S-T-R-L-E-N -
>> ALUMNO: É s.
Corchetes.
>> Jason Hirschhorn: (s).
>> ALUMNO: E entón eu creo que ten que poñer un punto e coma entre os dous ints.
>> Jason Hirschhorn: Un punto e coma tras a cero?
>> ESTUDANTE: Yeah.
A continuación, coloque un punto e coma despois diso, e vostede di, i menos longo.
i menos de lonxitude, que é a variable.
>> ALUMNO: E logo punto e coma.
>> Jason Hirschhorn: Punto e vírgula.
>> ALUMNO: i + +.
>> Jason Hirschhorn: i + +.
Non é o noso loop for.
OK, dentro do loop for.
>> ALUMNO: E despois facer printf.
>> Jason Hirschhorn: printf.
>> ALUMNO: Soportes.
>> Jason Hirschhorn: entre parénteses, comiñas.
>> ALUMNO: Parénteses, multimedia,% c / n.
>> Jason Hirschhorn:% c, Aceptar.
>> ALUMNO: / n.
>> Jason Hirschhorn: / n.
>> ALUMNO: citas pechado.
>> Jason Hirschhorn: citas pechado.
>> ALUMNO: coma.
>> Jason Hirschhorn: coma.
>> ALUMNO: S.
>> Jason Hirschhorn: S.
>> ALUMNO: bracket i.
>> Jason Hirschhorn: bracket i.
>> ALUMNO: E parénteses, a continuación, pechado.
>> Jason Hirschhorn: parénteses pechado.
>> ALUMNO: E logo punto e coma.
>> Jason Hirschhorn: Punto e vírgula.
Fantástico.
Entón, imos gardar esta.
Fai deletrear.
Oh boy.
Eu teño un par de erros.
Primeiro erro na liña 11, el di: Espérase expresión, e está dando
me un erro que o segundo int, hai o erro.
Hai algún erro en torno de alí.
Alguén sabe o erro que é?
Kurt?
>> ALUMNO: Coido que debería ser unha coma e non un punto e coma.
>> Jason Hirschhorn: OK, comas en vez de un punto e coma.
Así é que todo o que necesitamos para corrixir?
>> ALUMNO: Non
>> Jason Hirschhorn: Qué máis necesitamos fixar?
>> ALUMNO: Temos que incluír string.h.
>> Jason Hirschhorn: Include string.h.
Onde é que eu teño incluír isto?
>> ALUMNO: O mesmo lugar que está incluíndo as outras cousas, non
tras incluír stdio.h.
>> Jason Hirschhorn: Imos ver se isto funciona primeiro porque, xeralmente, máis me gusta
para corrixir unha cousa primeiro, e despois realizar , E, a continuación, ver os erros que temos.
Entón, nós estamos indo a limpar o terminal co control n, imos facer facer feitizo.
Así, outro erro na liña 11.
Espérase comas.
E eu aínda estou a recibir erros nesta liña.
Por iso, non me deu un erro dicindo que non entende o que é strlen,
pero está me dando erros neste liña, o que máis está mal?
Mark?
Marcus.
>> ALUMNO: Ten que eliminar a segunda declaración int?
>> Jason Hirschhorn: Eliminar o segundo int.
Imos tentar iso.
Agora limpar o terminal.
Fai deletrear.
Erro.
Implicitamente declarando biblioteca función strlen.
Entón, agora vemos este erro.
O que necesitamos para incluír?
>> ALUMNO: STRING.H.
>> Jason Hirschhorn: Include string.h, Imos facer # include string.h na parte superior
da pantalla.
Imos gardar, faga deletrear.
Agora compilado.
Entón, de novo, as cousas que precisaba Teña en conta que a liña 12 no noso loop para cando
estamos a súa creación, int i = 0, lonxitude = strlen (s).
>> Esta é unha estratexia fantástico.
O estilo deste é grande, o proxecto deste é grande.
Podemos ir a esas razóns máis tarde, pero deste xeito só precisa chamar
strlen unha vez, no canto de cada xa que executa a través do loop.
Con todo, ten que usar unha coma alí e non precisa de novo int.
Se está declarando ambos variables en conxunto, ten
Non precisa de novo int.
E entón, se está indo a usar strlen, que é outra biblioteca
función non incluído no stdio.h ou cs50.h, facer
-Se de incluir string.h.
Kurt?
>> ALUMNO: Entón, se non ten dicir o tipo de lonxitude é, iso
significa que ten que ser un int?
Non pode ter dous diferentes tipo alí?
>> Jason Hirschhorn: Entón, podería ten dous tipos diferentes.
A lonxitude é un int aquí, con todo.
A lonxitude é un int porque é coma e logo o mesmo.
>> ALUMNO: Entón, el asume que está a suceder a ser o mesmo que o primeiro?
>> Jason Hirschhorn: Exactamente.
Non imos facer iso agora, pero pode incluír dúas variables sobre a
mesma liña usando un tipo de datos.
Entón, int x, y crearía dúas variables.
Así, int x, y, se facelo, dá me unha variable x e y non utilizado por
non usalos.
Entón, antes de poñer en branco é só un truco de fantasía, se non usar
algo, a usalo.
Pero, como ve, eu creo x e y na mesma liña, con comas.
É a creación de dous enteiros alí mesmo.
Entón, si, totalmente posible crear dúas cousas na mesma liña
separadas por comas.
Imos nos librar dos que, con todo.
>> Polo tanto, non hai maxia.
Grazas a vós para codifica-lo para nós.
Imos facelo unha vez, executa-o.
Déame unha cadea.
[Inaudível], fixo máis do mesmo.
Cal é a corda?
>> ALUMNO: Olá
>> Jason Hirschhorn: Olá
H-E-L-L-O, cada personaxe nunha liña.
Parece gran.
Imos executa-lo de novo.
Sempre vai comprobar para os casos de canto.
¿Que é un bo caso para comprobar canto?
>> ALUMNO: Un número?
>> Jason Hirschhorn: Un número.
Entón, eu vou poñer nun, e imprime un.
Non está pedindo cartas, de xeito parece que as cifras de traballo.
Bo caso canto para comprobar.
¿Que é un bo recuncho caso para comprobar?
>> ALUMNO: A secuencia en branco.
>> Jason Hirschhorn: Hm?
>> ESTUDANTE: Como unha cadea baleira.
>> Jason Hirschhorn: cadea baleira.
Entón, non imos poñer en calquera cousa.
E o que é impreso?
>> ALUMNO: Nada.
>> Jason Hirschhorn: Nada.
Parece que funciona.
Vostede podería tentar máis casos de canto, pero en xeral, os números, un de datos é diferente
grande para probar, así non é nada.
Nada, cero, negativos son sempre grandes cousas para intentar cousas que
Debe proba, as cousas seguramente imos probar para e check 50 vai probar.
Calquera dúbida sobre spell.c?
>> OK, imos cabeza cara atrás.
Eu teño máis dun programa para vostedes escriben.
Chámase students.c.
Este é un programa que pide ao usuario para cinco nomes, así que elixe ao azar
e imprime un dos nomes.
Este programa é un pouco máis parte do que os dous últimos que escribiu,
Entón, por que non imos tardar cinco minutos para codifica-lo individualmente, e despois imos
codifica-lo como un grupo.
>> Este programa tamén implica algunhas cousas pode non ter visto antes, entón se
Ten unha pregunta sobre como facer Fago isto, levante a man.
Vou vir e sinala-lo na dirección correcta.
Pero nós tamén estamos a facer iso porque esta vai ser unha boa forma de introducir algunhas
temas que son complicadas.
>> Así funciona, non?
>> ESTUDANTE: Yeah.
>> Jason Hirschhorn: Sempre que une nun conxunto de problemas, hai moitas formas de facer
, Pero algúns son máis elegantes do que os outros.
Imos mergullo dentro
# Include cs50.h.
# Include stdio.h.
void main int, chaves.
Dentro das claves, Eu teño dous comentarios.
A primeira é, pregunta ó usuario por cinco nomes.
O segundo é, escoller aleatoriamente e imprimir un dos nomes.
Entón imos facer o primeiro, pregunta o usuario durante cinco nomes.
Quen pediu o usuario para cinco nomes e me pode dicir como facelo?
Só dúas persoas fixeron a primeira parte.
Tres persoas fixeron a primeira parte.
Catro, cinco.
Ton, como fai iso?
>> ALUMNO: Podería declarar unha cadea e logo, nome, franxa cinco.
>> Jason Hirschhorn: cadea Nome Clave cinco.
Entón o que é esta liña facendo, name cadea soporte de cinco?
>> ALUMNO: Vostede ía declarar unha matriz de cadeas.
>> Jason Hirschhorn: Este é unha matriz de cadeas.
Cantas cordas van para caber aquí?
>> ALUMNO: Five.
>> Jason Hirschhorn: Five.
Excelente.
Imos chamalo de nomes por estamos indo a obter varios.
OK, o seguinte?
>> ALUMNO: E entón ten un loop -
>> Jason Hirschhorn: Para loop.
>> ALUMNO: - para i = 0.
>> Jason Hirschhorn: For (int i = 0.
>> ALUMNO: Punto e vírgula.
>> Jason Hirschhorn: Punto e vírgula.
>> ALUMNO: Eu inferior a cinco.
>> Jason Hirschhorn: Eu inferior a cinco.
>> ALUMNO: Punto e vírgula.
>> Jason Hirschhorn: Punto e vírgula.
>> ALUMNO: i + +.
>> Jason Hirschhorn: i + +.
>> ALUMNO: E parénteses, a continuación, pechado.
>> Jason Hirschhorn: parénteses pechados, e logo, algunhas claves.
Dentro das claves?
>> ALUMNO: E entón printf.
>> Jason Hirschhorn: printf.
>> ALUMNO: parénteses abertas, name% d.
>> Jason Hirschhorn: Sentímolo?
>> ALUMNO: Nome.
>> Jason Hirschhorn: Nome.
>> ALUMNO: E entón o espazo, e logo,% d.
>> Jason Hirschhorn: Nome, espazo,% d.
>> ALUMNO: E entón / n, logo pechado.
>> Jason Hirschhorn: nome Entón, espazo, % D / n, parénteses pechados.
>> ALUMNO: Comma, i + 1.
Sinto moito.
Cita pechado, e logo, coma, i +1.
>> Jason Hirschhorn: Closed cita, coma, i +1.
>> ESTUDANTE: si.
E entón a seguinte liña -
>> Jason Hirschhorn: i + 1.
>> ESTUDANTE: si.
E entón o seguinte foto son os nomes soporte i.
>> Jason Hirschhorn: Seguinte liña son os nomes soporte i.
>> ALUMNO: = get cadea.
>> Jason Hirschhorn: = Get -
capital de G-E-T -
cadea.
Oops, desculpe.
>> ALUMNO: Open, parénteses pechados e despois -
>> Jason Hirschhorn: aberto, pechado paréntese.
>> ALUMNO: Punto e vírgula.
>> Jason Hirschhorn: Punto e vírgula.
OK, entón arrincar a matriz de cordas, nomes e, a continuación, pasar por unha
loop for, e cinco veces imprimir algúns pedir ao usuario e, a continuación, almacenar
cinco cordas.
Alguén ten algunha axustes a iso?
Tom, eu creo que todo o mundo de acordo con vostede.
Parece moi bo.
Aceptar.
Por que fixo i +1, aínda?
>> ALUMNO: Quero dicir, non ten ser, pero i 1 de xeito que sexa
un nome para nomear cinco.
En caso contrario, sería nome cero a nomear catro.
>> Jason Hirschhorn: Entón fixo i +1 porque senón tería
impresos de cero a catro, porque é así que os ordenadores pensan, pero os seres humanos
realmente non ler así.
Isto é outra cousa vai atopar.
Ás veces, cando imprimir algo ao usuario, vai querer facelo un
pouco máis fermosa, e facer i 1, neste caso, é un
forma a facelo máis bonito.
>> Eu tamén vexo cinco dúas veces, cadea nome é cinco, i é inferior a cinco.
Sei onde ten cinco.
Ten iso de min dicindo Ten cinco nomes.
Pero se quere facer o código nun pouco máis robusto, algo que nos
podería facer é aquí, do lado de fóra de int, poderíamos facer algo como isto,
# Establece, e que nós poderíamos facer NOMES 5.
>> Entón, basicamente, onde queira que eu escriba de capital N, A Capital, o capital M, E maiúscula,
S en maiúscula, esa secuencia, que substituirá 5, en que, co código.
Ou imos só chamalo - imos basta chamalo NUMBER.
Entón, eu estou definindo as tapas NÚMERO ser 5.
>> Entón, agora, cada vez que eu teño o número 5, I pode substituílo con todos os números caps.
E agora, se eu queira cambiar o número de nomes, o único que cómpre facer é
esta liña, a liña de catro, onde eu teño # Establece o número 5, cambiar isto a 10,
ou que cambie a 4.
Cando o seu código queda maior, non está vai lembrar de ti todas as partes
poñer cantos nomes que quería, e en Para que non perda un, este é
unha boa forma de facelo, para atopar algo alí enriba e despois é só usar esta frase
por todo o seu código.
Marcus?
>> ALUMNO: É iso estilisticamente preferido de establecer globalmente a
constantes n?
>> Jason Hirschhorn: Así é que estilisticamente preferido de todo o mundo
definindo a n constante?
Entón está dicindo que podería facer, int numero = 5?
>> ALUMNO: Será que eles teñen consoantes en C ou non?
>> Jason Hirschhorn: Ou const - en iguais.
Entón está dicindo só unha variable global?
>> ESTUDANTE: Yeah.
>> Jason Hirschhorn: Entón, estilisticamente, non hai, necesariamente, un dereito
responder, pero as dúas cousas son mellores que só xogando estes aleatoria
números en todo o seu código.
Nós os chamamos números máxicos.
Cando eu ollar para o seu código ou cando ninguén está lendo isto,
Non quero só estes números aleatorios que non ten sentido.
Ata o número 26, que é xeralmente o número de letras do alfabeto,
é mellor para definir alfabeto enriba e gardar o número 26 en que cadea,
se iso ten sentido.
>> Ou nun conxunto de problemas, en vez de - unha vez máis, nós non falamos sobre iso en
tempo, pero en vez de simplemente xoga en todas as partes a 25 ou 10, pode
gardar o número 25 como cuarto ou 10 como DIME, e iso fai máis doado para
quen está lendo o seu código entender por que escolleu ese número.
E tamén para vostede, se quere actualizar o código, convértese en algo
máis robusto.
Si?
>> ALUMNO: É este código tamén estar dispoñible para nós despois?
>> Jason Hirschhorn: Todos estes códigos que escribimos xuntos son
será enviado a vostede rapaces e dispoñibles.
Si
Entón, pregunta ao usuario cinco nomes.
Aleatoriamente elixir e imprimir un dos nomes.
Quen fixo esta liña?
Esta é a liña máis complicada aquí.
Sentímolo, Tom
Vostede fixo un bo traballo, pero este é un pouco máis complicado.
Marcus, vai adiante.
>> ALUMNO: Ben, primeiro, vai Debe incluír stdlib.h e time.h.
>> Jason Hirschhorn: Entón está dicindo que a na parte superior, incluír dúas bibliotecas.
Quere me incluír S-T-D-L-I-B dot H, Biblioteca defecto, e o
foi o outro?
>> ALUMNO: Time.h.
>> Jason Hirschhorn: # include time.h.
Polo tanto, estas son dúas bibliotecas.
Presumo que agora imos estar usando funcións que están contidas nestas
dous, e é por iso que necesitas para inclui-los?
>> ALUMNO: Entón, primeiro ten vai querer escribir srand.
>> Jason Hirschhorn: Srand.
>> ALUMNO: (equipo (0)
>> Jason Hirschhorn: Sentímolo.
Srand (equipo (
>> ALUMNO: 0.
>> Jason Hirschhorn: 0.
>> ALUMNO :)), punto e coma.
>> Jason Hirschhorn: Outro paréntese pechada?
Punto e coma.
Vou só substituír o nulo con NULL.
Que vai facer o mesmo, pero Xeralmente, verás NULL, que
imos falar sobre iso liña en un segundo.
>> ALUMNO: Estilisticamente mellor?
>> Jason Hirschhorn: Xeralmente, as persoas NULL certo, pero mesmo.
>> ALUMNO: E entón o nome int.
>> Jason Hirschhorn: nome Int
>> ALUMNO: =
>> Jason Hirschhorn: =
>> ALUMNO: Rand.
>> Jason Hirschhorn: Rand.
>> ESTUDANTE: ()
>> Jason Hirschhorn: ()
>> ALUMNO: número módulo.
>> Jason Hirschhorn: Cal é o modulo?
O personaxe?
O personaxe por cento?
>> ALUMNO: carácter cento.
Modulo número que marcou enriba.
>> Jason Hirschhorn: Modulo NUMBER.
>> ALUMNO: E logo punto e coma.
>> Jason Hirschhorn: Punto e vírgula.
>> ALUMNO: E entón nova liña, printf.
>> Jason Hirschhorn: printf.
>> ALUMNO: (
>> Jason Hirschhorn: (
>> ALUMNO: "
>> Jason Hirschhorn: "
>> ALUMNO:% s / n
>> Jason Hirschhorn:% s / n
>> ALUMNO: "
>> Jason Hirschhorn:% s / n "
>> ALUMNO: Comma, os nomes de espazo.
>> Jason Hirschhorn: Espazo -
>> ALUMNO: Oh, eu creo, o que que chamamos aquí?
>> Jason Hirschhorn: Nós o chamamos nomes.
>> ALUMNO: soporte Open, nome.
>> Jason Hirschhorn: Abre o soporte, o nome.
>> ALUMNO: soporte pechado.
>> Jason Hirschhorn: soporte pechado.
>> ALUMNO :)
>> Jason Hirschhorn :)
>> ALUMNO: Punto e vírgula.
>> Jason Hirschhorn: Punto e vírgula.
OK, imos gardar.
Imos facer este código.
Alumnos.
Imos realizar este código.
Alumnos.
Non / alumno. . / Alumnos.
Nome.
Diremos David.
Nome dous, RJ.
Nome de tres, Rob.
Nome catro, Lucas.
Nome de cinco, Joseph.
E entón el imprime Joseph novo.
>> Entón deixe-me executar de novo.
Deixe-me facer os mesmos nomes.
David, RJ, Rob, Lucas, Joseph.
E el me deu a David neste momento.
Entón eu fixen o mesmo, pero deu me unha cousa distinta, e iso é
porque, claro, estamos pedindo para un nome aleatorio.
Entón eu creo que, a partir de enriba de min vagando arredor da sala, que a maioría das persoas
probablemente ten a primeira parte dereita, creación desa matriz e, a continuación, quedando
todos os nomes.
Estou falando sobre as liñas 10 a 16.
Pero as liñas 18 a 21 son, probabelmente, algunhas cousas que non teña visto antes,
entón imos pasar por aqueles.
>> Esta liña, srand tempo NULL é esencialmente -
Sentímolo, imos saltar abaixo unha liña, rand ().
Isto dálle un número ao chou, un número enteiro aleatorio.
E se bater home rand, que unha morea de que fixo -
M-A-N espazo R-A-N-D -
no terminal como este, M-A-N espazo R-A-N-D, prema Intro.
Vostede viría ata o manual e sería capaz de ler que o rand
saídas de comandos Nume bytes pseudo-aleatorios Tras a sementeira do número aleatorio
xerador de unha vez.
>> Entón, iso é unha descrición.
Iso é o rand fai, dá un número aleatorio cando
chamar esa función.
Desafortunadamente, non é realmente aleatoria porque se só chamar aleatoria
sen estar algunhas sementes, algúns punto de partida, el sempre vai escoller
a mesma e que utiliza unha fórmula para determinar o próximo.
Entón, se chamar rand, el só vai darlle o mesmo.
Será moi previsible.
En realidade, non será aleatoria.
>> Entón o que necesitamos facer, por Marcus instrucións para min, eran rand sementes
con outra cousa, que é o que a función srand fai.
Sementa rand con algo un pouco máis aleatoria que a mesma cousa, e
está sementando-lo co tempo NULL, que é, só por convención, o actual
o tempo en segundos.
>> Entón está asumindo que todo o mundo non é vai executar o código no exacto
mesmo segundo, polo que é unha aposta segura que tempo NULL será diferente
cada vez que este código é executado.
Aposta segura que así, srand vontade rand sementes con algo diferente cada
vez.
Entón, por convención, cando quere un número aleatorio, escribimos esta liña,
srand NULL tempo, para dar unha gran semente máis aleatoria, e despois corremos
rand, que nos dá un número aleatorio.
Si?
>> ALUMNO: Pode dicir o que quere dicir con semente?
>> Jason Hirschhorn: Semente de in -
así rand vai escoller un número e vai utilizar algún
fórmula para chegar alí.
Por iso, vai comezar con algo e, a continuación, transformalo en algo baseado
fóra desta fórmula.
Se sempre darlle o mesmo, el sempre vai transformalo no
mesmo.
Así que o primeiro que dar é a semente.
Entón quere dar algo diferente para comezar con, e por iso
vai transformalo en algo diferente.
>> E, finalmente, a liña 20, dicir chamada a%
modulo, e iso é confuso.
Isto é algo que é un pouco distinto aquí que realmente non
ten en matemáticas da vida real.
Pero, esencialmente, cando toma un xigante número e dividir en C, o que
pasa co resto?
>> ALUMNO: El queda truncado.
>> Jason Hirschhorn: El queda truncado.
Entón, 20 dividido por 3 é o que?
O que isto quere volver ao ti, 20 dividido por 3.
Sentímolo, 10 dividido por 3.
O que isto quere volver para ti?
>> Estudante: [inaudível].
>> Jason Hirschhorn: 10 dividido por 3 só devolve 3, non 3 restante 1.
Entón, o 10 módulo 3 retorno é só o resto, 1.
Entón, se quería saber o que 10 dividido por 3 realmente era, se fose
facer 10 dividido por 3, terá a súa 3, e logo, faría 10 modulo 3 e
quere obter a 1.
Entón entender que 10 dividido por 3 é 3, un resto.
>> E nesta liña, pode rand calquera número enteiro, esencialmente.
Entón modulo está dicindo, división lo por número, o cal é, neste caso cinco.
E se dividir por un número, o número enteiro sempre ten que ser inferior a
ese número.
Entón, se está dividindo por un número 5, o resto é sempre vai ser
de cero a catro.
Isto é só a forma como as matemáticas funciona.
>> Así, un gran número moduloed por un menor número sempre volverá
resto e sempre volver algún número que é menor que o número que
dividido.
Alguén ten algunha dúbida sobre modulo, porque vai vir en moito,
moi útil, entón eu quero que seguro todo o mundo entende isto?
Legal.
E vimos que este programa funciona.
OK, seguindo adiante.
>> Así, na seguinte, imos entrar funcións, e nós estamos indo a ir
a través do resto das cousas moi rapidamente porque quero chegar
argumentos de liña de comandos.
Así, as funcións son, esencialmente, Como viu, as caixas negras.
Eles levan as cousas chamados parámetros, eles fan algo para eles, sexa
muda-los ou crear algúns efectos secundarios, e, finalmente, eles cospen
algo, o que se o valor de retorno.
Alguén me pode dar unha razón por iso que usaría funcións?
Calquera?
Unha razón pola que usariamos funcións?
Calquera?
Vin as dúas mans.
¿Que é un bo motivo?
Marcus?
>> ALUMNO: Se ten que chamar o mesmo anaco de código varias veces.
>> Jason Hirschhorn: OK, se precisa para chamar a mesma peza de
codificar varias veces.
Jeff, se ten unha razón diferente?
>> ALUMNO: Só que podes codificar menos.
>> Jason Hirschhorn: Pode codificar menos.
Correcto.
Se queres facer algo moi -
no código anterior, eu podería ter escrito obter secuencia de cinco veces, pero unha
loop fai que pareza máis bonito e ten que escribir menos código.
Funcións son unha idea similar.
Se eu queira facer o mesmo unha chea, movelo a unha función e chamar iso de
funcionando á vez.
Isto fará que esa cousa para ti.
Isto é un gran motivo utilizar funcións.
>> Entón, anatomía dunha función.
A función xeral semellante a esta.
Comezará co tipo de retorno, entón vai ter o nome.
Vai levar os argumentos, se non, coñecido como os parámetros, e dentro
esas claves, vai escribir o seu código.
>> Vimos unha función moito.
Esa é principal.
Aquí é principal superposta anatomía que tiña antes.
Que int aquí significa?
Que int significa?
Cando escribo int main (void).
>> ALUMNO: Tipo de retorno?
>> Jason Hirschhorn: Sentímolo?
>> ALUMNO: O tipo de retorno.
>> Jason Hirschhorn: Int é o tipo de retorno, exactamente correcto.
Iniciar retorna un int.
Qué é o principal?
>> ALUMNO: nome da función.
>> Jason Hirschhorn: Principal é o nome da función.
Exactamente.
E baleiro?
Que é o baleiro dentro dos parénteses?
>> ALUMNO: Non hai que calquera valor externo.
>> Jason Hirschhorn: void So -
dereita.
Dentro dos parénteses, poñemos o parámetros ou argumentos dos
función recibe, o que pasa no interior da caixa negra.
Cando escribe baleiro, está dicindo iso leva nada dentro
Entón int void main principal medio de non ter nada dentro
>> Dentro das claves, temos algúns código, e entón veremos a finais
voltar cero.
Que significa retorno de cero significa?
Ben, nós falamos sobre o tipo de retorno.
Principal que voltar un int.
Iso é o que esta liña fai.
El retorna un int, cero.
>> Claro que non vimos que moitas porque na programación que facemos con
as máquinas que facemos e os compiladores usamos hoxe en día,
non precisa desa liña.
Principal é especial o suficiente para que el sabe cando chegar ao final do principal, só
voltar cero se todo foi ben.
De feito, se algo non vai ben, principal, moitas veces, voltar un diferente
número significando que algo deu mal co seu programa.
>> Entón, xeralmente cando ver o código, Non escriba retorno cero, pero é bo
para saber que isto está a suceder por tras da escenas porque sempre que escribir
outro tipo de función, está indo a necesidade de
incluír unha liña de retorno.
Se está dicindo que eu vou voltar un int, ten que
escribir devolver algo.
Se digo branco aquí no comezo, void void principal, para
exemplo, el non volve nada - branco non significa nada -
así que non que a liña de retorno.
Pero sempre escribir algo que non é para anular o tipo de retorno, ten que
unha liña que di que volta e ten que poñer algo alí
que corresponde ao tipo.
Calquera dúbida sobre iso?
Doce.
>> Scope.
Isto é algo que temos tocou tamén.
Cada variable, como sabemos, ten unha certa marxe, e iso é basicamente
falando sobre onde a variable pode ou non pode ser referenciada.
E gustaríame dicir o que pasa entre chaves permanece
dentro das chaves.
Así, por exemplo, se miramos a este código, estamos definindo unha variable global
fóra do principal, int a, aquí enriba na parte superior.
Estamos chamando outro int dentro dunha principal.
Temos algunhas claves máis Crespo, e estamos chamando outro un int.
>> Temos tres un no código.
Estes non son o mesmo.
Creei tres variables distintas.
Entón dentro destas rizado interior tirantes, digo a = 4.
Que un é que está falando, o primeiro, o segundo,
ou o terceiro?
>> ALUMNO: o terceiro.
>> Jason Hirschhorn: Está falando sobre o terceiro.
Todos aqueles a realidade se pode falou neste particular,
exemplo, porque o seu alcance todo vai para esas claves máis íntimos.
Con todo, cando chamar as cousas da mesma nome, hai algo chamado escondidos.
Así, só se xestione ou reparar ou empregar o variable máis recente, ou a un
máis próxima de ti.
Así, aquí dentro, é dicir máis próximo a un terceiro a esta liña, a = 4, entón
afecta o terceiro.
E a última liña, a = 2, o cal é un que está falando, o primeiro, segundo,
ou un terceiro?
>> ALUMNO: Segundo.
>> Jason Hirschhorn: Está falando sobre o segundo, unha.
Claro que, a un terceiro está máis próximo en que o código, pero o terceiro un
non existe fóra esas claves.
Unha vez que chegar a ese pechado rizado cinta, como é que se foi,
esencialmente.
Entón, os dous únicos que lle queda son aqueles os dous primeiros e, por suposto, xa
que está máis preto da segunda.
>> Entón, iso é bo para Lembre-se sobre o ámbito de aplicación.
Por exemplo, eu estou seguro que atopou facelo en un loop while.
Se inicializar a variable dentro o que while e despois tentar
acceder a ela do lado de fóra, probablemente Ten algún aviso como, este
variable non existe.
Isto porque a idea de alcance, que as cousas só existen
dentro desas chaves.
Curly claves son como unha aperta xigante que está dando ao seu código, é outro
forma de pensar sobre iso.
>> Polo tanto, esta é outra función, algo para vós código, hellofunction.c.
Nós imos saltar que, por agora, pero iso é algo que eu encouraged-lo a
practicar no seu propio país.
Escriba un programa no que as chamadas principais outra función que imprime unha
saúdo ao usuario.
É esencialmente tomando Ola mundo e abstraindo que printf en
outra función.
Pero nós non imos facelo agora porque non temos tanto tempo
saíu como eu tería gusto.
>> Entón declaración da función.
Nós xa vimos isto antes tamén.
Se queres escribir unha outra función, ten que deixar o ordenador coñecer e
principal sabe que existe.
Entón, o que facemos é por riba de inicio, escribimos o tipo de retorno, o nome eo
parámetros e logo, por baixo de inicio, aquí, nós realmente copiar esa liña
e logo escribir o código real.
Así, deste xeito, se chamar a función en principal na parte superior, principal sabe que
Ola existe, por exemplo, se eu fose para chamar Ola, e, a continuación, mira para
a posta en marcha a continuación.
Qué acontece se eu non incluír este liña enriba, anular Ola (void)?
>> Se eu non incluír esta liña e chamadas principais Ola, eu son
recibirá un erro.
Eu estou indo a obter un erro porque o compilador non sabe
que esa cousa existe.
Isto é semellante a iso que non # include cs50.h.
Que esencialmente cs50.h está facendo está poñendo obter corda alí enriba.
É poñer obter int alí enriba.
É poñer todos aqueles función prototipos antes principal de xeito que cando
chamalos en principal, principal sabe que esas cousas existen.
Iso é o que estes arquivos h. Crear.
E por iso, se está indo a facer o seu propio función, ten que asegurarse de
pór este prototipo alí enriba.
Calquera dúbida sobre iso ata agora?
>> Argumentos de liña de comandos.
Isto é o que nós imos rematar , E entón espero que nós imos
espremer nalgúns pset.
Non sei se nós imos ser capaces de espremer en que por mor do tempo, pero
con vostedes que están aquí, e se Queren dicir que despois de un pouco, nos
pode pasar por iso de fóra.
Pero imos rematar con argumentos de liña de comandos
para os últimos 15 minutos.
Nós acordo, Michael?
Está acordado?
Bo
Non sei se durmir cos ollos pechados.
Sería complicado.
>> Argumentos de liña de comandos.
Aqueles que son unha forma de pasar información nun programa.
Finalmente, nós imos atopar os outros.
Pero, esencialmente, imos parar escribir int main (void) se queremos
ter algúns argumentos de liña de comandos.
Nós imos escribir esta cousa chamado int main (int argc,
corda argv, corchetes.
Isto é confuso.
Isto é unha morea de letras que non están en Inglés humano, polo que estamos indo a
descompactá-los agora.
>> Argc significa conta argumento -
e de novo, todo isto vai estar dispoñible en liña -
e este é o número de argumentos.
Argv significa argumento do vector, e quen son os propios argumentos.
É unha matriz de cadeas.
Temos realmente ver unha matriz de corda antes de hoxe.
Creamos un no último programa que cifrada.
>> Entón, aquí está un exemplo.
Eu escriba. / Ohai CS50 sección na miña liña de comandos.
Argc, neste caso é igual a 3.
Argv soporte 0 é ohai, argv soporte 1 é CS50, argv pista 2 é a sección.
De novo, argc é o número de argumentos, e para te enganar un pouco
bit, contamos sempre co nome da funcionan como o primeiro argumento.
Polo tanto, neste caso, hai tres argumentos, o nome da función
e logo, os dous que eu escriba dentro
>> Logo, imos a gardar os propios argumentos en argv.
E, de novo, só, como vimos antes, fixemos esta última no programa que cifrada.
Pode mover-se a través da matriz de argv e obter estas cadeas.
Isto é esencialmente o que fixemos no a fin do noso último programa.
Nós escoller un nome aleatorio e, a continuación, foi para a nomes de soporte que quere e impreso
a secuencia situado alí.
>> Enriba de só unha matriz, xa propias cordas son matrices, como
falou, pode ter matrices de matrices, que se
esencialmente o que argv é.
Unha maneira que pode pensar sobre é dicir as liñas e columnas.
Podo chamar iso agora.
Entón argv -
que non está apagando.
Imos deseñar baixo ohai.
>> Entón, se eu escribín en, sección CS50 ohai, Eu estou indo a truncar
sección para este exemplo.
Pero, esencialmente, o meu multidimensional array, ohai CS50,
imos facer seita.
Entón, aquí, podo acceder a -
se eu só dar argv un número -
iso é malo.
O que hai de malo neste diagrama?
>> ALUMNO: Comezar polo cero.
>> Jason Hirschhorn: debe comezar con cero.
Eu probablemente debería tamén xiralo, pero pois eu xa deseñado tanto, estou
vai deixar lo alí por un tempo.
Pero comeza a cero.
Iso é certo.
Sentímolo se isto é pequeno.
Podedes tipo de ver?
Entón, se eu fai argv 0, vou obter toda ohai.
Se eu fai unha argv, eu vou ir todos CS50.
Se eu fai argv 2, eu vou ir todos seita.
>> Pero agora, como dixemos, cordas son propias matrices.
Entón, o que podo facer é que podo tratar esta como unha matriz multi-dimensional, e eu
pode facer algo ao longo das liñas de argv 0, 0, o que me dá só o
carácter 0.
Argv 0, 1, o que me dá só h.
Argv 1, 3, o que me dá só este 0 aquí no CS50.
>> Entón, por que os propios fíos son matrices, estamos poñendo
que na outra matriz.
Temos agora array de arrays, e nós pode indexar a nosa primeira matriz e
entón o índice para o noso segundo array.
E, como era de esperar, nós facemos iso por só poñer os dous -
facemos os corchetes só xunto un do outro.
Polo tanto, neste exemplo, argv é unha CS50 e argv 1, 2, como dixemos, non é máis que 5.
Alguén ten algunha dúbida sobre arrays multi-dimensional?
Vostedes están facendo incrible.
Doce.
>> Entón, nós temos un outro programa aquí, e esta é a última cousa que somos
vai facer agora.
Entón, quero que escriba un programa que leva o nome completo do usuario, dous e só
dous argumentos de liña de comandos e finalmente imprimir un saúdo ao
usuario, que inclúe o seu primeiro nome.
Entón, por que non tomar tres ou catro minutos para facer iso, e despois imos
sobre el como un grupo, e entón imos embrulhar?
>> E, de novo, aquí, cando dicimos ter un nome completo acordo coa descrición do usuario
deste problema, que debe ser de ordes argumentos de liña, evitando obter cadea.
Si, Marcus?
>> ALUMNO: Entón, cando di que dous comandos argumentos de liña, é que, ademais
. O / run, ou -
>> Jason Hirschhorn: Boa pregunta.
Facer, incluíndo o. / Run, tres argumentos de liña de comandos.
Ou, incluíndo o. / Personalizado, a Neste caso, porque esa é a
nome deste ficheiro.
Entón argc sería tres.
Pero quero só dous argumentos dado ao programa.
Debo especificar iso.
Vou facer este cambio antes de publicar estes e envialos a vós.
>> ESTUDANTE: E se ten un nome do medio?
>> Jason Hirschhorn: Se ten un medio nome, está sen sorte.
Sinto moito.
Ou se só vai por Shakira, tamén está fóra de sorte.
Si?
>> ALUMNO: Entón, cando a xente non ten cs50.h, eles definen argv
como estrela argv de char?
Ou aínda se chama cadea argv?
>> Jason Hirschhorn: si.
Entón, cadea, de novo, máscara sobre o que exactamente está a suceder alí.
Isto vai ser descomprimido quizais o mércores, pero en breve.
É como Rodas pequenas.
Por esencialmente, é o mesmo.
>> Entón, imos dar un minuto para o programa este, a continuación, imos falar
como un grupo e, despois como dixen, envolver.
E eu creo que aínda son doces extra, entón vostedes deben espera ter
que, ou por favor, tome isto.
>> Sentímolo se aínda está escribindo, pero quero mergullo e nós
pode remata-lo xuntos.
Entón, eu teño escrito, # include cs50.h, # include stdio.h.
int main (void), rizado cinta, rizado cinta, dentro de tres liñas de
pseudocódigo, ter o nome completo do usuario, dúas e só dúas liña de comandos
argumentos, imprime un saúdo ao usuario, que inclúe o seu primeiro nome.
>> Así, o primeiro, tomar nome completo do usuario.
Quen me pode axudar a tomar nome completo do usuario?
Cómo fago esa parte?
Vostedes fan a primeira parte?
Colla o nome completo do usuario.
Así, para que unha liña de comandos argumento, o que debo escribir?
¿Que debería cambiar en miña declaración de función?
>> ALUMNO: Non quere que sexa máis branco.
>> Jason Hirschhorn: Exactamente.
Non quero que ela sexa anulada.
O que quero que sexa?
>> ALUMNO: argc Int
>> Jason Hirschhorn: Int argc.
>> ALUMNO: argv secuencia.
>> Jason Hirschhorn: cadea argv.
>> ALUMNO Sergio, soporte.
>> Jason Hirschhorn Sergio, soporte.
É exactamente iso, e iso é en realidade, como eu vou conseguir
nome completo do usuario.
Eles están indo para poñelas alí.
De modo que un está feito.
Entón agora quero dous e só dous argumentos de liña de comandos.
Entón Noé, o que é unha forma que eu poida comprobar o seu número de orde
argumentos de liña que eu teño?
>> ALUMNO: Vostede fai un if.
>> Jason Hirschhorn: Si declaración, exactamente.
O que quero que a condición?
>> ESTUDANTE: Se argc superior a 3.
>> Jason Hirschhorn: Se argc é maior que 3.
Se argc superior a 3, o que fago?
>> ESTUDANTE: Return 1.
>> Jason Hirschhorn: Return 1.
Será que garantir que teño dúas e só dúas?
>> ALUMNO: Non
Se é maior que argc 3 e inferior a 2.
>> Jason Hirschhorn: Se argc é maior a 3 e argc é inferior a 2.
¿Que é un xeito que podo escribir isto en só unha liña, ou sen o uso que
e operador booleano?
>> ALUMNO: Non é igual a 2.
>> Jason Hirschhorn: Se argc non é igual a 2.
Exactamente.
Entón, se argc non é igual a 2, é dicir me vai dar a este programa,
personalizado, cando executa-lo, e que me vai dar cantos
argumentos de liña de comandos?
Cantos vou buscar?
>> Sentímolo.
Déixeme reformular iso.
Se argc = 2, cantas cousas fixo o usuario escribir na liña?
>> ALUMNO: Unha.
>> Jason Hirschhorn: Só un.
Entón, antes, estaba seguro, Noah.
O que eu realmente teño poñer alí?
>> ALUMNO: Isto é igual a 3.
>> Jason Hirschhorn: ARGC non é igual a 3.
Quero ser igual 3 porque quero personalización máis dos outros dous.
Entón, se argc non é igual a 3, o retorno 1.
Por que di voltar 1?
>> ALUMNO: Por iso significa que está mal.
>> Jason Hirschhorn: Isto significa que é malo, eo que é o que imos facer?
>> ALUMNO: Re-solicitar ao usuario.
>> Jason Hirschhorn: Vai saír o programa, polo que terá que correr
de novo, pero non temos nada aquí para solicitar a eles de novo.
Non pedín por iso.
Entón, iso é correcto.
Retorno 1 só sae do programa.
Grande.
>> E imprimir un saúdo ao usuario que inclúe o seu primeiro nome.
Como podo facelo?
Anna?
>> ESTUDANTE: printf.
>> Jason Hirschhorn: printf.
>> ESTUDANTE: ("
>> Jason Hirschhorn: (
>> ALUMNO: "Ola
>> Jason Hirschhorn: "Ola
>> ALUMNO:% s
>> Jason Hirschhorn:% s
>> ALUMNO: / n
>> Jason Hirschhorn: / n
>> ALUMNO: ",
>> Jason Hirschhorn: ",
>> ALUMNO: argv
>> Jason Hirschhorn: Sentímolo?
>> ALUMNO: argv
>> Jason Hirschhorn: argv
>> ALUMNO: corchetes 1.
>> Jason Hirschhorn: corchetes?
>> ESTUDANTE: 1.
>> Jason Hirschhorn: 1.
>> ALUMNO: E) punto e coma.
>> Jason Hirschhorn :) comas.
Imos realizar este.
Fai personalizado.
. / Personalizado.
É só saír.
Por que saír?
>> ALUMNO: Non especificou ningún argumento.
>> Jason Hirschhorn: Eu non fixen poñer todos os argumentos dentro
Parece gran.
Vostedes acertaron de cheo.
Entón, de novo, entrou argv e Comprobarase a principios argc.
Estes son dous importantes cousas para lembrar.
Así, nos nosos dous últimos minutos antes de nós deixar, non imos chegar a pset dous, pero
como dixen, se quere ir despois por 10 minutos, eu o faría el feliz de ir
máis convosco a lóxica para estes conxuntos de problemas.
Tivemos unha chea de cubrir hoxe entón eu non chegar ata eles.
Xeralmente, gustaríame incluír que, ao final.
Entón, se quere ir por aquí, ir ao redor de 10 minutos.
Nós imos facelo.
>> Entón, como eu mencionen no inicio, pset cero e un, teremos que
retorno de volta para ti como pronto como sexa posible.
O obxectivo é facer que pset un producto, Comentarios a parte,
antes pset dous é debido.
Entón, se cometeu algúns erros ou estilisticamente, as cousas poderían ser mellores,
vai ter esta información para que non vai facer as mesmas cousas en pset dous.
E entón, no futuro, vai ter todo do seu producto e comentarios pset
de volta antes de que o próximo é debido.
>> Por último, se eu puidese poñer noutro plug para o GABARITO.
Esta é a súa primeira sección.
Foi a miña primeira sección ensinar este ano.
Vaia ata alí.
Escribir cousas, boas e malas, e eu vou usalo para facer
sección mellor a próxima vez.
E para rematar, unha vez máis, se precisa calquera cousa, me aviso.
Estou máis que feliz en axudar vostedes.
Se só quere doces, I terá doces extra.
Estou feliz en trae-lo para ti.
>> Este será un curso incrible.
Este é un dos, se non o meu favorito Por suposto, eu tomei en toda a miña vida,
e eu espero que sexa que marabilloso para ti.
Entón, quero facer todo no meu poder para facelo incrible para ti.
Vou enviar un correo-e se está na miña sección ou Noah, e
tratará de axenda con cada un dos vostedes un tempo de facturación sobre o
próximo par de semanas para que eu poida obter un sensación de que o seu fondo CS é,
e tamén me vai axudar a adaptar estes seccións para mellor atender ás súas necesidades.
Entón, iso é o que eu teño aliñados.
Unha vez máis, eu vou velo do lado de fóra Se queres estar alí.
Este foi de dúas semanas sección.
Grazas a vostedes moito.