>> LUCAS FREITAS: OK, eu creo agora estamos en directo.
Benvido ao CS50 Supersection.
Estamos menos cómodo.
O meu nome é Lucas Freitas.
Son un CS50 Cabeza TFS.
Este é Lauren.
>> Lauren CARBALLO: Ola, eu son Lauren.
Eu tamén son xefe TF para CS50.
>> LUCAS FREITAS: Hoxe nós só estamos indo para dar unha visión xeral de todo o que
caras aprenderon nunha semana, espero que para dar a vostedes unha boa
sentido para o que debes saber para definir un problema.
>> Anuncios só unha parella.
Primeiro de todo, o horario de expediente.
Horario de atención están a ocorrer de luns o xoves en diferentes casas en
Annenberg cada día.
Son un recurso moi bo para ti caras que están por vir e facer preguntas, e
falar con TFS e ata intercambio ideas con outros alumnos.
Entón non esqueza usar este recurso no seu favor.
>> A segunda cousa é o CS50 Appliance.
Para o último [inaudível]
Vostedes non ten que realmente ter un aparello.
Acaba de facer todo en seu ordenador persoal.
Pero a este problema, o que realmente ten ter unha máquina virtual, polo que non
Asegúrese de baixar o CS50 Appliance e configure-lo.
>> E a terceira cousa é estar seguro de iniciar o conxunto de problemas o máis rápido posible só
porque é moito máis doado atopar axudar cando está no
no inicio da semana.
Porque as persoas tenden a agardar a que o último segundo para iniciar o conxunto de problemas,
e logo, vai para o horario de expediente, e hai unha chea de xente.
Onde se ir o luns, vai a ver que se pode falar para TFS
practicamente durante toda a noite, e eles van ser máis que
pracer en axudar.
>> Lauren CARBALLO: Podo deixar por só un segundo?
Toda a xente soubo baixar o CS50 Appliance?
A xente intentaron?
>> LUCAS FREITAS: Para descargar, polo xeito, pode obter instrucións de
cs50.net/appliance.
>> Lauren CARBALLO: Certo.
E fai levar un pouco para o noso administradores de sistemas para que obteña unha licenza
clave, de forma que se rexistrar para o avaliación gratuíta en primeiro lugar.
Desta forma, vai telo por 30 días, e despois esperar pola súa clave de licenza
que debe darlle a vostede por un ano.
>> LUCAS FREITAS: Primeiro de todo, imos falar un pouco
sobre o CS50 Appliance.
O CS50 Appliance é realmente un virtuais máquina que vai
executado no seu propio ordenador, que é basicamente executando outro ordenador
dentro do seu propio ordenador.
O que é moi legal.
E, de feito, é usado en todas as partes.
A xente que a tecnoloxía ía saber que isto é usado o tempo.
vostede?
Pode ter varios ordenadores nun único dispositivo.
>> Imos realmente un ollo no Appliance.
Cando vai para o aparello despois rexistrar, terá que
poñer o seu nome e usuario para Harvard de modo que pode obter todos os rexistrados.
Vai ver basicamente só un fondo, e logo, Home and Trash,
e logo, eses pequenos iconas.
Este tres iconas son realmente o máis cousas importantes que pode ter en
O seu dispositivo.
>> O primeiro é o Gedit, que é un texto editor, como o bloque de notas ou como
calquera tipo de editor de texto.
É só algo que usan para escribir código e, a continuación, facer cousas con el.
>> A segunda cousa que nós temos aquí é Chrome.
Entón, se precisa utilizar a Internet no aparello, que é
o que pode usar.
>> E a terceira cousa é o terminal, que é realmente moi doce.
A xente xeralmente son unha especie de medo de o terminal, porque é este mesmo
aplicación á moda antiga, en que basicamente só escribir todo con
teclado.
Non hai moita interacción co rato.
Pero, en realidade, o terminal fai cousas moi boas.
>> Primeiro de todo, imos só pasar por algúns comandos que
pode usar na terminal.
>> Lauren CARBALLO: E Sinto-se libre para deixar connosco se ten algunha dúbida.
>> LUCAS FREITAS: Yeah.
Así, o primeiro mando que temos para o terminal é ls.
ls significa basicamente lista todo, todo os ficheiros e todos os directores,
que eu teño no lugar que eu estou en.
Entón, se eu fai ls aquí, eu vou ver que eu teño algúns directorios.
Eu teño o meu ordenador, as transferencias, os rexistros e os vhosts.
Esas son en azul, porque son todos os directorios.
>> Entón tes algúns outros arquivos.
Ten como Ola e hello.c, que son só arquivos, e están en
cores diferentes.
Polo tanto, este é un comando moi importante só podes ver cales son os arquivos
e directorios que ten no directorio que
está no terminal.
Cando ve jharvard @ aparello e logo, o pequeno símbolo de alí, o
til, iso só quere dicir que esa é a directorio que existe na actualidade.
>> Lauren CARBALLO: Entón escribindo ls é case como facer clic no cartafol
que está listado alí mesmo, na Mostra vostede todo o contido que están
dentro desa carpeta.
>> Audiencia: Existe texto tras o ola.c?
>> Lauren CARBALLO: Ah, non pode ver iso, porque é azul.
>> LUCAS FREITAS: Di toras e VHosts.
>> Lauren CARBALLO: Estes son só outros cartafoles.
Sinto moito, é realmente difícil de ver.
Quizais se apagou as luces?
Colton, quere probar e atopar a chave de luz?
Sentímolo por iso.
Eu non penso niso.
>> LUCAS FREITAS: Pero é basicamente -
si, se puidese -
>> Lauren CARBALLO: Zoom na súa pantalla.
>> LUCAS FREITAS: Non teñen esta característica.
>> Lauren CARBALLO: [inaudível].
Aceptar.
Así, hai só unha morea de recursos naturais luz nesta sala tamén.
>> LUCAS FREITAS: Supoñamos que hai outros dous directorios alí.
>> Lauren CARBALLO: Só ten que ter con nós.
Esta é a única parte que vai estar a ollar para o terminal.
>> LUCAS FREITAS: O seguinte comando é basicamente pode utilizar organizar
os seus arquivos -
por exemplo, os seus arquivos nun C directorio, pero non ten un
directorio só para ficheiros C aínda.
Basicamente pode crear un directorio mediante o terminal, así como, o que é
o mesmo que botón dereito e dicindo Novo Cartafol.
A orde é facer directorio, que é mkdir, entón basicamente "facer" e
"O directorio".
>> E entón podes poñer o nome do directorio.
Imos dicir que eu quería ser chamado, Eu non sei, imos dicir pset1 Facer
iso, acaba de crear un directorio.
Imos comprobar se está alí.
Entón, se eu fai ls, e agora vexo rexistros e entón pset1 e VHosts.
Entón, eu teño o novo directorio alí.
>> E, despois de que ten un novo directorio, quizais quere navegar
para el, para que o seguinte comando deste cd, que significa, basicamente, ir a un
directorio específico.
Entón, se eu queira ir a pset1, Podo só facer cd pset1.
>> Lauren CARBALLO: cd significa cambio directorio, [inaudível] poder
lembre que.
>> LUCAS FREITAS: E agora ve que no canto de só ter jharvard
aparello, teño jharvard aparello, e despois pset1 porque está amosando
me onde estou neste ordenador.
>> Agora, se eu queira volver á directorio que foi antes de este, eu
pode facer un punto cd punto, o que significa só ir ao directorio que era antes,
como o pai deste directorio, basicamente.
E agora eu vexo que eu son volta a jharvard.
>> A seguinte cousa que eu podo facer iso é rm, que é eliminar o ficheiro.
Por exemplo, imos primeiro facer ls a ver que eu teño aquí.
Teño Ola e hello.c.
Imos dicir que eu queira eliminar-los.
Eu podo facer rm Olá
Vai dicir "borrar o ficheiro regular Ola? "E digo" si ". E agora, se eu
ls facer, eu vexo que é xa non está alí.
>> Se eu tentar empregar rm a un directorio, con todo, iso non vai
para deixar facer calquera cousa.
Vai dicir, hey, ten Non se pode eliminar un directorio.
Polo tanto, temos estoutra vir chamado rmdir, que significa, basicamente,
eliminar o directorio.
Podo, por exemplo, eliminar pset1.
E se eu fai ls, eu non ten máis.
>> Calquera dúbida sobre iso?
Non?
Si?
>> Audiencia: É importante que deixe un espazo despois - sempre que
comezar a escribir algo no?
>> LUCAS FREITAS: Yeah.
Se eu fai como CD eo directorio, Teño que poñer un espazo.
O espazo que está falando?
>> Lauren CARBALLO: O espazo entre cd e [inaudível].
>> LUCAS FREITAS: Si, vai ter que poñer os espazos porque é o cd
mando e, a continuación, a seguinte secuencia que vostede tipo é basicamente o directorio.
Entón, é como un argumento.
Si?
>> Audiencia: Cando lista, todos aqueles son directorios distintos, non?
>> LUCAS FREITAS: Si, eles están no directorio.
>> Audiencia: Cal é a diferenza entre os directorios?
>> LUCAS FREITAS: Son só diferentes cartafoles.
Directorio é un cartafol no seu computador.
>> Audiencia: Abrir cartafol.
>> LUCAS FREITAS: Si, é só un cartafol aberto.
>> Lauren CARBALLO: aquí, os que están en azul son reais
directorios que pode entrar e logo ver unha chea de cousas que son
dentro diso, o que é lamentable porque non pode ler o
aqueles en azul.
E os en branco son só arquivos que están dentro do directorio actual.
>> LUCAS FREITAS: Entón directorios son carpetas.
Os outros son arquivos.
>> Audiencia: Cal é a orde para axustar-la ou para limpa-la?
LUCAS FREITAS: Para borrar?
Lauren CARBALLO: Para borrar?
LUCAS FREITAS: Eu creo que que é "clara". É.
Entón acaba de escribir claro se A súa pantalla é moi desorde.
Algunha pregunta?
E vai aprender unha morea de outras ordes só naturalmente durante o
semestre, porque son moi útiles.
>> Entón, agora imos falar sobre a compilación.
Nós falamos sobre pseudocódigo e código fonte e código obxecto.
E hai unha morea de códigos, e quizais Vostedes están confuso sobre iso.
Imos falar un pouco sobre o que ocorre cando está escribindo un programa,
e recompila-lo, e convértese en un arquivo executable.
Estas son todas as palabras que vostedes Probablemente xa escoitou falar, e quizais non estea
realmente certo o que está a suceder.
>> Digamos, por exemplo, que quero escribir un programa que di "Ola". O
primeiro que ven na súa mente é vostede medio que tentar pensar en como está
vai facelo na súa mente, e Probablemente está a pensar en inglés ou
outra lingua, como naturais lingua, probablemente.
E entón pensa, ben, se eu queira, por exemplo, escribir un programa que
di "Ola", eu ía comezar un programa, Vou imprimir Ola, e entón eu vou
saír do programa.
Este é pseudocódigo.
Isto é basicamente só estás chegar a unha secuencia de eventos
que vai facer para ser capaz de escribir un programa.
>> Entón tes o código fonte, e o código de fonte non precisa
ser especialmente en C. Estamos a falar sobre o código fonte en C, porque iso é
a lingua que está a aprender, pero está claro código pode ser practicamente calquera
linguaxe de programación que ten.
Máis tarde, o semestre, vai para aprender outros idiomas.
Iso é tamén o código fonte.
>> Por exemplo, aquí, esta é a miña fonte código, e entón eu estou incluíndo un
biblioteca, e entón eu comezo principal, e, a continuación, imprimir.
E Laura vai falar un pouco pouco sobre todo isto.
Polo tanto, este é o código fonte.
>> E o que é o código de obxecto?
O obxecto é unha morea de ceros e queridos, basicamente.
O que pasa é que ten inicialmente pseudocódigo, que é todo en inglés.
E quero dicir, entende isto.
Probablemente os seus amigos entender lo, ea maioría da xente
entender a idea.
Pero os computadores son realmente mudo, e non entenden inglés, entón
ter traducir isto en algo, xeralmente traducido nalgúns
linguaxe de programación.
>> E pode pensar nunha programación linguaxe como como unha especie de linguaxe
que informa o ordenador como de falar e de entender.
Está basicamente escribir algo en unha linguaxe que ambos vostede eo seu
ordenador entende.
Ese é o código fonte.
Entón, indo forma pseudocódigo a fonte código, é ata.
É basicamente está facendo o seu programa.
>> Pero o problema é que o ordenador nin sequera
entender a linguaxe de programación.
El non entende código fonte de todo.
En realidade, só entende ceros e uns.
Entón temos esta cousa moi máxica chamada un compilador, que basicamente é
será a fonte de chamada que escribiu nunha linguaxe tanto a vostede
e seu ordenador falar, e agora está vai transformar isto en
ceros e uns.
Entón, basicamente o que o compilador fai é recibe o código fonte, neste caso C,
que vai transformalo en ceros e aqueles que o ordenador
entende e pode facer unha arquivo executable fóra del.
>> Será que isto ten sentido?
Pode só pensar no compilador como algún tipo de tradutor que estea
axudar a explicar para o ordenador exactamente o que se quere facer.
>> Pero como fago para compilar.
Imos volver para o aparello, e imos dicir que eu estou facendo este programa.
Primeiro vou crear un directorio aquí, e eu vou chamalo
"Práctica". Agora vou para navegar ao directorio, por iso, a práctica cd.
Agora eu estou dentro práctica.
>> Agora quero comezar gedit, entón como é que eu fago isto?
I ou facer clic aquí, ou podo só literalmente escribir "gedit", e que vai
para abrir para min.
>> Agora eu vou escribir o meu programa, de xeito exactamente o que eu escribín no slide.
Estou declarando unha biblioteca.
Estou facendo int main, nula.
E agora eu estou facendo printf, Olá
Agora estou indo a gardar esta.
Deixe-me poñer en práctica, e Vou chamar esa hello.c.
Entón, agora está gardado.
>> Se eu queira recompila-lo, realmente pode facelo en dous lugares diferentes.
Ou podo facelo nunha fiestra de terminal, polo que esta grande, ou pode
usar gedit que realmente ten un fiestra de terminal aquí.
Así, pode moi cómodo só facer seu código, e entón pode simplemente escribir
todo o que aquí, e tentar compilalo.
>> Entón, como fago para compilar o código?
O xeito máis doado que temos é a usar facer, o que é unha función que
Vai, basicamente, a compilar o código.
Vostede só ten que dicir facer Hola, así "Facer" eo nome do programa.
>> Oops.
Isto é raro.
>> Lauren CARBALLO: Pode [inaudível]?
>> LUCAS FREITAS: Sentímolo.
Non garda-lo no directorio correcto.
Veña para a práctica, e agora garda-lo como hello.c.
Sinto moito.
Agora que está gardado.
>> Déixeme só facer ls e ser seguro de que el está aquí.
OK, agora é aquí.
Polo tanto, agora se eu fai Ola, el Cospe un chea de cousas, pero despois só dá
me outra liña para o terminal, que quere dicir que foi un éxito.
Polo tanto, agora se eu fai un ls novo, realmente ver este ficheiro en verde, que é a
arquivo executábel.
>> E entón se eu queira para executa-lo, todo o que Teño que facer é barra dot Olá
Vai dicir Ola ben aquí, entón é o que eu estou pedindo a el.
>> Non é máis unha forma de compilar, que está a usar bumbum.
Clang é só un compilador que temos, e é un pouco máis detallado para
compilalo.
Pero funciona moi ben.
Entón, se eu fai bumbum, e despois-o, a continuación, nome que quero dar a
o ficheiro executable, entón imos dicir que "Ola". E, a continuación, o arquivo que quero
para compilar, hello.c.
Tamén vai compilar.
E ten o ficheiro aquí, e Podo só executa-lo tamén.
Así, ambos funcionan.
>> Será que isto ten sentido?
Algunha pregunta?
>> Audiencia: Pode zoom de aquí a pouco?
>> LUCAS FREITAS: Sentímolo?
>> Audiencia: Zoom in?
>> Lauren CARBALLO: Eu creo que pode só comandar plus.
>> LUCAS FREITAS: Comanda o que?
>> Lauren CARBALLO: Command plus.
>> LUCAS FREITAS: Non
>> Lauren CARBALLO: Ah, iso non é indo para o traballo, porque -
é porque definir a resolución por iso.
>> LUCAS FREITAS: Non creo que podemos zoom in
Si, non podemos ampliar.
Ten outra pregunta?
Sentímolo.
>> Audiencia: Pode repetir bumbum?
>> LUCAS FREITAS: O bumbum?
Clang é o mesmo que facer, pero o diferenza é que primeiro eu vou
escribir tinido, que é o mando, entón eu vou facer -0, todo, o que se
só o que nós imos aprender máis tarde, como unha bandeira.
Entón, só creo que sempre ten que poñer-o.
>> E entón, en primeiro lugar, vai poñer o nome do ficheiro executable,
basicamente o ficheiro que está vai crear.
Entón eu podo dicir, por exemplo, e hello2 logo, o arquivo que quero para compilar,
que é o ficheiro c ..
Entón, iso é hello.c.
Será que isto ten sentido?
>> Audiencia: Ola que?
¿Que é iso?
>> LUCAS FREITAS: Hello.c.
E se eu recompila-lo, e se Eu ls, eu tamén teño un
hello2 que eu só compilado.
E se eu tentar executa-lo, que vai facer exactamente o mesmo que Ola,
basta imprimir Olá
>> Audiencia: Como é a make pode pór hello.c despois?
>> LUCAS FREITAS: O make, vostede Non ten que poñer o. c.
O make, que acaba de dicir o nome do programa.
Non ten que dicir. C.
Pero para bumbum, ten que.
>> Audiencia: Con clang tamén Ten que engadir o [inaudível]
>> Lauren CARBALLO: Yeah.
Entón, tamén ten que biblioteca.
>> LUCAS FREITAS: Si, iso é algo imos usar máis tarde.
Iso é chamado de conexión, e eu creo que somos imos falar sobre iso máis tarde.
Outra pregunta?
>> Audiencia: Vostede pon un tinido barra dot?
>> LUCAS FREITAS: Non
O conxunto de punto é só para abrir o ficheiro executable.
Entón bumbum, que acaba de escribir "bumbum", e entón o que quere abrir o
arquivo executábel que acaba de compilado, entón dot
corte e do nome.
Será que isto ten sentido?
>> Audiencia: Se fose só cambio [Inaudível] para Ola mundo, non é
ten que recompilar?
>> LUCAS FREITAS: Yeah.
se eu quero dicir, por exemplo ", Ola alí, "Eu só pode salvalo agora, e eu
só recompila-lo novo.
Entón deixe-me facer un make Olá
E se eu fai Ola, que vai dicir "Ola". Ten sentido?
Algunha pregunta?
>> Audiencia: Ten de incluír o estándar I / O para coordinar o traballo?
>> LUCAS FREITAS: Yeah.
O estándar de E / é basicamente a biblioteca que ten un
implementación printf.
Así que o correcto no superior inclúe stdio.
Isto é, incluíndo unha biblioteca basicamente ten unha morea de diferentes
ferramentas que pode usar.
un?
Deles é que printf é unha función que basicamente impresión
mensaxes na pantalla.
>> Algunha pregunta?
Non?
Aceptar.
Entón, agora imos falar -
>> Lauren CARBALLO: Nós só ir ao guía de estilo.
Quere só atopalo aquí?
>> LUCAS FREITAS: Entón nós imos para falar sobre o estilo.
>> Lauren CARBALLO: Oh, David non terminou.
Aceptar.
Por que non imos volver estilo ben ao final?
Foi realmente actualizada mentres falamos.
>> LUCAS FREITAS: Yeah.
Imos camiño para David para completar isto.
>> Lauren CARBALLO: Pode imos cambiar de traxe?
>> Entón, eu espero que todos foi gozar de risco.
Por desgraza, é o momento de afastar-se dese -
desgraciadamente é hora de se afastar a partir destes bloques de programación fermosa
para C. Pero, por sorte, todo o programación constrúe o que tes
está a traballar con en scratch son directamente traducibles a C, e estamos
comezará a aprender sobre algúns deles agora.
Imos primeiro falar sobre as condicións de en expresións booleanas.
>> Este está a ser executado en reserva enerxía da batería.
>> LUCAS FREITAS: Como é que non funciona?
Aceptar.
Vai alí, eu estou indo a obter o -
>> Lauren CARBALLO: Entón, as condicións son importantes porque nos permiten
introducir lóxica nos nosos programas.
Aquí está un exemplo dunha condición dentro dun programa C.
Imos observar como este -
Polo tanto, esta condición bloque aquí, este instrución printf non executará
a non ser que a condición dentro do parénteses, n maior que 0,
valorada como certa.
>> Agora, as condicións dentro f declaracións son expresións booleanas
o que significa que hai son só dúas opcións.
Eles nin podería avaliar a realidade, ou poden avaliar como falsa.
Entón, aquí, o que ten sentido, non? n maior que 0, significa que é un positivo
número, o que significa que imprime out "escolleu un número positivo."
>> Hai moitas expresións booleanas que pode formar o estado dunha
declaración de arranque.
Temos a menos.
Isto é menos que ou igual a.
Este é só un divertido [inaudível].
Se queres que o printf a ocorrer de ser o maior que ou igual a 0, entón
escolle isto.
Así, a igualdade só engade dereita despois do signo maior que.
>> Igual igual, o que é diferente do só un signo igual, igual igual
en realidade, significa que todo o que de no á esquerda desta é o mesmo que
o que está na parte dereita desta onde un signo igual é o que?
Que é só un sinal de igualdade?
Cesión.
>> LUCAS FREITAS: Quen dixo iso?
Isto é doce?
Oh, non.
Sentímolo.
Quere chegar doces.
Oh, OK!
Tres persoas están doces!
>> Lauren CARBALLO: Entón este aquí é o operador estrondo anterior
do signo igual, o que é non igual.
Entón, se iso foi dentro do meu estado, o corpo da condición sería
realizar só se o que está en a esquerda non é o mesmo que
o que está no lado dereito.
>> Eu tamén podo ter só o signo de admiración.
En realidade, xa veremos en un recurso desprazar como iso sería usado.
>> LUCAS FREITAS: Algunha pregunta?
Non?
>> Lauren CARBALLO: Podemos combina-las Expresións booleanas para a construción de máis
instrucións condicionais complicados.
Entón, aquí, o que está á esquerda lado das barras dobres ou
todo o que está no lado dereito da as barras dobres valorada como certa,
entón imos imprimir válido.
E entón, aquí abaixo, se calquera de na parte esquerda dos dous
ampersands e calquera de á dereita lado dos dous e comercial
valorada como certa, entón imos imprimir válido.
As barras dobres son chamadas de lóxica Operador OU os ampersands dobres son
chamado o operador lóxico AND.
Si?
>> Audiencia: Son aqueles só minúsculas l's?
>> Lauren CARBALLO: Non
Son, en realidade -
sabe a reacción, como por riba da súa tecla Return?
Ve iso?
>> LUCAS FREITAS: É realmente un bar.
>> Lauren CARBALLO: É, en realidade, só dous bares.
>> Audiencia: Pode usar o igual a igual cordas?
>> LUCAS FREITAS: Non
Nós imos aprender máis tarde algo sobre iso.
>> Lauren CARBALLO: Hai unha función que pode usar.
Pero non ten que preocúpanse que só aínda.
>> E se eu dar a este programa o número 5?
Que imprimirá?
>> Audiencia: [inaudível]
válido.
>> Lauren CARBALLO: Válido?
É.
Eu non sei quen comezou iso.
>> [Risas]
>> Lauren CARBALLO: Isto é medio asustado [inaudível].
>> Audiencia: Entón a parella e, iso só quere dicir que e?
>> Lauren CARBALLO: Yeah.
Así, o número 5 é tanto maior que 0 e menor que 100.
>> Audiencia: Por que sería un?
>> Lauren CARBALLO: un comercial é realmente algo diferente, e é
un operador bit a bit, o que vai aprender sobre máis tarde.
Pero é algo que realmente funciona cos bits dun determinado número.
>> LUCAS FREITAS: Só creo que non ten que se preocupar con iso de momento.
>> Lauren CARBALLO: Coido que é, probablemente, chegando a próxima semana.
>> LUCAS FREITAS: Algunha pregunta?
Non?
>> Lauren CARBALLO: Entón vimos que un el bloquear pode ir só, pero pode
tamén combinarse con outra persoa e bloque.
Polo tanto, neste caso, se non for maior que 0, imos imprimir "Vostede
escolleu un número positivo. "else, ou sexa, de ser 0 ou se é menos
que 0, imos imprimir, "Escolleu un número negativo."
>> O interesante aquí é que estes son exclusivas unha da outra.
Non vai ser un caso en que esta e esta
tanto pode imprimir.
>> Estou seguro que traballou co if / else caixa en perigo, polo que debe ser
moi familiar.
Si?
>> Audiencia: Será que necesitamos espazo entre Cont n igual GetInt entón no espazo
if?
Como usan unha liña de [inaudível]
>> Lauren CARBALLO: Ah, o espazo aquí?
>> Audiencia: Como aquel, pero o dobre do espazo.
Non, ir cara arriba.
Sobe.
>> LUCAS FREITAS: Só a liña?
>> Audiencia: Yeah.
>> LUCAS FREITAS: Só a liña en branco?
>> Audiencia: Yeah.
>> Lauren CARBALLO: Liña en branco?
Non
Isto é só unha cousa estilística.
>> LUCAS FREITAS: É como ás veces acaba de saltar algunhas liñas así
que o código non se parece un enorme bloque de texto.
>> Lauren CARBALLO: Eu creo que o que pasou era que tiñamos un comentario aquí, pero eu
levou-o para fora de xeito que vostedes terían para pensar sobre o código, en vez
que ler o meu comentario.
En xeral, o espazo non vai realmente afectar o xeito no que o programa é executado.
É unha cousa estilística.
E cando temos a guía de estilo actualizado e preparado para ir ata o final de
supersection, imos falar sobre iso máis.
>> Hai algo de malo con este programa, non?
Porque 0 non é realmente un número negativo.
Entón, imos ver se podemos solucionar isto.
>> Probablemente pode imaxinar con iso, di, non?
Se n é maior que 0, nós imprimir ", Vostede escolleu un número positivo. "Entón máis
se non é menor que 0 ", escolleu un número negativo. "else:" Vostede colleu
0. "
>> Agora, o interesante é que iso pode durar para sempre.
Pode ter un bloque if, else if un bloque, outro bloque else if, else if,
else if, else if, else, basicamente sempre que queiras.
E cando construído como este, estes son todos os que van ser
exclusiva de cada outro.
Si?
>> Audiencia: Entón, por que non pode só usar outro, se en vez de [inaudível]?
>> Lauren CARBALLO: Neste caso, si eu podería empregar outro, e sería
absolutamente ben, xa que o condicións en si son
exclusiva de cada outro.
Pero, se as condicións non foron exclusivos uns dos outros, é dicir ía
forzalos a nunca tanto avaliar, se iso ten sentido.
>> Audiencia: Neste caso, poderiamos niño a segunda, no primeiro caso?
>> Lauren CARBALLO: Si - o que quere dicir?
>> Audiencia: Se as dúas condicións non son mutuamente excluíntes?
>> Lauren CARBALLO: Se as condicións non son mutuamente excluíntes?
Pero quere só un deles para correr?
>> Audiencia: Quere só se en vez de outra persoa.
>> Lauren CARBALLO: Yeah.
Sempre hai vai ser lotes de formas que pode facelo.
Pode definitivamente niño deles.
E vai ver nun futuro foto que pode ter varios IFS, só un
despois do outro.
Pero esta é unha forma de loxicamente organizar o fluxo de seu programa.
>> LUCAS FREITAS: E hai unha cousa, é que preguntou sobre a colocación de
se e, a continuación, outra se.
Isto funciona perfectamente, pero é malo proxecto, porque, basicamente, se
comprobe primeiro se, e entender que o número é maior que 0, é
pode simplemente rematar o programa.
Non ten que comprobar se é menor que 0, non?
>> Pero se se, que vai comprobar ambos, mentres que, se fago outra persoa é,
vai comprobar se que é maior que 0.
Se é, non vai sequera ollar nas outras liñas do código.
Entón está basicamente comprobando-lo como dúas veces innecesarios, entón é por iso que
facer se else if.
Algunha pregunta?
>> Audiencia: Entón a función do outro, se é o mesmo que
se fose só se?
>> Lauren CARBALLO: Non
Está realmente indo a ver o meu próximo desprazar un exemplo en que pode
ser diferente.
Neste caso, é case o mesmo.
>> Entón, aquí, temos un exemplo de múltiple if, eo
función non é o mesmo como se eu tivese acaba de dicir se
máis, máis, se algo máis.
Imos pensar sobre o que ía imprimir se eu escribir o número 95
para este programa.
>> Audiencia: [inaudível]
>> Lauren CARBALLO: E entón?
>> Audiencia: [inaudível]
>> Lauren CARBALLO: Yeah.
Polo tanto, neste caso, estas condicións son non exclúen mutuamente un do outro.
E por que non hai nada que impida esta condición de avaliar se esta
un xa ten, son só todo vai imprimir.
Entón como eu podería solucionar isto?
>> Audiencia: else IFS?
>> Lauren CARBALLO: Pode usar else IFS.
Podería cambiar a orde destes, non?
Se eu fixen iso primeiro?
Ben, en realidade, non.
Isto non funcionaría por 95.
>> LUCAS FREITAS: Non, só os else IFS.
>> Lauren CARBALLO: O else IFS tería fixado iso.
Será que aclarar a confusión entre IFS e máis IFS?
>> Audiencia: Eu só quería preguntar si Usou else if, que ía deixar?
>> Lauren CARBALLO: Certo.
Entón, só que esta primeira.
Se eu escribir o número 95, só que esta tería impreso, e nunca
tería progresando ao resto.
>> LUCAS FREITAS: Só tipo de pensar como se isto acontecer, faga iso.
O resto é como se non, cheque para iso, e, a continuación, facelo.
Entón, como son todos mutuamente exclusivo.
Non pode entrar en dous sobre aqueles.
>> Audiencia: Pode usar unha lóxica E para esta situación?
>> Lauren CARBALLO: Yeah.
Esta é outra forma que puidésemos ter corrixido este problema.
Estamos podería definido varía, non?
Entón, eu podería dicir, se non é maior do que 90 e menos que -
ben, eu creo que iso non fai moito importa, pero aquí eu podería dicir se
n é superior a 80 e inferior a 90.
Máis que 70, menos que 80.
Isto tamén tería funcionando.
>> [Risas]
>> LUCAS FREITAS: Ela ten medo.
>> Lauren CARBALLO: Non teña medo.
>> LUCAS FREITAS: Non se que estará errada.
É que é innecesariamente detallado.
Como en ciencia da computación, hai que ser tan sinxelo como sexa posible con tal
ten a función.
Quere o doce?
>> Audiencia: Non precisa.
>> Lauren CARBALLO: Está asustando todos, Lucas.
>> LUCAS FREITAS: Sentímolo.
>> Lauren CARBALLO: David tamén mencionou estes instrución switch en clase.
Basicamente o que está a suceder é a chave declaración leva unha variable.
Neste caso, nós estamos levando un número enteiro.
>> O enteiro for 1, imos imprimir ", escolleu unha pequena
número. "Se o enteiro é 1," Vostede escolleu un número medio. "O
enteiro é 3 ", escolleu un alto número. "E eu tamén tiña un caso estándar
aquí en baixo, pero non está mostrando se, o que é moi malo.
>> Basicamente, este é só outra sintaxe.
Poderiamos ter implantado este exacto mesmo co caso e else if
declaracións.
Pero cando hai moitos diferente condicións e os lotes de diferentes
variacións sobre o que quere facer para cada entrada, esta é unha opción.
Por iso, é só unha boa sintaxe saber.
Si?
>> Audiencia: Por que non hai unha barra invertida n no primeiro?
>> Lauren CARBALLO: Para alí enriba?
Non hai ningunha barra invertida n alí enriba porque o GetInt -
se tentar facelo, que vai darlle esta pregunta.
Déame un número enteiro entre 1 e 3.
E se eu poñer a reacción n, sería Léveme á seguinte liña, pero eu só
quería que escriba o número enteiro logo tras os dous puntos.
Podería ter colocado a reacción n.
Non é un gran negocio.
Si?
>> Audiencia: Para este código, por este caso, é que por mor
é o primeiro caso?
Porque -
>> Lauren CARBALLO: Non, non, non.
Polo tanto, esta é me dar un enteiro entre 1 e 3.
Se n é 1, imprimo iso.
Se eu tivese preguntado para as cartas, eu podería ter dixo, me dea unha letra entre A
e C. Entón, iso sería caso A.
>> Audiencia: [inaudível].
O caso sería só [inaudível]
>> Lauren CARBALLO: Si, certo.
Si?
>> Audiencia: E se quería ter máis dunha expresión relacional?
Entón, en vez de dicir n igual a 1, [inaudível]
n é superior a 1, o primeiro caso?
>> Lauren CARBALLO: En realidade, se eu non fai definir algúns destes casos, este sería
ser levar para abaixo.
Entón, en realidade, quizais iso non é o que está pedindo.
>> LUCAS FREITAS: Coido que está pregunta se caso n foi maior que 0, no caso
menos que 0.
>> Lauren CARBALLO: Quizais a chave declaración non é realmente o que quere
para usar neste caso.
>> LUCAS FREITAS: A instrución switch é Só para o valor, entón está comprobando de
o valor é como iso ou aquilo.
Entón non pode realmente poñer condicións.
>> Audiencia: E se a persoa tipo con [inaudível]?
>> Lauren CARBALLO: Isto sería meu caso estándar, que por desgraza
non pode ver.
>> LUCAS FREITAS: [inaudível] facelos ver.
>> Lauren CARBALLO: En realidade, Vostede sabe o que?
Nós só estudar 50, e eu vou só ampliar as láminas sobre estudo
50, porque este é só irritante.
Entón deixe-me realmente ir a estado.
Isto só vai levar un pouco.
>> Todo ben.
Entón, eu sinto moito.
Polo menos agora nós imos ser capaces de ver todo sen el cortando.
Todo ben.
>> Entón, se eles puxeron en un 10, que sería estándar aquí ao meu caso estándar, e eu
sería só imprimir válido porque eu pediulles para entrar un enteiro
entre 1 e 3.
Algunha pregunta?
Si?
>> Audiencia: Imos dicir que para o caso dun, no caso de tres, digamos que quería que fose todo o
mesmo, entón escolleu un número isto non é un número medio.
Neste caso, sería redundante?
Será que só cambia o texto en ambos os deles, ou habería algunha
redundancia?
Existe algunha maneira de combinar [Inaudível]?
>> Lauren CARBALLO: Hai formas de combina-los, pero eu creo que pode
só combinar os adxacentes.
Entón, se eu non definir nada para o caso de dous, iso sería
aplica-se a ambos os casos.
Oh, se eu non poñer calquera cousa para o caso un, isto aplícase tanto
caso un e dous.
Se isto ten sentido.
>> Audiencia: Pode repetir este?
>> LUCAS FREITAS: Aceptar.
Se fixo, basicamente, como, ten o mesmo, pero non poñer
calquera cousa aquí, sería tanto para caso un ou dous casos, facelo.
Non?
E esta pausa significa que se chegar neste caso, só tes que saír.
Entón é iso que o freo significa.
Entón, se eu só fixen iso, mira, é caso un, e que tería só que facelo.
Se fose caso dous, que tamén faría só vir aquí e facelo.
>> Audiencia: Pero pode facelo?
Se hai algo para caso dous [inaudível]
>> Lauren CARBALLO: Eu non creo pode facelo.
Eu non creo que pode saltar arredor.
Podes facelo, Rob?
Creo que non.
>> Audiencia: Entón, só un número pode ir detrás de un caso, non?
Non pode haber un caso, coma, dous?
>> LUCAS FREITAS: Non, non pode.
Vostede definitivamente non pode.
>> Lauren CARBALLO: Eu quero dicir, o punto é esta é unha opción, e iso non pode
se encaixan no seu caso de uso, polo que entón usaría a condicións.
>> Audiencia: Entón, por que faría iso?
O switch?
>> Lauren CARBALLO: Eu usaría ese Se ten moi definido -
En realidade, Lucas, é que está bloqueado.
>> LUCAS FREITAS: Oh, desculpe.
>> Lauren CARBALLO: Se ten moito comportamentos definidos que quere para
Cada entrada, que pode ser un algo máis conciso que escribir fóra
unha instrución if para cada un.
>> Audiencia: O que fai o romper dicir de novo?
>> Lauren CARBALLO: A Fenda significa parar.
Teña en conta que, se eu non tivese esa pausa aquí, teriamos acaba de caer abaixo
para o caso seguinte.
>> LUCAS FREITAS: Quebra significa para fóra da instrución switch.
Porque se é un, quero imprimir este e saír.
Eu non quero para comprobar calquera outra cousa.
>> Audiencia: Non quere imprimir máis nada.
>> LUCAS FREITAS: Yeah.
Por mutuamente exclusivos.
>> Audiencia: E será que iso só proceder para o caso seguinte, o primeiro caso
non é verdade?
Ou será que probar todos os casos á vez?
>> LUCAS FREITAS: Non, verifica secuencialmente.
Secuencialmente, si.
Só unha pregunta, entón temos que seguir adiante, para que poidamos cubrir todo.
Si?
>> Audiencia: Así, para o caso, podería feito algo ademais de só un?
Podería darlle un alcance?
>> LUCAS FREITAS: Non
>> Lauren CARBALLO: Eu non creo que pode dar un rango.
>> LUCAS FREITAS: Non pode vostede non pode darlle un intervalo.
>> Audiencia: O caso é específico [Inaudível].
>> LUCAS FREITAS: Cambiar é unha especie de valores.
Está facendo cousas diferentes, dependendo nun valor, un valor específico.
Non pode facer intervalo, non se pode facer máis nada.
É só unha ferramenta para ver.
>> Lauren CARBALLO: A maioría da xente non usan intercambiar declaracións moi de CS50,
pero está aí.
>> Todo ben.
Polo tanto, a seguinte cousa que imos falar sobre o operador ternário.
Este é só un outro tipo de condicional.
Basicamente o que está pasando aquí é que eu son pedindo un número enteiro, e, se non é
superior a 100, eu estou indo a imprimir "Alto". Se non é, eu vou
imprimir "baixo".
>> Entón o que está facendo é a condición é aquí entre parénteses, e
pode tipo de pensar a cuestión como eu estou pregunta se
iso é verdade ou non.
De ser certo, eu vou facelo primeiro cousa, e se iso non é verdade, eu son
fará esta segunda cousa.
>> Calquera dúbida sobre o operador ternário?
>> LUCAS FREITAS: Só quero observar desde David é que sempre que ten un
condición -
>> Lauren CARBALLO: Eu creo que o David de asistir a través da transmisión en directo.
>> LUCAS FREITAS: Está facendo fluxo de vida agora.
Así, sempre que ten unha condición, que é debería poñer chaves,
así como nós temos en un interruptor declaración aquí.
Temos claves aquí.
Para calquera condicións, está debería tamén poñer isto.
>> Lauren CARBALLO: Vai ver iso na guía de estilo.
Nós realmente non ten o guía de estilo agora.
Eu creo que David aínda funciona.
>> LUCAS FREITAS: El dixo que é só traballar agora.
>> Lauren CARBALLO: Ah, é traballar agora?
Aceptar.
Entón, ao parecer, este ano, o estilo guiar, mesmo se ten só unha liña,
ten que poñer os claves Pol
Non precisa necesariamente ao funcionalidade do programa.
E quizais devêssemos facer unha pausa despois as condicións e ir directo
coa guía de estilo para limpar algunhas destas cousas?
>> LUCAS FREITAS: Yeah.
Ten unha pregunta?
>> Audiencia: Non, eu vou esperar ata a guía de estilo.
>> Audiencia: Podería volver ao operador ternário?
>> Lauren CARBALLO: ternário, si.
>> LUCAS FREITAS: Operador ternário é basicamente unha declaración máis, pero
en vez de ter que as dúas liñas comprobar se un e despois o
outra cousa, só ten unha liña.
Entón, basicamente, se eu queira dar unha cadea un valor de alta ou baixa, e I
quere facer un alto se non for maior que 100 ou abaixo, se é menor, o que podo facer
é este [inaudível]
a corda vai ser, e entón eu preguntar o programa é n maior que 100?
>> Entón é por iso que eu teño esa expresión en parénteses e despois
o punto de interrogação.
Estou pedindo é maior que 100?
Se é, que vai ser alto.
Se non é, será baixa.
>> Entón, basicamente, o que pensas que preguntar unha pregunta, entón pon entre parénteses
a condición.
Entón poñer o punto de interrogación porque está pregunta iso.
E se isto é verdade, que vai ser o primeiro valor [inaudível] aquí.
Se non é, eu vou poñer o valor que é despois dos dous puntos.
Será que ten sentido?
>> É tamén algo que é como un ferramenta en C, pero non ten que
especialmente usalo.
Pero a xente xeralmente quere CS que porque só salva liñas.
>> Lauren CARBALLO: É moi elegante.
Fai moi en só unha declaración.
>> Audiencia: Entón o sinal de porcentaxe é só con independencia dos resultados obtidos en
a liña anterior?
>> Lauren CARBALLO: Oh, eu sinto moito.
Este sinal de porcentaxe é realmente un espazo reservado para este s.
Nunha instrución printf, ten esta corda aquí, que é o que vai
imprimir, pero non pode simplemente poñer iso é alí dentro.
En caso contrario, ía imprimir os s, literalmente.
Entón poñemos un por cento aquí para manter este sitio realizada por calquera
vén despois da coma.
>> Así, por unha corda, ten cento s.
Para un enteiro, por cento i.
Para un float, por cento f.
Vai ver os coma nós ver máis exemplos.
Pero quizais debese falar do guía de estilo para un pouco de tempo, agora
que é superior.
>> LUCAS FREITAS: Se vai para cs50.net/style, vai ver
a guía de estilo.
Para conxuntos de problemas, a súa puntuación para o conxunto de problemas está composto por alcance,
o que basicamente significa que se fixo todo as partes do conxunto de problemas ou se
intentou algo.
A segunda cousa é a corrección, que medios é o seu programa facendo o que
debería estar facendo, ou non ten erros, ou é non facer o que
que se quere facer.
>> A terceira cousa é o deseño, o que significa Está aplicando esta ben, ou son
Está a utilizar declaracións innecesarias?
Así, por exemplo, se quere repetir un número 10 veces, está escribindo un
loop ou está só facendo 10 veces a mesma declaración, só facendo
copiar e pegar.
Así proxecto é para iso.
>> E, finalmente, ten estilo.
Estilo é como xulgar O seu código é
lexible e tipo de bonito.
E só significa basicamente é o seu código lexible?
Será que alguén que estaba á procura son seu código poder entender o que
que está facendo?
Será que ela ten comentarios e así por diante?
>> Imos falar sobre o estilo que debería usar.
O primeiro é comentarios.
Comentarios son moi importantes para a súa código, porque ás veces está facendo
o seu programa, e vostede sabe exactamente o que quere facer así que acaba de comezar
codificación, escriba unha morea de C. Pero se alguén está mirando son vostede
código, eles non van ser capaces de comprende-lo, porque non saben
as cousas que están na súa cabeza, como o pesudocode, quizais por iso eles van
teñen dificultade de entender o que o código está facendo.
>> Así comentarios son realmente útiles para explicar para alguén que está mirando
o seu código o que está facendo, e en realidade, mesmo para ti,
son moi útiles.
Como vai para a Serie de exercicios máis duras e difíciles, vai ver que o código queda
máis longos, e, a continuación, os comentarios son realmente importante para que lembre que cada
parte do seu programa fai.
>> Para poñer un comentario, pode só facer unha slash slash e logo escribir un comentario.
E toda a liña é parte dun comentario, e todo o que escribir,
non vai ser usado para o seu código.
É basicamente como o compilador vai ignorar isto.
Será que isto ten sentido?
>> Audiencia: O que fai de novo para escribir un comentario?
>> LUCAS FREITAS: Este?
A barra barra?
Sempre que escribir barra barra, calquera que sexa é nesa liña non vai
para ser considerado como C. Si?
>> Audiencia: Así, tras o comentario, vostede só entrar e comezar unha nova liña?
>> LUCAS FREITAS: Si, exactamente.
>> Lauren CARBALLO: A barra barra é a comentarios soa liña.
>> LUCAS FREITAS: Por exemplo, aquí temos -
déixeme achegar -
por exemplo, aquí estou declarando unha boia, pero quizais se só poñer este
no seu código, como non ten idea o que iso está facendo, como de feito
alguén que está mirando para este código será, tipo, o que o
diaños está a suceder?
>> Se pór un comentario dicindo que "converter Fahrenheit para Celsius, fai moito
máis sentido.
Vostede é, tipo, OK, está facendo unha conversión.
Será que isto ten sentido?
Polo tanto, é só algo que axuda a xente preparado o seu código e tamén facer
Vostede sería capaz de organizar seu código mellor.
>> A segunda cousa é que podes facer Comentarios de varias liñas, polo que ten un
comentar a un grupo de liñas.
En vez de ter que poñer barra barra, os comentarios de primeira liña, barra barra,
a segunda liña, e así por diante, é pode usar a estrela barra.
O xeito que fai iso é que, ao primeira liña do comentario, está
vai facer unha estrela estrela barra, así sen máis nin menos.
Así como aquí temos o inicio un programa, adoita poñer quen
son, o que este programa fai, e cousas así.
É como unha especie de cabeceira para o programa.
>> Unha vez máis, non é algo que un compilador vai se preocupan, pero
é importante para ti saber o que esta programa fai ou a outras persoas
para saber o que o programa está facendo.
Entón cortar star star, e entón o última liña que vai facer estrela
cortar para poder pechar ese comentario.
Entón, basicamente, para todas as outras liñas, pode só escribir o que quere, e iso
todo vai ser ignorado.
>> E tamén, así como o estilo, ve que cada unha das liñas ten unha estrela, e todos
as estrelas están aliñadas.
Estas son cousas importantes para que o código parece ben.
Parece bo?
>> Agora, as condicións.
Que David estaba dicindo que deberiamos realmente poñer nos diapositivas, é que
cando ten todo tipo de if ou calquera tipo de condicións,
pode usar claves para demostrar que iso é o que ía acontecer
cando ten a condición.
Tecnicamente, cando ten unha condición e, a continuación, a seguinte liña é só un
liña, non ten tecnicamente para poñer as chaves.
>> Basicamente o compilador entendería de calquera xeito, como implícito.
Pero para CS50, pedimos a vostedes para poñer as claves só para que o seu
código é máis organizado e máis lexible.
Por este código está máis tempo se non teñen claves e tal.
Queda realmente confuso.
>> Lauren CARBALLO: Isto é exactamente o que David só destacou
nos meus diapositivas anteriores.
El sempre funciona sen o crespo tirantes, pero por razóns estilísticas
imos pedir que pór aqueles dentro
>> E cando comezar a funcionar style50, que é unha especie de cheque a 50
estilo, ha lembra-lo de facelo.
>> LUCAS FREITAS: E outra cousa é lembre de poñer as claves xunto
en cada liña.
Entón fai, por exemplo, l 's.
Ir á seguinte liña, abra a crespo cinta, despois de ir á seguinte liña.
Retirada, que é catro espazos.
Entón escribe o que quere, a continuación, outra liña, e pechar a bosquexo.
Entón non se esqueza que tanto os cacheados claves están en diferentes liñas.
>> Audiencia: Entón, se este código tiña como 10 else IFS, este debe
ser de 10 conxuntos de soportes?
>> LUCAS FREITAS: Si, para cada un deles.
É.
Así, se, máis se, e así por diante.
>> Audiencia: Pode non prema Tab para recuar?
>> LUCAS FREITAS: Estamos pedindo para ti caras para usar catro espazos.
Algúns editores de texto guía traducir como catro espazos automaticamente.
gedit non acontecer, entón tes que facer espazo espazo espazo espazo.
Isto tamén é algo que algúns programadores só facer guías, algúns
programadores só fan catro espazos, e algunhas outras persoas ata facer
dous ou tres espazos.
É que aquí estamos pedindo vostedes para facer catro espazos.
>> Audiencia: Hai case sempre Ten que ser un camiño para a gedit
automaticamente [inaudível].
Como non [inaudível] fai iso.
>> LUCAS FREITAS: Yeah.
Eu creo que pode ir a Configuración.
>> Audiencia: Xa fai todo isto.
>> LUCAS FREITAS: Xa fai?
Aceptar.
Entón, só tes que estar seguro de que vostede ten catro espazos.
>> Audiencia: Temos que poñer o crespo soportes en loops tamén?
>> LUCAS FREITAS: Si
>> Lauren CARBALLO: Sempre que o seu encapsulamento dun bloque de código, só
Por favor, use as chaves.
E antes que pense que estamos só sendo sticklers sobre este sen unha boa
razón, se vós non ir para obter etapas de tecnoloxía en grandes empresas,
eles van che dar unha guía de estilo, e eles van che dicir que é o que a súa
código debe ser parecida.
E aínda que aprendeu a un código como este, quizais no seu estadio
vai ter que facer algo completamente diferente.
Eles esperan que conformarse ao seu estilo.
>> LUCAS FREITAS: E unha cousa é que entender como eu teño como x,
espazo, menos espazo, 0?
Sempre que ten un operador -
pode ser como máis, menos, veces, menos, maior, calquera que sexa operador -
ten que poñer un espazo na parte esquerda e á dereita do operador.
>> Lauren CARBALLO: Estes son chamados operandos binarios.
Só asegúrese sempre espazo os operandos binarios.
>> LUCAS FREITAS: Este é non un operando binario.
>> Lauren CARBALLO: Isto é porque hai que dous.
>> LUCAS FREITAS: Ah, si.
>> OK, os switches.
En primeiro lugar, ten que ver que, así como nunha instrución, ou entón, ten
para poñer a bosquexo na súa propia liña e baixo a bosquexo aquí.
Nótese que existe un único espazo tras a conexión, así como en if e else
tivemos un único espazo entre iso e os parénteses.
Entón, ten que poñer isto.
>> E non hai espazo para a dereita despois de cada dos parénteses ou antes de fin
dos parénteses.
Entón ve que é todo en conxunto, e tamén me gusta aquí.
>> Si?
>> Lauren CARBALLO: Eu creo que necesitamos seguir adiante.
>> LUCAS FREITAS: Entón, iso forma parte do guía de estilo que ten para CS50.
Asegúrese de ir cs50.net/style e dar un ollo niso.
Estes son todos moi importantes á súa puntuación estilo.
>> Déixeme voltar o comunicado.
>> Lauren CARBALLO: Prefiro non necesitará empregar style50.
Nós só estamos indo a ir directo para lazos.
Todo ben.
>> Entón, imos volver ao contido, agora que pasamos ao longo da guía de estilo.
Loops, xa viu a eles en risco, e imos falar sobre eles en
C.
>> En un loop for, hai tres porcións á
declaración deste loop.
Ten a súa inicialización en que configurar as variábeis.
Ten a súa condición, que son verificación para ver se algo é
verdadeiro ou falso e se a loop debe continuar.
E ten a súa actualización, o que está a actualizar as súas variables.
>> Imos dar unha rápida ollo a algunhas Código C desta loop for en acción.
O que está pasando é aquí no inicialización, estamos definindo i para 0.
Na condición estamos comprobando i é inferior a 10.
E na actualización estamos incrementando i.
Entón, o que pode producir de ese loop?
>> LUCAS Freitas: En realidade, antes de todo, Vostedes saben o que eu + + é?
>> Audiencia: Aumento en 1.
>> LUCAS FREITAS: Aumento de 1, si.
Polo tanto, esta é a mesma cousa que facendo i é igual a i + 1.
E teña en conta que non temos un espazo entre o eu eo + +.
>> Entón, vostedes saben o que iso vai facer?
Alguén me pode dicir?
E quizais conseguir algúns doces por causa diso?
>> Audiencia: [inaudível]
>> LUCAS FREITAS: Aceptar.
[Inaudível]
todo o mundo amosar máis tarde [inaudível].
Si, que vai mostrar "Este CS50 é "10 veces.
>> Lauren CARBALLO: Coido que foi no título do foto.
>> LUCAS FREITAS: Ah, si.
>> [Risas]
>> LUCAS FREITAS: Isto axuda.
>> Lauren CARBALLO: Entón, estas son para loops.
Nós imos ver algúns exemplos de loops máis tarde.
Pero imos realmente ter un ollar para o segundo tipo de circuíto que vai atopar
en C, e chámase o loop while.
>> En un loop while, ten só teño unha condición.
A condición é revisada no comezando, e se esa condición
valorada como certa, entón o código dentro o corpo do bloque, mentres
se levará a cabo.
E o código seguirá realizar, mentres que
condición permanecer verdadeira.
>> Aquí está un exemplo dun loop while en C. Imos establecer a conta de 10 a
comezar.
Mentres a conta sexa maior que 0, imos continuar a imprimir este
variable aquí.
Nós imos diminuír conta e a continuación, comprobar de novo a condición.
Imprimir, decremento, cheque a condición de novo.
>> Aquí temos un exemplo que se refire a súa pregunta anterior.
Tivemos a porcentaxe s cando estabamos imprimir unha cadea, e agora que
estamos imprimindo un int, temos un por cento i como o noso espazo reservado no seu lugar.
As cartas deben ser todos bastante intuitivo, é para a corda, eu para int.
>> Polo tanto, se este código é executado, debe conta atrás 10-0, imprimindo
cada enteiro.
>> LUCAS FREITAS: E pode pensar no por cento, xa que se sente como un espazo en branco
espazo, e, a continuación, está poñendo este aquí variable en que o espazo en branco.
Así, por exemplo, aquí vou ter só un espazo en branco, e entón eu estou poñendo o
contar alí mesmo, o valor da conta.
Será que isto ten sentido?
>> Podería só facer como printf e logo, cita, contan?
Será que isto funciona?
>> Audiencia: Non
>> LUCAS FREITAS: Non, porque vai realmente imprimir a palabra "contar"
en vez de imprimir o valor.
Isto é como fai imprimir os valores á variable no canto de
só o nome da variable.
Algunha pregunta?
>> Audiencia: Por que usa para como unha oposición ao tempo?
>> Lauren CARBALLO: Eu usaría un para loop se eu sei exactamente cantos
iteracións que quero o meu loop para realizar.
Neste caso, non importa, porque, É dicir, eu estaba só tentando
pensar nun realmente sinxelo exemplo a este foto.
Pero imos dicir que quere algo manter-se ir -
>> LUCAS FREITAS: Por exemplo, se está solicitando a entrada ata que a persoa
dálle a entrada á dereita.
Así como cando a entrada non é OK, sigo a preguntar a el.
Ou como cando está pais non dan diñeiro, sigo a preguntar a el.
>> [Risas]
>> Lauren CARBALLO: Non sabe como moitas veces vai ter que facelo.
>> LUCAS FREITAS: Porque non fai sei cantas veces iso é
continuará.
>> Lauren CARBALLO: Pero en un loop for, ten que saber cantas veces.
Si?
>> Audiencia: Só para aclarar, a porcentaxe di que iso é algo sobre a
pasar, nos is ao número enteiro, ea barra invertida n -
>> Lauren CARBALLO: Medios?
Quen sabe o que a barra invertida n significa?
Nova liña, si.
Exactamente.
>> LUCAS FREITAS: Pode pensar de n como nova liña.
>> Lauren CARBALLO: Nice.
>> Audiencia: Que a conta trazo trazo [inaudível]?
>> LUCAS FREITAS: Conta menos negativo é o mesmo que plus plus, pero
no canto de aumentar, está diminuíndo en 1.
>> Lauren CARBALLO: Calquera máis mentres cuestións de loop?
Non?
Oh, nós deberiamos ter ignorado iso.
>> Este é un do loop while.
Moi semellante a un loop while, excepto en Neste caso, comproba a condición despois
o código no corpo do loop execútase unha vez.
Por iso, executar o código primeiro, non importa o que.
Entón, comproba o estado, executa de novo se a condición é verdadeira.
>> Vai atopar-se con iso cando está pedindo a entrada do usuario.
Porque sempre terá que preguntar unha vez máis, e logo, dependendo do que
a entrada do usuario é, pode ter que Reprompt e preguntar de novo e de novo se
a entrada non era o que esperaba que fose.
>> Audiencia: Entón, é como unha forma para a xente a cubrir.
>> Lauren CARBALLO: Si, exactamente.
Vai atopar, creo eu, na súa primeira Pset, vai ter que
usar un loop facer ben para recoller entrada do usuario.
>> Audiencia: En función da situación, seus loops, mentres tenden a executar máis
veces que mentres loops, como por unha ou outra cousa?
>> Lauren CARBALLO: Se é o exacto -
>> LUCAS FREITAS: Deben sempre ser executado a cantidade exacta de veces que
quero que sexa executado.
Como usan facer agora, porque realmente quería ter a entrada de polo menos unha vez.
En loops tempo, ás veces non quere para executa-lo en todo, se non é
o caso de executar.
Por iso, depende do proxecto.
Quero dicir, pode facer mentres uso ou mentres que o tempo que o seu código o fai
que se quere facer.
>> Lauren CARBALLO: Pero fago creo que a resposta á súa
pregunta é probablemente si.
Imos dicir que a condición era falsa.
Nun caso, sería executado unha vez, e noutro caso sería executado cero veces.
Entón, si.
>> Máis algunha pregunta?
Si?
>> Audiencia: Pode a condición de ser un lazo loop for en termos de outra variábel
que [inaudível].
>> Lauren CARBALLO: Si, pode ser calquera cousa.
Probablemente para as Serie de exercicios comezo, non terá que atopar este caso, pero
definitivamente pode ser calquera cousa.
>> LUCAS FREITAS: Eu creo que estamos facendo aquí.
>> Lauren CARBALLO: somos?
Non?
>> LUCAS FREITAS: Loops?
É.
>> Lauren CARBALLO: Non debemos ser.
Oh, estamos a facer con loops.
Aceptar.
>> De feito, xa temos falado tan moito, imos de feito todo navegar
sobre a study.cs50.net/conditions.
E está indo para navegar abaixo aos problemas widgets.
Ben, en realidade, mentres que a xente está quedando esta configuración, o Estudo CS50 é
vai ser unha ferramenta que os seus TFS vontade utilizar para prepararse para as seccións e que
Podedes usar se perder seccións.
Vai ter unha morea de diapositivas, algúns consellos e trucos para cada
tema, e algúns problemas prácticos con solucións.
>> Por que non todo o mundo pode dar un ollo a este problema aquí.
>> Me desculpe, eu debería lembrar persoas para levar portátiles hoxe.
Pero se non ten un portátil, iso é OK.
Pode só anotar isto para abaixo nunha anaco de papel ou mirar por riba
o ombreiro do seu veciño.
>> Imos tentar escribir un programa que solicita ao usuario para dar un palpite, o
número medio de fillos por familia unidade nos Estados Unidos.
Ese número é 2, a propósito, como pode ver a partir destes exemplos.
>> Queremos imprimir número medio de fillos por familia en Estados Unidos, entón nós
quere o que?
Queremos recoller entrada desde o sitio web.
E, a continuación, dependendo do que o usuario de entrada, está indo para imprimir
ou iso é correcto ou iso é incorrecto.
>> E o primeiro que vai Mira, se fai clic na pequena frecha no
a parte inferior da ferramenta é un problema lugar para anotar algúns pseudocódigo.
Entón non está programando aínda.
Só está a recibir o seu ideas en orde.
>> Alguén quere axudar Lucas veña co dereito
pseudocódigo a este problema?
>> LUCAS FREITAS: Cal é o primeiro que probablemente debe facer aquí?
O que vostedes pensan?
>> Audiencia: [inaudível]
>> LUCAS FREITAS: Si, OK.
Entón, de impresión.
Só ten que dicir a impresión que esta media número de persoas?
Aceptar.
Imprimir pregunta, imos dicir.
Despois de imprimir a esta pregunta, o que debo facer?
>> Audiencia: Obter entrada.
>> LUCAS FREITAS: Obter entrada.
Algo máis?
>> Audiencia: Condition.
>> LUCAS FREITAS: Condition.
>> Lauren CARBALLO: Que condición será?
>> Audiencia: Número de [inaudível].
>> Lauren CARBALLO: Certo.
>> LUCAS FREITAS: Entón que é o que eu vou facturar a condición?
>> Audiencia: Se é igual a 2.
>> Lauren CARBALLO: Se é igual a 2.
Exactamente.
>> LUCAS FREITAS: Hai algo de outra cousa que eu debería facer?
>> Audiencia: Conta.
>> LUCAS FREITAS: Entón, se é igual a 2, digamos -
deixe-me escribir a entrada é igual a a 2, entón o que eu vou
facer é imprimir correcta.
E despois o resto, eu vou para imprimir incorrecta.
Algo máis?
Non?
>> Lauren CARBALLO: Entón pode premer no -
que todo o mundo ten ese baixo?
>> LUCAS FREITAS: Será que ten sentido?
Entón, agora imos tratar este código.
>> Lauren CARBALLO: Se fai clic no pouco frecha, realmente salva seu
pseudocódigo, que é realmente emocionante.
E pode facer os comentarios en si quere só para lembrar de
o que facer.
>> LUCAS FREITAS: Entón, por exemplo, primeiro Vou imprimir a pregunta, entón
como é que eu vou facer iso, en realidade?
printf.
Entón printf, ea cuestión é media número de fillos por
familia en Estados Unidos.
>> Entón eu vou ir entrada do usuario.
Entón, como podo facelo?
>> Audiencia: Obter Int
>> Lauren CARBALLO: GetInt.
>> LUCAS FREITAS: Aceptar.
Entón, primeiro declarar, non?
int, imos chamalo n é igual a GetInt.
>> E agora a condición.
Entón deixe-me dicir que eu vou para acá resposta cheque.
Entón, en primeiro lugar, a entrada, que é N, coincide a - como é que eu vou escribir isto?
>> Audiencia: Igual igual.
>> LUCAS FREITAS: Perfecto.
Entón n.
E teña en conta que eu fago un espazo, é igual, é igual, o espazo, é verdade.
E agora o que debo facer?
Algo moi importante para o estilo.
As chaves.
>> E entón eu vou imprimir.
¿Como imprimir?
printf.
>> Audiencia: Podería ser capitalizados?
>> LUCAS FREITAS: Non
É suposto estar en minúsculas.
Entón, iso é correcto.
>> Será que isto é suficiente para o printf declaración, ou que estou falta algo?
>> Audiencia: Nova liña.
>> LUCAS FREITAS: Nova liña, si.
E agora outra cousa.
>> Audiencia: Hai un espazo tras o printf, ou non?
>> Lauren CARBALLO: Debemos comprobar a guía de estilo.
>> Audiencia: Non debe ser.
>> LUCAS FREITAS: Non debe ser, Aceptar.
Entón, o resto, printf, "Iso non é correcto."
>> Lauren CARBALLO: Oops, as súas citas.
>> LUCAS FREITAS: Aceptar.
Algo máis?
Será que unha boa aparencia?
>> Lauren CARBALLO: Imos tentar?
>> LUCAS FREITAS: Si, imos executalo.
Polo tanto, é a compilación, e Parece que funciona.
Intentaremos dous fillos.
Isto é correcto.
E agora imos realizar de novo, pero agora, en vez de poñer dous nenos, imos
dicir que eu vou poñer como cinco.
Isto é incorrecto.
Así, parece que funciona.
>> Lauren CARBALLO: Por que non amosar-lles o que pasa se pór algo
raro, como algunhas letras.
>> LUCAS FREITAS: Ah, si.
Imos tamén comprobar iso.
E se o usuario está intentando desorde co seu programa, e eles só
escribir, eu non sei dous.
Vai dicir repetición.
>> Lauren CARBALLO: Entón GetInt está pedindo-lles para tentar de novo.
Nós non temos que coidar do que nós mesmos.
>> LUCAS FREITAS: Yeah.
Entón, a menos que realmente poñer un número, é continuará me pedindo para tentar de novo.
>> Audiencia: Como se executa-lo?
>> LUCAS FREITAS: Só ten que premer este botón estrela.
>> Lauren CARBALLO: Debe subir.
Alí vai.
>> LUCAS FREITAS: A estrela botón dereito alí.
Si?
>> Audiencia: Será que pedir [inaudível] con números decimais tamén?
>> Lauren CARBALLO: Eu creo que si.
>> LUCAS FREITAS: Se fai o que?
>> Lauren CARBALLO: No caso de que tipo nun número decimal, creo
vai pedir.
>> LUCAS FREITAS: Imos ver.
>> Lauren CARBALLO: Por non é un int.
>> LUCAS FREITAS: Yeah.
>> Lauren CARBALLO: Entón, non é un int, Sexa Int ha pedirte para tentar de novo.
>> Audiencia: Entón, onde ese código sería a casa decimal que solicita ao
usuario que ten que entrar un enteiro especialmente?
>> Lauren CARBALLO: GetInt é realmente facendo iso para nós.
>> Audiencia: Non, quero dicir, se quixésemos para entrar [inaudível]
>> LUCAS FREITAS: Pode dicir como media número de nenos en Estados Unidos.
Eu non sei.
Podemos dicir, por exemplo, "Por favor, introducir un número enteiro. "
>> Lauren CARBALLO: Un enteiro igual ao número medio.
Quero dicir, é só como vostede palabra, non?
>> LUCAS FREITAS: Yeah.
Non forma parte de codificación, en realidade.
É máis como todo o que vai querer
escribir no seu programa.
>> Audiencia: Como teriamos executa-lo se estaba realmente en gedit [inaudível].
No canto de premer o xogo?
>> LUCAS FREITAS: Imos primeiro compilalo.
Podemos facelo, facendo make eo nome do ficheiro.
E, a continuación, executa-lo, imos facer corte de punto e nome do programa.
>> Audiencia: Eu creo que o que eu quería dicir foi se queriamos que o programa para responder a
seu, entrada inválida incorrecta, non debe poñer en -
>> LUCAS FREITAS: Non poderá facelo porque o código esta di
repetir trata Get Int, que é un función que xa é aplicado
para nós a través da biblioteca CS50, e desde xa está implantado alí, nós
non pode simplemente [inaudível].
>> Lauren CARBALLO: Se non usar GetInt, entón podes facelo.
>> LUCAS FREITAS: Yeah.
Pero se está a usar GetInt, non pode.
Algunha pregunta?
>> Audiencia: Vostede podería ir con como GetFloat e, a continuación, ser capaz de poñer
lo nun decimal?
>> LUCAS FREITAS: Yeah.
>> Audiencia: Aceptar.
Entón só podería entrada flotar A é igual -
>> Lauren CARBALLO: Yeah.
Exactamente o mesmo, excepto un flotar no canto dun int.
>> LUCAS FREITAS: Só ten que poñer-lo aquí e logo, GetFloat alí.
>> Audiencia: Como vai ver ou ver -
>> Lauren CARBALLO: temos non chegou alí aínda.
>> Audiencia: - facendo desigualdade flotadores non [inaudível]
>> Audiencia: O que as comas significan?
>> Lauren CARBALLO: O punto e coma só quere dicir que esta declaración sexa completa,
e nós estamos indo a ir ao seguinte foto.
>> Audiencia: Entón é necesario todas as veces?
>> Lauren CARBALLO: Yeah.
Ben, OK, entón non a estas condicións, porque son
encapsulado algo.
Entón, basicamente, se algo está causando que cree unha bosquexo
bloque, non poña un punto e coma ao final.
>> LUCAS FREITAS: Pero todo outra cousa, si.
Cando remata un comunicado, poñer o punto e coma.
E se esquecer punto e coma, a compilador vai quedar con rabia de ti,
e vai ter para intentar reparalos lo.
>> Lauren CARBALLO: Se eu poñer un punto e coma aquí, que iría parar con iso, e eu
nunca ía comezar a realizar o que se no interior, por certo.
Polo tanto, é un deses erros comúns.
>> Audiencia: Sempre execución.
>> Lauren CARBALLO: Yeah.
Neste caso, teriamos sempre realizar o que está dentro.
>> Audiencia: O seu estilo [inaudível] Adxuntar que para ti, pensei.
>> Lauren CARBALLO: Ah, iso é verdade.
>> Audiencia: [inaudível] único cousa de liña [inaudível]
>> Audiencia: Si?
>> Audiencia: Pode ter varias insumos nunha liña?
Entón, como pode pedir que os usuarios para imprimir dúas cousas?
>> Lauren CARBALLO: Non usar -
>> LUCAS FREITAS: Non
Imos dicir que eu tamén quero para obter este número enteiro m.
Teño que facelo nunha liña distinta.
>> Audiencia: Se fose para executar que, como [inaudível]?
Sería imprimir o prompt alí [inaudível]
e entón insiras un e -
>> Lauren CARBALLO: Ben, executalo.
Quero dicir, non hai nada nos impide só executa-lo e ver o que
ía ocorrer.
>> LUCAS FREITAS: Creo que é vai reclama a nós
por que non estamos a usar -
>> Lauren CARBALLO: Oops.
>> LUCAS FREITAS: El queixouse a nós para a dereita agora, porque non estamos usando este
variable, pero se eu tivese, por exemplo, n é igual é igual a, e m é igual
igual a, entón o que será ocorrer neste caso?
O que este programa fai?
>> Audiencia: Eu só estou querendo saber como sería -
>> Lauren CARBALLO: Ela só quere saber como queda
como, penso eu, non?
Por iso, levou un deles, e, a continuación, que levou o segundo.
>> Creo que temos que seguir adiante, porque temos unha
Presentación de diapositivas para ir antes -
quere puxar arriba de matemáticas?
>> LUCAS FREITAS: Si, de matemáticas.
>> Lauren CARBALLO: Dar me só un segundo.
>> Hai uns numérica diferente variables en datos numéricos en C. C
poden ser clasificadas en distintos tipos, e estes son os que vai
ver con máis frecuencia.
>> E int é un número enteiro.
Non pode ter ningún decimais.
O aparello, hai que 32 bits para almacenar un int.
>> Unha flutuación pode decimais.
Tamén leva 32 bits para almacenar unha boia no Appliance.
>> O dúo é un número con un decimal punto que ten 64 bits para almacena-lo,
o que significa que pode só ter máis preciso, xa que
pode ter máis -
o que chama iso?
>> LUCAS FREITAS: Si, iso é moito máis.
>> Lauren CARBALLO: Máis lugares despois do punto decimal.
E hai moito tempo é un número enteiro que leva 64 bits para
ela ferida no Appliance.
>> LUCAS FREITAS: Entón pode ser maior que enteiros poden ser.
>> Lauren CARBALLO: A cousa sobre datos tipos en C é que eles din o que
tipo de datos que pode almacenar na súa variábel.
Din-lle como pode usar esta variable no seu programa.
É moi importante para só seguir de que tipo de datos está a usar, e se
cómpre facer para converter un tipo de datos a outro, asegúrese de que vostede sabe
exactamente o que pasa cando esta fundición ocorre.
E vai ver un exemplo máis tarde sobre nestas láminas de
erro que pode ocorrer.
>> Imos dar un ollo a algunhas das matemáticas en C e pensar con moito coidado, eu creo,
sobre o que está a suceder cando esta matemáticas se produciron.
Na primeira liña, o que é pasando cando declaro x?
>> Audiencia: Vostede está permitindo que x para algo?
>> Lauren CARBALLO: Yeah.
Ben, eu estou realmente facendo a operación sistema de 32 bits de memoria, non?
En que podo gardar un int, e Vou chamar ao que int x.
>> LUCAS FREITAS: ir Basicamente na memoria e atopar un lugar que ten 32
bits e dito, hey, quero que este espazo, e só pode ser chamado x.
Entón é só practicamente descubrimento unha caixa na súa memoria para
almacenar valores para x.
>> Lauren CARBALLO: E entón eu arrincar x, o que significa que só almacenar o
valor de 2 naquel lugar, que pedazo de memoria, que pedimos operativo
sistema a.
E aquí o que estamos facendo é en realidade estamos declarando e
arrincar y nunha liña, en vez de en dúas liñas, como fixemos ata aquí,
que tamén é un perfectamente ben, estamos engadindo 1 para x, e nós estamos almacenando que
valor en y.
>> LUCAS FREITAS: Entón, basicamente o que este liña fai, el encontra agora unha caixa para y,
e, a continuación, o seu valor, o único que vai poñer dentro da caixa, é
será o valor de x máis 1.
Por iso, ten a opción para y.
Ela recibe o valor de x, parece aquí, e ver que é 2.
Poñelas alí, máis 1, entón pon unha 3 alí.
Será que isto ten sentido?
Entón y sería 2 neste caso.
>> Lauren CARBALLO: Todo ben, legal.
Vimos algúns diso, así que imos agora pensar sobre a división en C. Aquí eu son
declarar e arrincar un float chamada resposta e dividindo o 1 por 10,
e entón eu estou imprimindo a resposta con dúas cifras decimais.
E teña en conta aquí, na miña declaración printf, cando eu queira imprimir algo para dous
cifras decimais,% .2 f é o que quero usar.
Así, o punto 2 é só dicir Eu teño dous lugares tras a
decimal impreso.
>> Agora, o que vai ocorrer se eu executar este código?
Alguén ten unha idea?
Que imprimir?
>> LUCAS FREITAS: Cales son nós esperando para comezar.
>> Lauren CARBALLO: ¿Que facer queremos, en primeiro lugar?
>> LUCAS FREITAS: [inaudível]
>> Lauren CARBALLO: 0,1, si.
Pero o que vai imprimir?
>> Audiencia: [inaudível]
>> Lauren CARBALLO: Ben, non, en realidade.
Isto é o que eu estaba falando sobre o por que Debe manter o control moi coidadoso de
seus tipos de datos.
Entón, que tipo de datos é isto?
É un int, non?
Non hai ningunha casa decimal.
10 tamén é un int.
Non hai ningunha casa decimal.
>> Se eu dividir un int por un int, recibín unha int que non é de 0,1, porque Ints
non pode ter cifras decimais, pero só 0.
Porque un int só trunca fóra das cifras decimais.
>> LUCAS FREITAS: Entón sempre que se fai operacións con enteiros, vai
obter un int como resposta.
Entón, basicamente, o que o ordenador está facendo, é divídese por 1
10, e queda 0,1.
Pero, entón, é coma se, espera, que é debe ser un número enteiro, entón só
ignorar a 0,1, polo que é agora só 0.
>> Lauren CARBALLO: Entón, cando imprimir este fóra, eu recibín 0,00 en vez de 0,10.
>> LUCAS FREITAS: Será que ten sentido?
>> Lauren CARBALLO: Isto é medio de pena, non?
>> LUCAS FREITAS: Entón, como podemos solucionar isto?
>> Lauren CARBALLO: Imos tentar corrixir isto.
Aquí está un exemplo de onde eu son realmente lanzar a 1
e de 10 a flota.
Entón, agora, un non é un int.
1 é un float.
By the way, esta é só a sintaxe para cando quere para lanzar a partir dun
Tipo de datos a outro.
Pode simplemente poñer o tipo de datos en parénteses e ten que preceder
o valor que está lanzando.
>> Entón, aquí, eu estou dividindo un coche alegórico por unha boia para obter unha resposta float.
E si, esta sería, en feito imprimir 0,10.
Será que isto ten sentido?
>> LUCAS FREITAS: Entón tipo casting é só a conversión dun tipo a outro.
Así flotar 1 é realmente 1,000.
Non é exactamente iso, pero é algo con cifras decimais
que é, en realidade, un.
Será que isto ten sentido?
Si?
>> Audiencia: E se fixo resposta flotador é igual a 1,0 dividido por 10?
>> Lauren CARBALLO: Está realmente a suceder ver que o próximo foto.
Isto é realmente o noso moi próximo foto.
Esta é realmente unha máis agradable do que escriba casting, eu creo.
Así, estes dous son só Carrozas natureza do feito de que
teñen cifras decimais.
Si?
>> Audiencia: E se fixo [inaudível]
dividido por 10?
>> Lauren CARBALLO: En realidade unha boia dividido por un int en realidade, dálle unha
flotar, de xeito que ía funcionar ben.
>> Espere, que todo o mundo entende isto?
Por que isto será realmente unha gran negocio na Pset1, en realidade.
Si?
>> Audiencia: Vostede podería só rápido pasar por riba da parte vermella?
>> Lauren CARBALLO: A parte vermella, si.
Lucas, quere?
>> LUCAS FREITAS: Aceptar.
Entón recorda que a porcentaxe é un espazo reservado.
É como un espazo en branco.
Entón, imos tratar de entender todo que está pasando aquí.
Porcentaxe significa que é un espazo reservado.
Entón tes a f, o que significa que ese espazo reservado é para un float.
A última cousa que temos aquí é unha 0,2, o que significa que quero ter dous
cifras decimais á boia.
>> Se eu tivese% f, que vai poñer unha morea de cifras decimais.
Entón eu só podo poñer 0,2 ou 0,1 ou 0,5, ou o que quere, e vai poñer isto
número de cifras decimais.
O único é que se pór como .100 Ou .1,000, non é, en realidade,
vai poñer todas estas cifras decimais porque non ten memoria suficiente
ter esa precisión.
>> Algunha pregunta?
Si?
>> Audiencia: Entón flotar só permite ir alén enteiros?
>> LUCAS FREITAS: Si
>> Lauren CARBALLO: Ben, unha boia só permite que teña cifras decimais.
>> LUCAS FREITAS: Significa só que agora pode ter números decimais.
>> Audiencia: Por que usar enteiros?
>> LUCAS FREITAS: Por que usa números enteiros?
Quizais se está contando de 0 a 10, quere usar realmente un enteiro.
Non precisa utilizar un float.
Nalgunhas situacións, non Ten que efectivamente -
>> Lauren CARBALLO: Quizais Non quero decimais.
>> LUCAS FREITAS: Poida que non Quere usar un float.
>> Lauren CARBALLO: A outra cousa é, Teña en conta que, tanto por unha boia e un int
ter 32 bits para almacena-los, e quizais non quere desperdiçar bits no
cifras decimais.
>> LUCAS FREITAS: Yeah.
Así como, basta pensar sobre iso.
Ten 32 bits, tanto para un int e un float.
Para un int, as 32 bits ir á parte enteira.
Se usa un coche alegórico con 32 bits, se ter parte desa memoria que está a ser usado
ao número, para o número enteiro, e outro pode empregar para o
cifras decimais.
Entón iso significa que non pode chegar a números moi grandes con flotadores por
o flotador xa está a usar unha morea de memoria para as casas decimais.
Si?
>> Audiencia: Esta primeira resposta, exactamente o que está facendo?
É a definición do valor do flotador igual ao espazo reservado para que poida
recuperan-lo na próxima liña?
Di flotar resposta.
>> LUCAS FREITAS: Yeah.
Entón, a resposta flotar significa que está a recibir agora un pouco balde na memoria que
ten un float, e iso vai para ser chamado resposta.
Entón é iso que fai flotar resposta.
>> E entón di que dentro tanto, está indo a poñer
o resultado deste.
Entón vai facer 1,0 dividido por 10.0, que obtén 0,1, e, a continuación, se pon
que dentro de resposta.
>> Lauren CARBALLO: Entón, nunha liña, estamos declarar e arrincar este flotador
chamado resposta.
>> LUCAS FREITAS: Curiosamente, aínda que Esta é só unha liña, que está a facer
varias operacións.
É só unha forma de deixar C usa menos código.
É o mesmo que o ternário operador, como pode só facer unha
[Inaudível] nunha liña.
Está realmente facendo o mesmo que facendo resposta float, punto e coma, e
entón resposta é igual a esta, pero en vez de facendo facer dúas liñas para que,
é como un atallo.
Si?
>> Audiencia: Entón, se executou tanto, sería de 0,10?
>> LUCAS FREITAS: Si
Si?
>> Audiencia: É realmente responder código, ou é só o nome?
>> Lauren CARBALLO: Este é, en realidade, o código.
Iso é o que imos para nomear a nosa variable.
>> Audiencia: Entón é só un nome [inaudível].
>> Lauren CARBALLO: Yeah.
Eu podería dicir float x é igual a 1.0.
>> LUCAS FREITAS: A cousa é que nome da variable é
algo que usa.
É importante para vostede.
Para o programa actual, a única cousa o que importa é o valor que
ten dentro do balde.
A razón pola que ten variables e nomes de variables é así que sabe
o que está lidando, como que tipo de datos está
acceso de cada vez.
Pero para o propio código, se chamar el responde ou pregunta ou algo,
moi bonito, non importa.
Non importa.
Sempre que sexa consistente en todo aparición e así que chamalo
outra cousa.
Si?
>> Audiencia: Fai as variables ir máis alá da función?
Como se fose crear un soporte [Inaudível], podería só
[Inaudível] responder de novo?
>> Lauren CARBALLO: Non
>> Audiencia: [inaudível]
>> Lauren CARBALLO: Non
Iso sería fóra do ámbito desta variable particular.
E de feito, este é o tipo de interesante, porque cando temos
cousas como loops ou estes se condicións, se declarar unha variable
dentro dun outro conxunto de claves, realmente só hai
dentro desas chaves.
>> Audiencia: Unha última nota sobre os coches alegóricos [inaudível].
Por que non quere usar Ints?
Esta é unha nota lateral que nada, pero o ordenador é
significativamente mellor en xestionar Ints do que se flotadores de manipular.
É como unha orde de magnitude máis rápido.
Entón, se nós só manipulados só Carrozas, as cousas serían moito máis lento.
>> Lauren CARBALLO: En realidade, non parece sendo un problema cos flotadores.
>> LUCAS FREITAS: Kind of a razón para diso, pode pensar, é como en binario
podes representar enteiros poñendo 0 e 1 do.
>> Lauren CARBALLO: Isto é a seguinte cousa.
>> LUCAS FREITAS: Aceptar.
Incrible.
>> Lauren CARBALLO: Só manteña ese pensamento.
>> LUCAS FREITAS: OK, eu vou dicirlle máis tarde.
>> Lauren CARBALLO: Antes de chegar ao Lucas estaba dicindo, o operador
precedencia.
Este é o sentido común.
Vostedes teñen feito isto bastante.
Así, só se algo está entre parénteses, iso vai ocorrer primeiro.
É a multiplicación ten precedencia máis aló,
resta, cousas dese tipo.
Entón, en realidade, só alguén quere me diga o número un, en realidade,
avalía?
>> Audiencia: 27.
>> Lauren CARBALLO: 27?
É.
>> LUCAS FREITAS: Deixe-me dar doces para as persoas.
>> Lauren CARBALLO: Todo ben.
E sobre o número dous?
>> Audiencia: 22.
>> Lauren CARBALLO: 22, si.
Eu non sei quen comezou iso.
Número tres?
>> Audiencia: 10.
>> Lauren CARBALLO: 10, si.
Legal.
Así módulo.
Lucas, quere explicar modulo?
>> LUCAS FREITAS: Modulo é este operador que é, en realidade, moi útil para unha
morea de problemas.
Se eu fai 55 módulo 10, o que fai iso imos dicir que quero
dividir 55 por 10.
O que eu ganancia?
Ela se sente como se eu estou realmente só facendo a división, o que é o
primeira vez que eu teño o número enteiro?
>> Audiencia: 5.
>> LUCAS FREITAS: 5.
E, a continuación, o resto é de 5, non?
Entón, é como 5 veces 10 máis 5.
Basicamente, o módulo fai, intenta dividir este número por este, e
el ve o que é o resto da división.
>> Lauren CARBALLO: Entón é só devolve o resto.
Así, o número un é o que?
5.
Número dous?
>> Audiencia: 3.
>> Lauren CARBALLO: 3.
Número tres?
0.
E catro é 1.
Exactamente.
>> LUCAS FREITAS: Simple, non é?
>> Lauren CARBALLO: Por que non imos saltar esta só porque nós realmente non teño
tempo, e as persoas parecen entender.
Entón aquí está o que Lucas era só falar.
>> LUCAS FREITAS: Outra razón pola que eu usaría enteiros en vez de flotadores é
flotadores que son moi imprecisas.
E por que son imprecisas?
David dixo que para representar un enteiro, por exemplo, usan 0 e
1, non?
E entón basicamente facer o multiplicación, facer todos os
operacións de saber o número decimal tes no canto do binario.
>> Que pasa agora se eu tentar para poñer os puntos decimais?
De feito, por exemplo, se eu tivera o número como 3,33333?
Parece que máis de 3 10.
Como é que eu vou gardar todo o 3 É que eu teño despois diso?
É realmente difícil, non?
Non pode simplemente dicir ao ordenador, hey, eu teño un 3, e
entón facelo para sempre.
En realidade, o ordenador non é intelixente o suficiente para iso.
>> Entón, basicamente, todo o seu ordenador fai é que trata de poñer o maior número de díxitos como
pode que a memoria que ten.
Entón, imos dicir que vai dicir 3.3333, e é iso.
Polo tanto, non é capaz de realmente expresar precisamente o que se boia.
>> Lauren CARBALLO: Temos un número finito de bits, o que significa que non
cada número decimal será capaz de ser representado con precisión.
E así, neste exemplo, se estivermos imprimir 0,1, agora estamos impresión
fóra 20 prazas.
>> LUCAS FREITAS: Así como eu estaba dicindo vostedes, pode poñer calquera número.
Pero, se acaba de facer os dous lugares, quere obter 0,10, pero se poñer 20
lugares, que vai te amosar unha morea 'S de porque iso é o que pode poñer
na memoria, non?
>> Pero aquí, ata o 0, e despois é só poñer-lo un
chea de números aleatorios.
Este é tipo como algúns -
>> Lauren CARBALLO: Isto é porque somos non é capaz de representar este decimal
precisamente co número de bits que teñen.
>> LUCAS FREITAS: E entón o ordenador é basicamente
dándolle un número de lixo.
Este non é, en realidade, o valor do número.
>> Audiencia: É o máis preto que pode estar [inaudível]
usar o [inaudível].
>> Lauren CARBALLO: Entón, a implicación iso é que imos dicir que en vez de
sendo 0.100014, calquera que sexa, e se fose 0,0999 -
Ben, OK.
Imos finxir que a resposta real para iso foi 0,9999999.
Isto é moi próximo a 1, pero non é exactamente 1.
É 0,99999.
>> Isto significa que, se eu tomar esta 0,999, e eu o lancei a un int, eu recibín 0.
Non entendo 1.
>> LUCAS FREITAS: Por lembre, fundición de float para int, só
ignorar todas as casas decimais.
Simplemente ignore them.
Non hai tal cousa como o arredondamento cara a arriba ou executar para abaixo cando estereotipado.
En realidade, non é esta función que fai o redondeo, o que é moi
importante, pero só creo que cando fai typecasting, é só
vai borrar todo.
Así, mesmo se ten 0,99999, vai só para dar 0 se typecast
[Inaudível] un número enteiro.
>> Lauren CARBALLO: Entón, só tes que ser realmente consciente punto de flotante en precisión,
especialmente cando comeza utilizar flotadores en Pset1.
Pero a ruta a través debería avisalo de que tan ben.
>> LUCAS FREITAS: E de feito, é realmente difícil, por exemplo, se eu fixen
resposta flotador 1 é igual a 1,0 sobre 10, e despois flotar resposta 2
é igual a 10,0 sobre 100,0.
Son o mesmo número, non?
0,1, non?
1 máis de 10 ou 10 máis de 100.
Pero agora, se eu tentar ver a igualdade, como se a resposta 1 é igual a responder 2,
quizais non está realmente a suceder ser o mesmo.
Así Carrozas son do tipo así.
Son como facer a igualdade.