>> LUCAS FREITAS: OK, suposo ara estem en viu.
Benvingut a CS50 supersección.
Estem menys còmode.
El meu nom és Lluc Freitas.
Sóc 01:00 CS50 Head TFS.
Es tracta de Lauren.
>> LAUREN CARVALHO: Hola, sóc Lauren.
També estic TF Cap de CS50.
>> LUCAS FREITAS: Avui només anem per donar una visió general del que tot el
nois han après a la setmana un, amb sort donar a vostès un bon
sentit al que vostè ha de saber per al problema d'establir un.
>> Només un parell d'anuncis.
En primer lloc, les hores d'oficina.
Les hores d'oficina s'estan produint des de dilluns a dijous en diferents cases a
Annenberg cada dia.
Són un recurs molt bo per a vostè nois per venir i fer preguntes, i
parlar amb TFS, i fins i tot l'intercanvi idees amb altres estudiants.
Així que assegureu-vos d'utilitzar aquest recurs a favor seu.
>> La segona cosa és la CS50 Appliance.
Per a l'últim [inaudible]
vostès no tenien que realment tenir un aparell.
Acabes de fer-ho tot en seu ordinador personal.
No obstant això, per a aquest problema, que en realitat tenen tenir una màquina virtual, així que
Assegureu-vos de descarregar la CS50 Appliance i configurar-lo.
>> I la tercera cosa és que assegureu-vos de iniciar el conjunt de problemes ASAP només
perquè és molt més fàcil de trobar ajudar quan vostè està en el
al començament de la setmana.
Com que la gent tendeix a esperar fins que el últim segon per iniciar el conjunt de problemes,
i després vas a les hores d'oficina, i hi ha un munt de gent.
On si vas el dilluns, vas per veure que es pot parlar amb TFS
gairebé tota la nit, I van més de
encantat d'ajudar.
>> LAUREN CARVALHO: Puc deixar de per només un segon?
Tothom ha estat capaç de descarregar Appliance CS50?
Han tractat a la gent?
>> LUCAS FREITAS: Per descarregar, pel manera, pot obtenir instruccions al
cs50.net/appliance.
>> LAUREN CARVALHO: així.
I ho fa prendre una mica de temps per a la nostra administradors de sistemes per obtenir una llicència
clau, de manera d'inscriure en el primera prova gratuïta.
D'aquesta manera vostè tindrà durant 30 dies, i després esperar que la seva clau de llicència
que ha de donar que durant un any vostè.
>> LUCAS FREITAS: En primer lloc, parlarem una mica
sobre el CS50 Appliance.
El CS50 Appliance és en realitat una virtuals màquina que es va a
executar en el seu propi ordinador, que és bàsicament l'execució d'un altre equip
dins del seu propi ordinador.
La qual cosa és molt bo.
I en realitat s'utilitza a tot arreu.
Les persones que a tecnologia sabrien que això s'utilitza tot el temps.
vostè?
Pot tenir diversos ordinadors en un sol dispositiu.
>> Anem a fer una ullada en realitat en l'aparell.
Quan vostè va a l'aparell després de registrar, vostè va a haver de
posi el seu nom i entre a Harvard pel que podem arribar a tots vostès registrat.
Vostè va a veure, bàsicament, només un fons d'escriptori, i després Home i Paperera,
i després aquests petits icones.
Aquests tres icones en realitat són els més coses importants que vostè pot tenir en
seu aparell.
>> La primera és gedit, que és un text editor, com el Bloc de notes o com a
qualsevol tipus d'editor de text.
És una cosa que fem servir per escriure codi i després fer coses amb ell.
>> La segona cosa que ens tenim aquí és Chrome.
Així que si vostè necessita utilitzar l'Internet en l'aparell, això és
el que pot utilitzar.
>> I la tercera cosa és el terminal, que en realitat és molt dolça.
La gent en general són una mena de por de el terminal perquè és aquest mateix
aplicació antiga en la qual es només bàsicament escriure tot amb
el seu teclat.
No hi ha una gran quantitat d'interacció amb el ratolí.
Però en realitat el terminal fa coses molt bones.
>> En primer lloc, anem a anar a través d' alguns comandaments que
pot utilitzar en el terminal.
>> LAUREN CARVALHO I no dubteu a passar amb nosaltres si té alguna pregunta.
>> LUCAS FREITAS: Si.
Així que la primera ordre que tenim per al terminal és ls.
ls bàsicament vol dir llista de tot, tot els arxius i tots els directors,
que tinc en el lloc que estic.
Així que si ho faig ls aquí, jo vaig a veure que tinc alguns directoris.
Tinc l'escriptori, les descàrregues, els registres i els vhosts.
Aquests són en blau, ja que són tots els directoris.
>> Llavors vostè té alguns altres arxius.
Té com hola i hello.c, que són només arxius, i estan en
diferents colors.
Així que aquest és una ordre molt important igual es pot veure quins són els arxius
i directoris que vostè té en el directori que
vostè està en el terminal.
Quan vegi jharvard @ aparell i llavors el petit símbol d'allà, el
accent, això només vol dir que aquesta és la directori que vostè està en aquest moment.
>> LAUREN CARVALHO: Per tant teclejar ls és gairebé com fer clic a la carpeta
que apareix just aquí, a la Mostra que tots els continguts que són
dins d'aquesta carpeta.
>> AUDIÈNCIA: Hi ha text després de la hola.c?
>> LAUREN CARVALHO: Oh, no pots veure això, perquè és blau.
>> LUCAS FREITAS: Diu registres i amb dominis virtuals.
>> LAUREN CARVALHO: Aquests són només altres carpetes.
Ho sento, és molt difícil de veure.
Potser si apaguem els llums?
Colton, vols provar i trobar l'interruptor de la llum?
Ho sento per això.
Jo no penso en això.
>> LUCAS FREITAS: Però és bàsicament -
sí, si pogués -
>> LAUREN CARVALHO: Zoom a la pantalla.
>> LUCAS FREITAS: no ho faig tenen aquesta característica.
>> LAUREN CARVALHO: [inaudible].
D'acord.
Bé, només hi ha un munt dels recursos naturals la llum en aquesta habitació.
>> LUCAS FREITAS: Anem a suposar que hi ha dos directoris allà.
>> LAUREN CARVALHO: Només tenir amb nosaltres.
Aquesta és l'única part que vostè va a es busca a la terminal.
>> LUCAS FREITAS: El següent comanda és bàsicament, potser vostè vol organitzar
seus arxius -
per exemple, tots els arxius de C en una directori, però vostè no té un
directori només per a C presenta encara.
És, bàsicament, pot crear un directori utilitzant el terminal, així, que és
el mateix que fer clic dret i dient a Nova carpeta.
La comanda es crea directori, que és mkdir, de manera que, bàsicament, "fer" i
"Directori".
>> I llavors vostè pot posar el nom del directori.
Diguem que jo volia ser cridat, Jo no sé, diguem pset1 Doing
això, m'acaba de crear un directori.
Anem a comprovar que està allà.
Així que si ho faig ls, ara veig els registres, i llavors pset1, i després vhosts.
Així que tinc el nou directori existeix.
>> I després, després de tenir un nou directori, potser vostè vol navegar
en ella, de manera que la següent comanda aquest cd, que, bàsicament, només significa anar a un
directori específic.
Així que si vull anar a pset1, Jo només puc fer pset1 cd.
>> LAUREN CARVALHO: cd representa el canvi directori, [inaudible] capaç de
recordar això.
>> LUCAS FREITAS I ara es veu que en lloc de només tenir jharvard
aparell, he jharvard aparell, i després pset1, perquè està mostrant
amb mi on jo estic en aquest equip.
>> Ara si vull tornar a la directori que era abans d'aquesta, em
pot fer un punt punt cd, que només vol dir anar al directori que el que era abans,
com el pare d'aquesta directori, bàsicament.
I ara veig que estic de nou a jharvard.
>> La següent cosa que jo puc fer-ho és rm, que és eliminar un arxiu.
Per exemple, primer farem ls per veure el que tinc aquí.
Tinc hola i hello.c.
Diguem que vull eliminar-los.
Jo puc fer hola rm.
Es dirà "eliminar arxiu regular hola? "I jo dic" sí. "I ara, si em
fer ls, veig que es tracta d' No hi ha més.
>> Si tracte d'usar rm per a un directori, però, no va
deixar de fer res.
Es dirà, escolta, no es pot eliminar un directori.
Així que tenim aquesta altra vénen anomenat rmdir, que simplement significa bàsicament
eliminar el directori.
Puc, per exemple, eliminar pset1.
I si ho faig ls, no ho faig tenir més.
>> Una pregunta sobre això?
No?
Sí?
>> AUDIÈNCIA: És important que deixi un espai després - sempre que
comenci a escriure alguna cosa en?
>> LUCAS FREITAS: Si.
Si ho faig com el CD i el directori, He de posar un espai.
Quin espai estàs parlant?
>> LAUREN CARVALHO: L'espai entre cd i [inaudible].
>> LUCAS FREITAS: Sí, vostè haurà de posar els espais perquè cd és la
comandament, i després la següent cadena que quin tipus és bàsicament el directori.
Així que és com un argument.
Sí?
>> AUDIÈNCIA: Quan vostè enumera, tots aquells són directoris diferents, no?
>> LUCAS FREITAS: Sí, són al directori.
>> AUDIÈNCIA: Quina és la diferència entre els directoris?
>> LUCAS FREITAS: Són simplement diferents carpetes.
Directori és una carpeta al seu ordinador.
>> AUDIÈNCIA: Obrir carpeta.
>> LUCAS FREITAS: Sí, és només una carpeta oberta.
>> LAUREN CARVALHO: Per aquí, les que estan en blau són reals
directoris que vostè pot aconseguir en i a continuació, veure un munt de coses que són
dins d'ella, la qual cosa és lamentable perquè no es pot llegir la realitat
els de color blau.
I els que estan en blanc són només arxius que són dins el directori actual.
>> LUCAS FREITAS: So directoris són carpetes.
Els altres són arxius.
>> AUDIÈNCIA: Quin és la comanda per restablir o per desactivar?
LUCAS FREITAS: Per esborrar?
LAUREN CARVALHO: Per esborrar?
LUCAS FREITAS: Crec que que és "clar". Sí
Llavors només ha de teclejar clar si la pantalla és massa desordenat.
Alguna altra pregunta?
I aprendràs un munt d'altres comandaments de manera natural durant el
semestre perquè són molt útils.
>> Així que ara anem a parlar de la compilació.
Parlem de pseudocodi i codi font i el codi objecte.
I hi ha una gran quantitat de codis, i potser vostès estan confosos sobre això.
Anem a parlar una mica sobre el que que passa quan estàs escrivint un programa,
i compilar, i esdevé un arxiu executable.
Aquestes són totes les paraules que vostès probablement ha escoltat, i que per tant no està
molt segur del que està passant.
>> Diguem, per exemple, que vull escriure un programa que diu "hola". La
el primer que ve a la ment és quin tipus de tracta de pensar en com ets
va a fer això en la teva ment, i segur que està pensant en Anglès o
algun altre idioma, com naturals llenguatge, probablement.
I llavors penses, bé, si vull, per exemple, escriure un programa que
diu "hola", m'agradaria començar un programa, Vaig a imprimir hola i, a continuació, ho faré
sortir del programa.
Aquest és pseudocodi.
És a dir, bàsicament, només estàs intentant arribar a una seqüència d'esdeveniments
que vas a fer per ser capaç d'escriure un programa.
>> Llavors vostè té el codi font, i el codi font no ha de
estar específicament en C. Estem parlant sobre el codi font en C, perquè això és
la llengua que estem aprenent, però és clar codi pot ser gairebé qualsevol
llenguatge de programació que vostè té.
Més endavant en el semestre, vas per aprendre altres idiomes.
Aquest és també el codi font.
>> Per exemple, aquí, aquesta és la meva font codi, i després estic incloent un
biblioteca, i llavors començo principal, i després imprimeixo.
I Laura se'n va a parlar una mica poc sobre tot això.
Així que aquest és el codi font.
>> ¿I quin és el codi d'objecte?
L'objecte és un munt de zeros i altres, bàsicament.
El que passa és que inicialment té pseudocodi, que és tot en anglès.
I vull dir, vostè ho entén.
Probablement teus amics entenen , I la majoria de la gent ho faria
entendre la idea.
Però els ordinadors són molt ximple, i no entenen Anglès, per la qual cosa
han traduir això en alguna cosa, generalment traduït en alguns
llenguatge de programació.
>> I es pot pensar en una programació el llenguatge com una mena llenguatge
que informi al seu equip com de parlar i d'entendre.
Bàsicament, s'està escrivint alguna cosa en un llenguatge que tots dos vostè i la seva
equip entén.
Aquest és el codi font.
Forma Així que va a la font de pseudocodi codi, li toca a vostè.
Es tracta bàsicament que fer el seu programa.
>> Però el problema és que el ordinador no fins i tot
comprendre el llenguatge de programació.
No entén codi font en absolut.
En realitat, només entén zeros i uns.
Així que tenim aquesta cosa molt màgica anomenada un compilador, que és bàsicament
posarà la font trucada que escriure en una llengua que tant vostè
i el seu equip parlen, i ara tu ets transformarà que en
zeros i uns.
Així que bàsicament el que el compilador fa és es posa el codi font, en aquest cas C,
que va a la transformen en zeros i els que l'ordinador
entén i pot fer una arxiu executable fora d'ell.
>> Això té sentit?
Vostè només pot pensar en el compilador com una mena de traductor que estigui
ajudar a explicar a l'ordinador exactament el que se suposa que ha de fer.
>> Però com puc compilar.
Tornem a l'aparell, i diguem que estic fent aquest programa.
En primer lloc vaig a crear un directori aquí, i jo vaig a dir-
"Pràctica". Ara em vaig a navegar en el directori, de manera que la pràctica cd.
Ara estic dins de la pràctica.
>> Ara vull començar gedit, així que com ho faig?
Jo tampoc puc fer clic aquí o puc simplement literalment escriure "gedit", i va
obrir per a mi.
>> Ara vaig a escriure el meu programa, de manera que exactament el que vaig escriure a la diapositiva.
Estic declarant una biblioteca.
Estic fent int main, nul · la.
I ara que estic fent printf, hola.
Ara em vaig a guardar això.
Déjame posar-ho en pràctica, i Vaig a trucar a aquest hello.c.
Així que ara es transforma en gol.
>> Si vull compilar, jo en realitat pot fer-ho en dos llocs diferents.
Ja sigui que puc fer-ho en una finestra de terminal, de manera que aquest gran, o pot
utilitzar gedit que té en realitat una finestra de terminal aquí.
Així que vostè pot fer molt bé el seu codi, i llavors vostè pot escriure simplement
el que sigui aquí, i tractar de compilar.
>> Llavors, com puc compilar codi?
La forma més senzilla que tenim és mitjançant l'ús de fer, que és una funció que
bàsicament es va a compilar el codi.
Només has de dir hola a fer, de manera que "Fer" i el nom del programa.
>> Ho sentim.
Això és incòmode.
>> LAUREN CARVALHO: Potser [inaudible]?
>> LUCAS FREITAS: Ho sento.
Jo no la salvo a ella al directori correcte.
Vine a la pràctica, i ara guardar-lo com hello.c.
Ho sento.
Ara ja s'ha guardat.
>> Permetin-me fer ls i ser Segur que és aquí.
Bé, ara que és aquí.
Així que ara si ho faig fer hola, escup un munt de coses, però llavors, només es dóna
em una altra línia per a la terminal, que significa que s'ha realitzat correctament.
Així que ara si faig un ls de nou, en realitat veure aquesta imatge en verd, que és el
arxiu executable.
>> I llavors, si vull córrer, tots els que Que he de fer és slash dot hola.
Es va a saludar aquí, per que és exactament el que estic demanant que ho faci.
>> Hi ha una forma més de la compilació, que està utilitzant so metàl · lic.
Clang és només un compilador que tenim, i és una mica més detallat de
compilar.
Però funciona igual de bé.
Així que si ho faig soroll metàl · lic, i després-o, i després el nom que vull donar a
l'arxiu executable, per la qual cosa direm "Hola." I a continuació, l'arxiu que vull
compilar, hello.c.
També va a compilar.
I vostè té l'arxiu aquí, i Jo només puc executar també.
Així que tots dos treballen.
>> Això té sentit?
Alguna pregunta?
>> AUDIÈNCIA: Pot ampliar aquí a una estona?
>> LUCAS FREITAS: Ho sents?
>> AUDIÈNCIA: Zoom in?
>> LAUREN CARVALHO: Crec que només pot ordenar més.
>> LUCAS FREITAS: Envia a què?
>> LAUREN CARVALHO: Comando més.
>> LUCAS FREITAS: No
>> LAUREN CARVALHO: Oh, això no és anar a treballar, perquè -
és perquè hem creat la resolució per això.
>> LUCAS FREITAS: no ho faig pensem que podem fer més gran
Sí, no podem fer zoom.
Tens una altra pregunta?
Ho sento.
>> AUDIÈNCIA: Pot repetir so metàl · lic?
>> LUCAS FREITAS: El so metàl · lic?
Clang és el mateix que fer, però el diferència és que primer vaig
per escriure so metàl · lic, que és la comanda, llavors jo faré -0, tots, la qual cosa és
just el que anem a aprendre més tard com una bandera.
Així que crec que sempre has de posar-o.
>> I a continuació, en primer lloc, vostè va a posar el nom del fitxer executable,
bàsicament l'arxiu que estàs crearà.
Així que puc dir, per exemple, hello2 i llavors l'arxiu que vull recopilar,
que és l'arxiu c ..
Així que això és hello.c.
Això té sentit?
>> AUDIÈNCIA: Hola, què?
Què és això?
>> LUCAS FREITAS: hello.c.
I si puc compilar, i si Jo ls, també tinc un
hello2 que acaba de compilar.
I si intento executar-lo, que va a fer exactament el mateix que hola,
només imprimir hola.
>> AUDIÈNCIA: Com és que per a la marca vostè pot posar hola.c després?
>> LUCAS FREITAS: A la marca, que no han de posar el. c.
A la marca, que acaba de dir el el nom del programa.
No ha de dir. C.
Però per Clang, hauria de fer.
>> AUDIÈNCIA: Amb so metàl · lic fa també cal afegir la [inaudible]
>> LAUREN CARVALHO: Si.
Així que vostè també té a la biblioteca.
>> LUCAS FREITAS: Sí, això és una cosa utilitzarem més endavant.
Això es diu d'enllaç, i crec que estem anem a parlar-ne més tard.
Una altra pregunta?
>> AUDIÈNCIA: Poses un so metàl · lic slash dot?
>> LUCAS FREITAS: No
La barra de punts és només per obrir l'arxiu executable.
Així Clang, que acaba d'escriure "Clang", i llavors el si vols obrir el
arxiu executable que acaba compilat, llavors vostè dot
tala i el nom.
Això té sentit?
>> AUDIÈNCIA: Si es canviarà sol [Inaudible] per hola món, oi
haver de recompilar?
>> LUCAS FREITAS: Si.
si vull dir, per exemple, "hola allà, "Només es pot guardar ara, i jo
només compilar de nou.
Així que permetin-me fer un make hola.
I si ho faig hola, que va a dir "hola." Té sentit?
Alguna altra pregunta?
>> AUDIÈNCIA: Ha d'incloure la E / S estàndard per coordinar la feina?
>> LUCAS FREITAS: Si.
L'E / S estàndard és bàsicament la biblioteca que té un
aplicació de printf.
Així que el correcte en el superior inclou stdio.
Això està incloent una biblioteca que bàsicament, té un munt de diferents
eines que es poden utilitzar.
un?
D'ells és printf és una funció que bàsicament impressions
missatges a la pantalla.
>> Alguna altra pregunta?
No?
D'acord.
Així que ara anem a parlar de -
>> LAUREN CARVALHO: Anem a anar a la guia d'estil.
Vols simplement trobar en aquesta llista?
>> LUCAS FREITAS: Així que anem per parlar d'estil.
>> LAUREN CARVALHO: Oh, David no va acabar.
D'acord.
Per què no tornem a estil al final?
En realitat, ha estat actualitzat mentre parlem.
>> LUCAS FREITAS: Si.
Anem camí a David per acabar això.
>> LAUREN CARVALHO: Llauna canviem realment?
>> Així que espero que tothom ha estat gaudint de Scratch.
Per desgràcia, és el moment de allunyar d'això -
per desgràcia és el moment d'allunyar- a partir d'aquests blocs de programació boniques
a C. Però per sort, tot el construccions de programació que vostè té
estat treballant amb Scratch són directament traduïble a C, i estem
va a començar a aprendre sobre alguns d'ells en aquest moment.
Primer parlem sobre les condicions en expressions booleanes.
>> Això s'està executant a la reserva energia de la bateria.
>> LUCAS FREITAS: Com és que no funciona?
D'acord.
Un va allà, vaig a aconseguir el -
>> LAUREN CARVALHO: Així que les condicions són importants perquè ens permeten
introduir la lògica en els nostres programes.
Heus aquí un exemple d'una condició dins d'un programa en C.
Notem com aquest -
Així que aquest bloc condicions aquí, aquesta sentència printf no s'executarà
llevat que la condició dins de la parèntesi, n major que 0,
s'avalua en true.
>> Ara, totes les condicions dins de f declaracions són expressions booleanes,
el que significa que hi ha són només dues opcions.
O bé podrien avaluar com true, o que puguin avaluar en false.
Així que aquí, així que això té sentit, oi? n més gran que 0, significa que és un positiu
nombre, el que significa que s'imprimirà out "que va triar un nombre positiu."
>> Hi ha un munt d'expressions booleanes que pot formar la condició amb una
declaració init.
Tenim el menor que.
Això és menys que o igual a.
Això és només un divertit [inaudible].
Si voleu que el printf que es produeixi si es tracta de més gran que o igual a 0, llavors
vostè triaria això.
Així que la igualtat només annexa dret després que el signe més gran que.
>> Igual Igual, que és diferent de només un signe d'igual, igual igual
en realitat vol dir que tot el que d'al costat esquerre d'aquesta és el mateix que
el que hi ha a la part dreta d'aquesta on un signe igual és el que?
El que és només un signe igual?
Assignació.
>> LUCAS FREITAS: Qui va dir això?
És que els dolços?
Oh, no.
Ho sento.
Tots dos donen caramels.
Oh, OK!
Tres persones es caramels!
>> LAUREN CARVALHO: Així que aquesta d'aquí és l'operador de l'explosió anterior
el signe igual, pel que és no és igual a.
Així que si això estava dins de la meva condició, el cos de l'afecció
executar només si ho està en l'esquerra no és el mateix que
el que està a la dreta.
>> També puc tenir només el signe d'exclamació.
En realitat veurem en una característica llisqui com això podria ser utilitzat.
>> LUCAS FREITAS: Alguna pregunta?
No?
>> LAUREN CARVALHO: Podem combinar aquests Expressions booleanes per construir més
sentències condicionals complexes.
Així que aquí, si el que hagi a l'esquerra costat de la doble barra o
el que està al costat dret de doble barra i s'avalua com a veritable,
a continuació, anem a imprimir fos vàlid.
I després aquí baix, si el que sigui que al costat de la mà esquerra dels dos
els símbols d'unió i el que hi hagi en el dret costat dels dos símbols d'unió
s'avalua com a veritable, llavors anem a imprimir fos vàlid.
Les dobles barres es diuen la lògica Operador O els dobles són símbols d'unió
anomenat l'operador lògic AND.
Sí?
>> AUDIÈNCIA: Aquests són només minúscules l's?
>> LAUREN CARVALHO: No
En realitat, són -
vostè sap la reacció, com per sobre de la tecla de retorn?
Veus això?
>> LUCAS FREITAS: En realitat és un bar.
>> LAUREN CARVALHO: En realitat és només dos bars.
>> AUDIÈNCIA: Es pot utilitzar la igual igual per a les cadenes?
>> LUCAS FREITAS: No
Anem a aprendre més tard alguna cosa.
>> LAUREN CARVALHO: Hi ha una funció que es pot utilitzar.
Però vostè no ha de preocupar-se que de moment.
>> Què passa si li dono a aquest programa el número 5?
Què va a imprimir?
>> AUDIÈNCIA: [inaudible]
vàlida.
>> LAUREN CARVALHO: Vàlid?
Sí
Jo no sé qui va posar això.
>> [Rialles]
>> LAUREN CARVALHO: Això és una cosa de por [inaudible].
>> AUDIÈNCIA: Així que el matrimoni i, i això només vol dir?
>> LAUREN CARVALHO: Si.
Així que el número 5 és alhora una major que 0 i menor que 100.
>> AUDIÈNCIA: Per què seria una?
>> LAUREN CARVALHO: Un signe és en realitat alguna cosa diferent, i és
un operador bit a bit, que vostè aprendre sobre més endavant.
Però és una cosa que realment funciona amb els bits d'un nombre donat.
>> LUCAS FREITAS: Simplement crec que no ho fan haver de preocupar-se per això per ara.
>> LAUREN CARVALHO: Crec que és probable que sigui que fins a la setmana que ve.
>> LUCAS FREITAS: Alguna altra pregunta?
No?
>> LAUREN CARVALHO: Així hem vist que un es bloqueja pot estar sol, però pot
També es combina amb i altra quadra.
Així doncs, en aquest cas, si n és més gran que 0, ens anem a imprimir "Vostè
triat un nombre positiu. "else, que significa si és 0 o si és menys
de 0, que anem a imprimir, "Vostè va escollir un nombre negatiu."
>> L'interessant aquí és que aquests són excloents entre si.
Mai serà un cas en què aquest i aquest
pot tant imprimir.
>> Estic segur que vostè va treballar amb el if / else caixa en Scratch, de manera que aquest ha de ser
bastant familiar.
Sí?
>> AUDIÈNCIA: Necessitem l'espai entre int n és igual GetInt llavors l'espai en el
if?
Com utilitzem una línia [inaudible]
>> LAUREN CARVALHO: Oh, l'espai d'aquí?
>> AUDIÈNCIA: Igual que això, però el doble d'espai.
No, anar cap amunt.
Pugi.
>> LUCAS FREITAS: Només la línia?
>> AUDIÈNCIA: Si.
>> LUCAS FREITAS: Només la línia en blanc?
>> AUDIÈNCIA: Si.
>> LAUREN CARVALHO: Línia en blanc?
No
Això és només una cosa d'estil.
>> LUCAS FREITAS: És igual que en ocasions que acaba de saltar algunes línies del que
que el codi no es veu com un enorme bloc de text.
>> LAUREN CARVALHO: Crec que el que va passar era que teníem un comentari aquí, però em
el va treure perquè vostès haurien pensar en el codi en lloc
que acaba de llegir el meu comentari.
En general, l'espai no ho farà realment afectar la forma en que el seu programa s'executa.
És més una cosa d'estil.
I quan tenim la guia d'estil actualitzat i llest per a funcionar a finals de
supersección, parlarem sobre això més.
>> Hi ha alguna cosa malament amb aquest programa, no?
A causa de 0 no és realment un nombre negatiu.
Així que anem a veure si podem arreglar això.
>> Vostè probablement pot imaginar amb això, diu, no?
Si n és més gran que 0, imprimim, "Vostè triat un nombre positiu. "Llavors la resta
si n és menor que 0, "Vostè va escollir una nombre negatiu. "cosa" Vas triar
0. "
>> Ara l'interessant és que això podria continuar per sempre.
Vostè pot tenir un bloc if, else si bloc, una altra cosa si el bloc, més si,
else if, else if, else, bàsicament com el temps que vulguis.
I quan es construeixen d'aquesta manera, que tot serà
excloents entre si.
Sí?
>> AUDIÈNCIA: Llavors per què no pots utilitzar altre, si en lloc de [inaudible]?
>> LAUREN CARVALHO: En aquest cas, sí que podria utilitzar un altre si, i seria
absolutament bé perquè la condicions sí que són
excloents entre si.
Però si les condicions no eren exclusius l'un de l'altre, aquesta faria
obligar-los a avaluar mai tots dos, si això té sentit.
>> AUDIÈNCIA: En aquest cas, podríem niu el segon, si en el primer cas?
>> LAUREN CARVALHO: Si - Què vols dir?
>> AUDIÈNCIA: Si les dues condicions no són mútuament excloents?
>> LAUREN CARVALHO: Si les condicions no són mútuament excloents?
Però desitja que només un d'ells per córrer?
>> AUDIÈNCIA: Vostè vol que només si en lloc d'un altre.
>> LAUREN CARVALHO: Si.
No sempre seran molt de maneres que vostè pot fer això.
Vostè pot vendre definitivament niu.
I veuràs en un portaobjectes de futur que vostè pot tenir múltiples sís, només un
després d'una altra.
Però aquesta és una forma de lògica organitzar el flux del seu programa.
>> LUCAS FREITAS: I hi ha una més cosa, és que se us demanarà sobre posar
si i després un altre si.
Això funcionaria perfectament, però és dolenta disseny, perquè, bàsicament, si
marqui el primer cas, i t'adones que el nombre és més gran que 0, es
simplement pot acabar el programa.
No ha de comprovar si és menor que 0, no?
>> Però si si si, es va a comprovar tots dos, mentre que si ho faig, si la resta, és a dir,
que va a comprovar si que és més gran que 0.
Si és així, no va a veure encara a la resta de línies de codi.
Així que bàsicament estàs comprovant com dues vegades innecessàriament, així que és per això que
fer si else if.
Alguna altra pregunta?
>> AUDIÈNCIA: Així que la funcionalitat de la persona si és el mateix que
si era només si?
>> LAUREN CARVALHO: No
Vostè està en realitat va a veure en la meva pròxima lliscar un exemple en el qual pot
ser diferent.
En aquest cas, és gairebé el mateix.
>> Així que aquí tenim un exemple de múltiples si les declaracions, i la
funcionalitat no és la mateixa com si jo hagués dit si
una altra cosa, si bé, si els altres.
Anem a pensar sobre el que imprimeixi si entro en el nombre 95
en aquest programa.
>> AUDIÈNCIA: [inaudible]
>> LAUREN CARVALHO: I després?
>> AUDIÈNCIA: [inaudible]
>> LAUREN CARVALHO: Si.
Així que en aquest cas, aquestes condicions són no s'exclouen mútuament l'un de l'altre.
I perquè no hi ha res aquesta condició d'avaluar si aquesta
un ja té, només estan Tot va a imprimir.
Així que com podria solucionar això?
>> AUDIÈNCIA: else passaria?
>> LAUREN CARVALHO: També podeu fer servir else sís.
Vaig poder canviar l'ordre d'ells, oi?
Si ho fes aquest en primer lloc?
Bé, en realitat, no.
Això no funcionaria per al 95.
>> LUCAS FREITAS: No, només els altres sís.
>> LAUREN CARVALHO: L'altra persona IFS hauria arreglat aquest.
Això aclarir la confusió entre sís i altres passaria?
>> AUDIÈNCIA: Només volia preguntar-li, si vas usar else if, que deixaria?
>> LAUREN CARVALHO: així.
Pel que només aquesta primera.
Si entrava en el nombre 95, només que aquesta hauria imprès, i mai
hauria progressat fins a l'altre.
>> LUCAS FREITAS: Just tipus de pensar com si això succeeix, feu el següent.
L'altra és com si no, xec per això i, a continuació, fer això.
Així com tots són mútuament exclusiva.
Vostè no pot aconseguir en dos sobre aquells.
>> AUDIÈNCIA: Es pot utilitzar una lògica I per a aquesta situació?
>> LAUREN CARVALHO: Si.
Aquesta és una altra manera que poguéssim han solucionat aquest problema.
Estem podríem haver definit rangs, oi?
Així que jo podria haver dit si n és més gran de 90 i menys de -
bé, suposo que aquest en realitat no importa, però aquí em podria haver dit si
n és més gran que 80 i menor que 90.
Superior a 70, menys de 80.
Això també han treballat.
>> [Rialles]
>> LUCAS FREITAS: Té por.
>> LAUREN CARVALHO: No tingueu por.
>> LUCAS FREITAS: No és que serà dolent.
És només que és innecessàriament verbose.
Igual que en la informàtica, s'ha de ser tan simple com sigui possible, sempre que
vostè té la funcionalitat.
Vols que el caramel?
>> AUDIÈNCIA: No ho necessito.
>> LAUREN CARVALHO: Ets espantant tothom, Lucas.
>> LUCAS FREITAS: Ho sento.
>> LAUREN CARVALHO: David també s'esmenta aquests canvien declaració a classe.
Bàsicament el que està passant és l'interruptor declaració pren una variable.
En aquest cas, ens estem prenent un sencer.
>> Si l'enter és 1, anem a imprimir "Vostè va escollir un petit
nombre. "Si l'enter és 1," Vostè escollit un nombre mitjà ". Si el
sencer és 3, "Vostè va escollir un alt nombre. "I jo també tenia un cas per defecte
aquí baix, però no ho demostra , La qual cosa és una llàstima.
>> Bàsicament, això és només una altra sintaxi.
Podríem haver implementat aquesta exacta el mateix amb if i else
declaracions.
Però quan hi ha un munt de diferents condicions i un munt de diferents
variacions sobre el que vol fer per cada entrada, aquesta és una opció.
Així que és només una bona sintaxi saber.
Sí?
>> AUDIÈNCIA: Per què no hi ha una barra invertida n en la primera?
>> LAUREN CARVALHO: Per aquí dalt?
No hi ha barra invertida n-hi perquè el GetInt -
si vostè intenta això, que va a donar-li aquest missatge.
Dóna'm un nombre enter entre 1 i 3.
I si poso la reacció n, ho faria porta'ma la següent línia, però jo només
volien que escriviu el nombre enter just després dels dos punts.
Podries haver posat el contraatac n.
No és una gran cosa.
Sí?
>> AUDIÈNCIA: Perquè aquest codi, és aquest cas que un, és que a causa
que és el primer cas?
Perquè -
>> LAUREN CARVALHO: No, no, no.
Així que això m'està donar un nombre enter entre 1 i 3.
Si n és 1, puc imprimir això.
Si hagués demanat cartes, podria tenir va dir dóna'm una lletra de la A
i C. A continuació, aquest seria el cas A.
>> AUDIÈNCIA: [inaudible].
El cas seria simplement [inaudible]
>> LAUREN CARVALHO: Sí, és clar.
Sí?
>> AUDIÈNCIA: I si volia tenir més d'una expressió relacional?
Així que en lloc de dir n és igual a 1, [inaudible]
n és més gran que 1 en el primer cas?
>> LAUREN CARVALHO: En realitat, si no ho faig definir alguns d'aquests casos, podria
pot portar cap avall.
Així que en realitat, potser això no és el que estàs demanant.
>> LUCAS FREITAS: Crec que s'està preguntant si el cas era n major que 0, cas
menys de 0.
>> LAUREN CARVALHO: Potser l'interruptor declaració no és realment el que vols
utilitzar en aquest cas.
>> LUCAS FREITAS: La sentència switch és només per valor, pel que vostè està comprovant d'
el valor és com això o allò.
Pel que no pot en realitat posar condicions.
>> AUDIÈNCIA: Què passa si la persona tipus de [inaudible]?
>> LAUREN CARVALHO: Això hauria estat el meu cas per defecte, que per desgràcia
no es pot veure.
>> LUCAS FREITAS: [inaudible] fer-los veure.
>> LAUREN CARVALHO: En realitat, Saps què?
Anem a anar a estudiar 50, i ho faré només fer un zoom en les diapositives en estudi
50, ja que aquesta és només una molèstia.
Així que permetin-me en realitat vaig a condició.
Això és només va a prendre una mica de temps.
>> Està bé.
Així que, ho sento.
Almenys ara serem capaços de veure tot sense tallar.
Està bé.
>> Així que si et posen en un 10, tindríem per defecte aquí al meu cas per defecte, i jo
seria simplement imprimir invàlida perquè els demanarà que introdueixi un nombre sencer
entre 1 i 3.
Alguna altra pregunta?
Sí?
>> AUDIÈNCIA: Diguem que per al cas d'un, cas 3, que li agradaria que fos tot el
el mateix, pel que va prendre un nombre això no és un nombre mitjà.
En aquest cas, seria redundant?
Podries canviar el text tant en d'ells, o hauria alguns
redundància?
Hi ha alguna manera de combinar [Inaudible]?
>> LAUREN CARVALHO: Hi ha maneres de combinar-los, però crec que es pot
només combinar els adjacents.
Així que si no defineix res per al cas de dos, podria
aplicar-se a tots dos casos.
Oh, si jo no he posat res per cas 1, això s'aplicaria tant a
cas que un i dos.
Si això té sentit.
>> AUDIÈNCIA: Pot repetir això?
>> LUCAS FREITAS: OK.
Si ho va fer, bàsicament, com, vostè té la mateixa cosa, però no et poses
res aquí, que seria ja sigui per cas que un o dos casos, a fer això.
Cert?
I aquesta ruptura vol dir que si vostè aconsegueix en aquest cas, acaba de sortir.
Així que això és el que significa el fre.
Així que si ho acabo de fer això, es mira, és cas que un, i vostè acaba de fer això.
Si fos el cas de dos, també ho faria acaba d'arribar aquí i fer això.
>> AUDIÈNCIA: Però es pot fer?
Si hi ha alguna cosa per cas de dos [inaudible]
>> LAUREN CARVALHO: No crec vostè pot fer això.
Crec que no es pot saltar al voltant.
Pots fer això, Rob?
No ho crec.
>> AUDIÈNCIA: Així que només un nombre pot anar després d'un cas, oi?
No hi pot haver un cas, coma, dos?
>> LUCAS FREITAS: No, no pots.
Definitivament, no pots.
>> LAUREN CARVALHO: És a dir, el punt és Aquesta és una opció, i això no podria
s'ajusti al seu cas d'ús, pel que llavors utilitzaria el cas de condicions.
>> AUDIÈNCIA: Llavors, per què fas això?
El switch?
>> LAUREN CARVALHO: M'agradaria utilitzar aquesta si té molt definit -
En realitat, Lucas, s'està bloquejant.
>> LUCAS FREITAS: Oh, ho sento.
>> LAUREN CARVALHO: Si vostè té molt comportaments definits que desitgi per
tots i cada un d'entrada, això podria ser una poc més concís d'escriure
una sentència if per a cada un.
>> AUDIÈNCIA: Què fa el break significar una altra vegada?
>> LAUREN CARVALHO: La ruptura significa parar.
Recordeu, si no tingués aquesta ruptura aquí, hauríem caigut just
en el següent cas.
>> LUCAS FREITAS: Descans significa arribar sortir de la sentència switch.
Perquè si és 1, vull imprimir aquest i anar-se'n.
No vull comprovar res més.
>> AUDIÈNCIA: No vol per imprimir una altra cosa.
>> LUCAS FREITAS: Si.
Com que és mútuament excloent.
>> AUDIÈNCIA: I això només és procedent al següent cas si el primer cas
no és cert?
O provar tots els casos a la vegada?
>> LUCAS FREITAS: No, xecs de manera seqüencial.
Seqüencialment, si.
Una pregunta més, llavors hem de movem perquè puguem cobrir tot.
Sí?
>> AUDIÈNCIA: Així que per al cas, podria tenir fet alguna cosa més de només el triat?
Podria donar-li un rang?
>> LUCAS FREITAS: No
>> LAUREN CARVALHO: No crec que vostè pot donar-li un rang.
>> LUCAS FREITAS: No podeu no poden donar-li un rang.
>> AUDIÈNCIA: El cas és específic [Inaudible].
>> LUCAS FREITAS: Switch és una espècie de valors.
Vostè fent coses diferents depenent en un valor, un valor específic.
No es pot fer rang, no es pot fer una altra cosa.
És simplement una eina més per veure.
>> LAUREN CARVALHO: La majoria de la gent no utilitza canviar declaracions molt en CS50,
però hi és.
>> Està bé.
Així que el següent que parlarem sobre és l'operador ternari.
Aquest és només un altre tipus de condicional.
Bàsicament el que està passant aquí és que estic demanant un nombre enter, i si n és
superior a 100, vaig a imprimir "Alt". Si no és així, vaig a
imprimir "baixa".
>> Així que el que està fent és que la condició es aquí mateix en els parèntesis, i vostè
pot classe de pensar en la pregunta com estic preguntant si
això és cert o no.
Si és veritat, que vaig a fer això primer cosa, i si no és cert, jo sóc
farem aquesta segona cosa.
>> Una pregunta sobre l' operador ternari?
>> LUCAS FREITAS: Només vull assenyalar de David és que cada vegada que tingui una
condicions -
>> LAUREN CARVALHO: Suposo que el David de mirant a través de la transmissió en viu.
>> LUCAS FREITAS: Ho està fent la vida corrent en aquests moments.
Així que quan vostè té una condició, vostè és suposa posar claus,
igual que tenim en un interruptor declaració aquí.
Tenim les claus aquí.
Per a qualsevol condició, ets suposa també posar això.
>> LAUREN CARVALHO: Veurà això en el llibre d'estil.
En realitat no tenim la guia d'estil en aquests moments.
Crec que David encara està treballant.
>> LUCAS FREITAS: Va dir que és només treballar ara.
>> LAUREN CARVALHO: Oh, és feina ara?
D'acord.
Així que pel que sembla aquest any en l'estil guiar, encara que només té una línia,
has de posar els claus polz
No necessàriament ha de per al funcionalitat del programa.
I potser hauríem de fer un alt després que les condicions i van directament
a la guia d'estil per esborrar algunes d'aquestes coses?
>> LUCAS FREITAS: Si.
Té una pregunta?
>> AUDIÈNCIA: No, vaig a esperar fins que la guia d'estil.
>> AUDIÈNCIA: Podria tornar per l'operador ternari?
>> LAUREN CARVALHO: ternari, si.
>> LUCAS FREITAS: operador ternari és bàsicament una sentència if-else, però
en lloc d'haver de tenir les dues línies de comprovar si, i llavors el
una altra cosa, només hi ha una línia.
Així que, bàsicament, si vull donar una cadena un valor d'alt o baix, i jo
voler fer una parada si n és més gran que 100 o baixa si és menor, el que puc fer
és això [inaudible]
la cadena serà, i després em demana el programa és n més gran que 100?
>> Així que per això tinc aquesta expressió en parèntesi, i després
el signe d'interrogació.
Jo estic demanant és més gran que 100?
Si és així, que serà alta.
Si no és així, serà baixa.
>> Així que bàsicament el que vostè pensa és que vostè demana una pregunta, així que vostè posa en parèntesi
la condició.
Després situeu el signe d'interrogació perquè vostè està demanant ell.
I si això és cert, que serà en el primer valor de [inaudible] aquí.
Si no és així, vaig a posar el valor que és després dels dos punts.
Té sentit?
>> És també una cosa que és com un eina en C però vostè no ha de
específicament usar-lo.
Però la gent en general els agrada que CS ja que només guarda línies.
>> LAUREN CARVALHO: És molt elegant.
Ho fa molt en una sola declaració.
>> AUDIÈNCIA: Així que el signe de percentatge és simplement independència dels resultats en
la línia anterior?
>> LAUREN CARVALHO: Oh, ho sento.
Aquest signe de percentatge és en realitat un marcador de posició per a aquest s.
En un comunicat printf, tens aquesta string aquí, que és el que va a
imprimir, però no es pot simplement va posar aquest s allà.
En cas contrari seria imprimir dels s literalment.
Per això, vam posar un percentatge aquí per mantenir aquest lloc es va celebrar per qualsevol
ve després de la coma.
>> Així que per a una cadena, tens cent s.
Per a un sencer, cent i.
Per a un flotador, cent f.
Veuràs aquells com nosaltres veure més exemples.
Però potser hauria de parlar de la guia d'estil per una estona, ara
que li toca.
>> LUCAS FREITAS: Si vostè va a cs50.net/style, vostè va a veure
la guia d'estil.
Per als conjunts de problemes, la seva puntuació per a la conjunt de problemes es compon d'abast,
el que bàsicament vol dir que si vostè va fer tot les parts del problema establerts o si
intentat alguna cosa.
La segona cosa és la correcció, el que mitjans és el seu programa fent el que
se suposava que estaria fent, o ho fa tenen errors, o és que no fan el que
se suposa que ha de fer.
>> La tercera cosa és el disseny, el que significa estan implementant aquesta bé, o està
que l'ús de declaracions innecessàries?
Així per exemple, si voleu repetir un nombre 10 vegades, estàs escrivint un
bucle o simplement estàs fent 10 vegades la mateixa declaració, només fent
copiar i enganxar.
Així que el disseny és per això.
>> I, finalment, vostè té estil.
L'estil és com jutjar si el seu codi és
llegible i tipus de bonítol.
Simplement vol dir bàsicament és el seu codi llegible?
Seria algú que estava buscant són el seu codi sigui capaç d'entendre el que
que està fent?
Té comentaris i similars?
>> Anem a parlar sobre l'estil que se suposa que has de fer servir.
El primer és els comentaris.
Els comentaris són molt importants per a la seva codi perquè a vegades que estàs fent
el seu programa, i vostè sap exactament el que vol fer-ho vostè acaba de començar
codificació, només has d'escriure un munt de C. Però si algú està buscant és que vostè està
codi, no seran capaços de entendre perquè no saben
les coses de la vostra cap, com la pesudocode, així que potser ho faran
tenir dificultats per entendre el que fa el codi.
>> Així que els comentaris són realment útils per explicar per a algú que està mirant
el seu codi del que està fent, i En realitat, fins i tot per a vostè,
que són molt útils.
Com vas a Butlletins de problemes més difícils i durs, vostè va a veure que el codi obté
més llargs i, a continuació, els comentaris són realment important perquè recordi el que cada
part del teu programa fa.
>> Per posar un comentari, pot simplement fer una slash slash i després escriure un comentari.
I tota la línia és part d'un comentari, i tot el que vostè escriu,
no serà utilitzat per al codi.
Bàsicament el compilador va a ignorar això.
Això té sentit?
>> AUDIÈNCIA: Què es fa de nou per escriure un comentari?
>> LUCAS FREITAS: Això?
El slash slash?
Cada vegada que escriu slash slash, sigui quina sigui està en aquesta línia no
per a ser considerat com a C. Sí?
>> AUDIÈNCIA: Així que després del comentari, només entrar i començar una nova línia?
>> LUCAS FREITAS: Sí, exactament.
>> LAUREN CARVALHO: El slash slash és per als comentaris d'una sola línia.
>> LUCAS FREITAS: Per exemple, aquí tenim -
m'ho dius a mi el zoom in -
per exemple, aquí estic declarant un flotador, però potser si vostè acaba de posar aquest
en el codi, com no tens idea el que això està fent, com en realitat
algú que està buscant en aquest codi serà, igual que, el que el
diables està passant?
>> Si poses un comentari dient "convertir Fahrenheit a Celsius, té molt
més sentit.
Ets, com, OK, ets fer una conversió.
Això té sentit?
Així que és una cosa que ajuda a les persones llest el seu codi i també fer
vostè serà capaç d'organitzar el seu codi millor.
>> La segona cosa és que vostè pot fer comentaris de diverses línies, de manera que tenen una
comentar per a un munt de línies.
En lloc d'haver de posar slash slash, les observacions de primera línia, slash slash,
la segona línia, i així successivament, pot utilitzar l'estrella slash.
La forma en què vostè ho fa és que per al primera línia del comentari, vostè és
farem un estel estrelles ratlla vertical, així com si res.
Igual que aquí tenim el començament de un programa, en general posa que vostè
són, el que fa aquest programa, i coses per l'estil.
És com una capçalera per al programa.
>> Un cop més, no és una cosa que un compilador va a preocupar-se, però
és important que vostè sàpiga el que aquesta programa fa o per a altres persones
saber el que està fent el seu programa.
Pel que redueix radicalment estrella estrella, i després el última línia que faràs estrelles
retallar per poder tancar aquest comentari.
Així que, bàsicament, per a la resta de les línies, vostè pot escriure el que sigui, i això
és tot el que serà ignorat.
>> I també, igual que l'estil, es veu que cadascuna de les línies té un estel, i tots
les estrelles estan alineades.
Aquestes són coses importants per que el seu codi es veu bastant.
Sona bé?
>> Ara, condicions.
El que David estava dient que hem de fet posar a les diapositives, és que
quan vostè té qualsevol tipus de sentències if o qualsevol tipus de condicions,
vostè ha d'utilitzar claus per demostrar que això és el que anava a succeir
quan es té la condició.
Tècnicament, quan vostè té una condició i després la següent línia és només un
línia, vostè no ha tècnicament per posar les claus.
>> Bàsicament el compilador entendria de totes maneres com implícita.
Però per CS50, els demanem a vostès per posar les claus només perquè la seva
codi és més organitzat i més llegible.
Com que el codi es fa més llarg si no tenen claus i tal.
Es posa molt desordenat.
>> LAUREN CARVALHO: Això és exactament el que David acaba d'assenyalar
en els meus diapositives anteriors.
Definitivament funciona sense l'arrissat claus, però per raons d'estil
anem a demanar que vostè posa els polz
>> I quan comences a córrer style50, que és una espècie de la verificació de 50 de
estil, que li recordarà que ha de fer.
>> LUCAS FREITAS: I una altra cosa és recordeu posar les claus al costat
en cada línia.
Així ho fa, per exemple, l's.
Anar a la següent línia, obriu l'arrissat cotilla, després vas a la següent línia.
Sangria, que és quatre espais.
Després d'escriure el que sigui, i després un altre line, i tancar la clau de tancament.
Així que assegureu-vos que tant els arrissada claus estan en diferents línies.
>> AUDIÈNCIA: Així que si aquest codi tenia com 10 sís altra cosa, això ha
ser de 10 jocs de suports?
>> LUCAS FREITAS: Sí, per a cada un d'ells.
Sí
Així que si, en cas contrari si, i així successivament.
>> AUDIÈNCIA: Pot vostè no premeu Tab per sagnar?
>> LUCAS FREITAS: Els estem demanant nois a utilitzar quatre espais.
Alguns editors de text es tradueixen pestanya com quatre espais de forma automàtica.
gedit no ho fa, així que has de fer espai espai espai espai.
Això també és una cosa que alguns programadors només les pestanyes, alguns
programadors només els quatre espais, i algunes altres persones fins i tot fan
dos o tres espais.
És només que aquí estem demanant vostès que fer quatre espais.
>> AUDIÈNCIA: No hi ha gairebé definitivament ha d'haver una manera perquè gedit
automàticament [inaudible].
Igual que no [inaudible] ho fa.
>> LUCAS FREITAS: Si.
Crec que es pot anar a Configuració.
>> AUDIÈNCIA: Ja fa tot això.
>> LUCAS FREITAS: Ja fa?
D'acord.
Així que assegureu-vos que vostè tenir quatre espais.
>> AUDIÈNCIA: Hem de posar l'arrissat parèntesi en els bucles així?
>> LUCAS FREITAS: Si.
>> LAUREN CARVALHO: Sempre que el seu encapsulant un bloc de codi, només
feu servir les claus.
I abans de pensar que només som ser molt rigorosos en això per res de bo
raó, si a vostès no vagin a obtenir passanties tecnologia a les grans empreses,
que li donarà una guia d'estil, i ells li diran que això és el que el seu
codi ha de ser similar.
I tot i que aprenguis a codi com això, potser en el seu passantia
hauràs de fer alguna cosa completament diferent.
Ells esperen que et conformes al seu estil.
>> LUCAS FREITAS: I una cosa més és que ¿Notes com tinc com x,
espai, menys, espai, 0?
Cada vegada que tingui un operador -
pot ser com més, menys, els temps, menys, gran, sigui quin sigui l'operador -
has de posar un espai a la esquerra i el dret de l'operador.
>> LAUREN CARVALHO: Aquests són denominen operands binaris.
Només assegureu-vos que sempre l'espai terme les seves operands binaris.
>> LUCAS FREITAS: Aquest és no per un operador binari.
>> LAUREN CARVALHO: Això és perquè pren dues.
>> LUCAS FREITAS: Oh, si.
>> Acceptar, els switches.
En primer lloc, cal veure que igual que en una sentència if o else, vostè té
posar la clau de la seva pròpia línia i sota la clau d'aquí.
Observeu que hi ha un espai únic després de la connexió, igual que en if i else
teníem un sol espai entre això i els parèntesis.
Així que cal posar això.
>> I no hi ha cap espai després de cada dels parèntesis o abans del final
dels parèntesis.
Així que ja veus que és tot junt, i també els agrada aquí.
>> Sí?
>> LAUREN CARVALHO: Crec que hem de seguir endavant.
>> LUCAS FREITAS: Així que això és part de la guia d'estil que vostè té per al CS50.
Assegureu-vos d'anar a cs50.net/style i fer una ullada a això.
Aquests són tots molt importants per a la seva qualificació d'estil.
>> Permetin-me tornar a la declaració.
>> LAUREN CARVALHO: Prefereixo només ha d'utilitzar style50.
Només anirem directament als bucles.
Està bé.
>> Així que anem a tornar als continguts, ara que hem passat al llibre d'estil.
Loops, Vostè els ha vist en Scratch, i parlarem d'ells en
C.
>> En un bucle, hi ha tres porcions a la
declaració d'aquest bucle.
Vostè té el seu inicialització en que estableix les seves variables.
Tens la teva condició, que són la comprovació per veure si alguna cosa és
vertadera o falsa, i si el bucle ha de continuar.
I vostè té la seva actualització, que és l'actualització de les variables.
>> Anem a fer una ullada ràpida a algunes Codi C d'aquest bucle en acció.
El que passa és que aquí al inicialització, estem establint i a 0.
En la condició que estem comprovant si i és menor que 10.
I en l'actualització que estem incrementant i.
Llavors, quin serà el resultat de aquest bucle?
>> LUCAS FREITAS: En realitat, en primer lloc, Saps el que els nois i + + és?
>> AUDIÈNCIA: Augment en 1.
>> LUCAS FREITAS: Augment d'1, si.
Així que això és el mateix que fent i i + 1 és igual.
I adonar-se que no tenim un espai entre el jo i el + +.
>> Així que sí sabem és que vostès el que això va a fer?
Pot algú dir-me?
I potser obtenir una mica de caramel per això?
>> AUDIÈNCIA: [inaudible]
>> LUCAS FREITAS: OK.
[Inaudible]
mostrar a tots més tard [inaudible].
Sí, es mostrarà "Aquest CS50 és "10 vegades.
>> LAUREN CARVALHO: Suposo que va ser en el títol de la diapositiva.
>> LUCAS FREITAS: Oh, si.
>> [Rialles]
>> LUCAS FREITAS: Això ajuda.
>> LAUREN CARVALHO: Així que aquells són per als bucles.
Anem a veure alguns exemples més per llaços més endavant.
Però anem realment a fer una ullada a la segon tipus de bucle et trobaràs
en C, i es diu el bucle while.
>> En un bucle while, que hi hagi acaba d'aconseguir una condició.
La condició es comprova en el començant, i si aquesta condició
s'avalua com a veritable, llavors el codi dins de el cos del bloc mentre
s'executarà.
I el codi seguirà executar, sempre que que
condició segueix sent cert.
>> Heus aquí un exemple d'un bucle while en C. Anem a configurar el compte de 10 a
començar.
Mentre comptador és major que 0, seguirem imprimint a terme aquesta
variable d'aquí.
Anem a disminuir el recompte i a continuació, comprovar l'estat de nou.
Imprimir, decrement, xec la condició de nou.
>> Aquí tenim un exemple que fa a la seva pregunta anterior.
Teníem el percentatge s quan érem impressió d'una cadena, i ara que
estem imprimint un int, tenim una cent I com a marcador de posició en lloc nostre.
Totes les lletres ha de ser bastant intuïtiva, S per cadena, i per int.
>> Així que si s'executa aquest codi, ha de un compte regressiva de 10 a 0, la impressió
cada sencer.
>> LUCAS FREITAS: I es pot pensar en el per cent, ja que se sent com un espai en blanc
espai, i després et poses aquesta variable d'aquí en aquest espai en blanc.
Així, per exemple, aquí vaig a tenir només un espai en blanc, i després em vaig a posar la
comptar allà mateix, el valor del compte.
Això té sentit?
>> Puc simplement fer com printf i després cita, expliqui?
Funcionaria?
>> AUDIÈNCIA: No
>> LUCAS FREITAS: No, perquè ho farà de fet imprimir la paraula "compte"
en lloc d'imprimir el valor.
Aquesta és la forma de fer que imprimeixi els valors cap a la variable en lloc de
només el nom de la variable.
Alguna pregunta?
>> AUDIÈNCIA: Per què fan servir per com oposada a temps?
>> LAUREN CARVALHO: M'agradaria utilitzar una de bucle si sé exactament quants
iteracions que vull el meu bucle s'executi.
En aquest cas, no té importància, ja que, Vull dir, jo només estava tractant de
pensar en una molt simple exemple per a aquesta diapositiva.
Però diguem que vostè vol alguna cosa per seguir endavant, mentre que -
>> LUCAS FREITAS: Per exemple, vostè és demanant d'entrada fins que la persona
li dóna l'entrada dreta.
Així que, com mentre que l'entrada no és Acceptar, seguir preguntant per ell.
O com durant els seus pares no es donen diners, seguir preguntant per ell.
>> [Rialles]
>> LAUREN CARVALHO: No sap com moltes vegades hauràs de fer-ho.
>> LUCAS FREITAS: Perquè no ho fa sé quantes vegades això és
seguirà endavant.
>> LAUREN CARVALHO: Però en un bucle, el que necessita saber quantes vegades.
Sí?
>> AUDIÈNCIA: Només per aclarir, el percentatge diu que això és una cosa a punt de
succeir, sobre les is per a la part entera, i la barra invertida n -
>> LAUREN CARVALHO: Mitjans?
Qui sap el que significa la barra invertida n?
Nova línia, si.
Exactament.
>> LUCAS FREITAS: Vostè pot pensar de n com a nova línia.
>> LAUREN CARVALHO: Nice.
>> AUDIÈNCIA: Què és el que compta tauler tauler [inaudible]?
>> LUCAS FREITAS: Count minus minus és el mateix que el més més, però
en comptes d'augmentar, està disminuint en 1.
>> LAUREN CARVALHO: Qualsevol més mentre que les qüestions de bucle?
No?
Oh, que se suposava que han saltat que.
>> Es tracta d'un bucle do while.
Molt similar a un bucle while excepte en aquest cas, comprovem la condició després de
el codi en el cos de la bucle s'executa una vegada.
Així que executem el codi primer no importa què.
Llavors vam comprovar la condició, executar de nou si la condició és vertadera.
>> Vostè es trobarà utilitzant això quan vostè està demanant la entrada de l'usuari.
Com que sempre hauràs de demanar una vegada, i després en funció del que
l'entrada de l'usuari és, potser hagi de Nova sol · licitud i demanar una vegada i una altra si
l'entrada no era el que esperava que fos.
>> AUDIÈNCIA: Així que és com una forma perquè la gent ompli.
>> LAUREN CARVALHO: Sí, exactament.
Trobareu, crec, en la seva primera Joc de paràmetres, vostè va a haver de
utilitzar un bucle així fer per cobrar entrada de l'usuari.
>> AUDIÈNCIA: Depenent de la situació, seus cicles while tendiran a funcionar amb més
sovint que els bucles while, com per un o alguna cosa així?
>> LAUREN CARVALHO: Si és l'exacta -
>> LUCAS FREITAS: Sempre han d'executar l'import exacte de vegades que
vol que s'executi.
Com fem servir fer mentre perquè realment volia aconseguir l'entrada a mínim una vegada.
En cicles while, de vegades no vols per executar en absolut si no és
el cas d'executar.
Per tant, depèn del disseny.
Vull dir, vostè pot fer-ho ja sigui per a ús o mentre mentre que el temps que el codi fa que
se suposa que ha de fer.
>> LAUREN CARVALHO: Però jo sí pensar en la resposta a la seva
pregunta és probablement si.
Diguem que la condició és falsa.
En un cas es correria un cop, i altre cas es correria zero vegades.
Així que, si.
>> Alguna pregunta més?
Sí?
>> AUDIÈNCIA: Pot la condició de bucle és una bucle en termes d'una altra variable
que [inaudible].
>> LAUREN CARVALHO: Sí, pot ser qualsevol cosa.
Probablement per als Butlletins de problemes inicials, que no haurà de trobar aquest cas, però
Definitivament pot ser qualsevol cosa.
>> LUCAS FREITAS: Crec que que hem acabat aquí.
>> LAUREN CARVALHO: Estem?
No?
>> LUCAS FREITAS: Loops?
Sí
>> LAUREN CARVALHO: No hem de ser.
Oh, hem acabat amb bucles.
D'acord.
>> En realitat, ja hem estat parlant de manera tant, anem a navegar en realitat tot
a study.cs50.net/conditions.
I vas a navegar cap avall per el giny de problemes.
Bé, en realitat, mentre que la gent s'està aquesta configuració, l'Estudi CS50 és
serà una eina que els teus TFS utilitzar per preparar seccions i que
vostès poden utilitzar si s'oblida de seccions.
Es va a contenir un munt de diapositives, alguns consells i trucs per a cada
tema, i alguns problemes de pràctica amb solucions.
>> Per què no tothom acaba de tirar un cop d'ull en aquest problema aquí.
>> Ho sento, hauria d'haver recordat persones per portar els ordinadors portàtils d'avui.
Però si vostè no té un ordinador portàtil, que està bé.
Vostè només pot apuntar aquesta avall en una tros de paper o mirar per sobre de
l'espatlla del seu veí.
>> Anem a tractar d'escriure un programa que demanarà que prengui una conjectura, la
nombre mitjà de fills per família unitat als Estats Units.
Aquest nombre és 2, per cert, a mesura que pot veure en aquests exemples.
>> Volem imprimir el nombre mitjà de fills per família als EUA, llavors
vol què?
Volem recollir l'entrada des de l'usuari.
I a continuació, depenent del que l'usuari d'entrada és, vostè va a imprimir
bé això és correcte o això és incorrecte.
>> I la primera cosa que vostè va a veure, si fa clic a la petita fletxa en
la part inferior del giny problema és un detectar per anotar alguns pseudocodi.
Així que no estàs programant encara.
No ets més que aconseguir el seu idees en ordre.
>> Algú vol ajudar a Lucas arribar a la dreta
pseudocodi per a aquest problema?
>> LUCAS FREITAS: Què és el primer que probablement hauríem de fer aquí?
Què pensen vostès?
>> AUDIÈNCIA: [inaudible]
>> LUCAS FREITAS: Sí, està bé.
Així, imprimir.
Només vaig donar la impressió d'aquesta mitjana nombre de persones?
D'acord.
Imprimir pregunta, diguem.
Després imprimeixo aquesta pregunta, Què he de fer?
>> AUDIÈNCIA: Obtenir l'aportació.
>> LUCAS FREITAS: Obtenir entrada.
Alguna cosa més?
>> AUDIÈNCIA: Condició.
>> LUCAS FREITAS: Condició.
>> LAUREN CARVALHO: Què és això condicions serà?
>> AUDIÈNCIA: El nombre de [inaudible].
>> LAUREN CARVALHO: així.
>> LUCAS FREITAS: Llavors, què vaig per comprovar en l'estat?
>> AUDIÈNCIA: Si és igual a 2.
>> LAUREN CARVALHO: Si és igual a 2.
Exactament.
>> LUCAS FREITAS: Hi ha quelcom més que hagi de fer?
>> AUDIÈNCIA: Count.
>> LUCAS FREITAS: Així que si és igual a 2, direm -
permetin-me escriure si és igual a l'entrada a 2, llavors el que vaig
fer és impressió correcte.
I després una altra cosa, vaig imprimir correctes.
Alguna cosa més?
No?
>> LAUREN CARVALHO: Així que vostè pot fer clic al -
Per què tots tenen això sota?
>> LUCAS FREITAS: Té sentit?
Així que ara anem a tractar de codificar aquesta.
>> LAUREN CARVALHO: Si fa clic al petit fletxa, que en realitat guarda el seu
pseudocodi, que és realment emocionant.
I vostè pot fer en els comentaris si que vols és simplement per recordar
el que ha de fer.
>> LUCAS FREITAS: Així, per exemple, primer Vaig a imprimir la pregunta, així
Com vaig a fer això, en realitat?
printf.
Així printf, i la pregunta és la mitjana nombre de fills per
família als EUA.
>> Llavors em vaig a posar entrada de l'usuari.
Llavors, com puc fer això?
>> AUDIÈNCIA: Obtenir Int.
>> LAUREN CARVALHO: GetInt.
>> LUCAS FREITAS: OK.
Així que primer declarar, oi?
int, diguem n és igual GetInt.
>> I ara la condició.
Així que deixeu-me dir-los que em vaig a aquí Resposta.
Així que primer, si l'entrada, que és n, és igual a a - com vaig a escriure això?
>> AUDIÈNCIA: Igualtat iguals.
>> LUCAS FREITAS: Perfect.
Llavors n.
I noto que em faig un espai, iguals, iguals, espai, cert.
I ara què he de fer?
Una cosa molt important per l'estil.
Les claus.
>> I després vaig a imprimir.
Com s'imprimeix?
printf.
>> AUDIÈNCIA: Podria ser majúscula?
>> LUCAS FREITAS: No
Se suposa que ha d'estar en minúscules.
Així que això és correcte.
>> N'hi hauria prou això per al printf declaració, o m'estic perdent alguna cosa?
>> AUDIÈNCIA: Nova línia.
>> LUCAS FREITAS: Nova línia, si.
I ara més.
>> AUDIÈNCIA: Existeix un espai després que el printf, o no?
>> LAUREN CARVALHO: Hauríem consultar la guia d'estil.
>> AUDIÈNCIA: No hauria de ser.
>> LUCAS FREITAS: No hauria de ser, a D'acord.
Així que una altra cosa, printf, "Això no és correcte."
>> LAUREN CARVALHO: Vaja, les seves cotitzacions.
>> LUCAS FREITAS: OK.
Alguna cosa més?
Et sembla bé?
>> LAUREN CARVALHO: Ho vam intentar?
>> LUCAS FREITAS: Sí, anem a executar-lo.
Així que és la compilació, i Sembla que funciona.
Tractarem de dos fills.
Això és correcte.
I ara anem a córrer de nou, però ara en lloc de posar dos fills, anem a
dir que em vaig a posar com cinc.
Això és incorrecte.
Així que sembla que funciona.
>> LAUREN CARVALHO: Per què no els mostres què passa si poses alguna cosa
rar, com algunes lletres.
>> LUCAS FREITAS: Oh, si.
També anem a comprovar que.
Què passa si l'usuari està tractant de ficar-se amb el seu programa, i que només
escriure, no sé dues.
Dirà reintent.
>> LAUREN CARVALHO: Així GetInt els està demanant que torni a intentar-ho.
No havíem de tenir cura que nosaltres mateixos.
>> LUCAS FREITAS: Si.
Així que a menys que realment posar un nombre, que és seguirà demanant que torni a intentar-ho.
>> AUDIÈNCIA: Com s'executa?
>> LUCAS FREITAS: Només cal que feu clic aquest botó d'estrella.
>> LAUREN CARVALHO: Vostè ha de pujar.
Aquí el tens.
>> LUCAS FREITAS: L'estrella botó dret allà.
Sí?
>> AUDIÈNCIA: Es demanarà [inaudible] amb nombres decimals també?
>> LAUREN CARVALHO: Jo crec que sí.
>> LUCAS FREITAS: Si és així, què?
>> LAUREN CARVALHO: Si s'escrigui en un nombre decimal, crec
que sol · licitarà.
>> LUCAS FREITAS: Vegem.
>> LAUREN CARVALHO: Perquè no és un int.
>> LUCAS FREITAS: Si.
>> LAUREN CARVALHO: Així que no és un int, Obtingui Int li demanarà que torni a intentar-ho.
>> AUDIÈNCIA: Llavors, on en aquest codi seria el decimal que demana al
d'usuari que han d'entrar un nombre enter específicament?
>> LAUREN CARVALHO: GetInt és en realitat fer això per nosaltres.
>> AUDIÈNCIA: No, vull dir que si volíem per accedir a [inaudible]
>> LUCAS FREITAS: Pot dir com a mitjana nombre de nens als EUA.
No.
Podem dir, per exemple ", si us plau d'entrada un nombre enter ".
>> LAUREN CARVALHO: Un nombre enter igual al nombre mitjà.
Vull dir, és només la forma en el paraula, oi?
>> LUCAS FREITAS: Si.
Això no és part de la realitat de codificació.
És més aviat com el que vostè va a voler
escriure en el seu programa.
>> AUDIÈNCIA: Com ens hem executar si estava realment en gedit [inaudible].
En lloc de pressionar el joc?
>> LUCAS FREITAS: Enviarem primer compilar.
Podem fer-ho fent maquillatge i el nom del fitxer.
I després d'executar, ho farem slash dot i el nom del programa.
>> AUDIÈNCIA: Crec que el que volia dir era si volíem que el programa per respondre a
seva, entrada invàlida incorrecta, vostè no ha de posar en -
>> LUCAS FREITAS: No serem capaços de fer això perquè el codi que diu
reintentar prové de Get Int que és un la funció que ja s'implementa
per a nosaltres a través de la biblioteca CS50, i des que ja ha implementat allà,
pot no només [inaudible].
>> LAUREN CARVALHO: Si no fa servir GetInt, llavors vostè pot fer això.
>> LUCAS FREITAS: Si.
Però si vostè està utilitzant GetInt, no es pot.
Alguna altra pregunta?
>> AUDIÈNCIA: Podries haver anat amb la mateixa GetFloat i després ser capaç de posar
en un decimal?
>> LUCAS FREITAS: Si.
>> AUDIÈNCIA: OK.
A continuació, només pot ingressar surar A és igual a -
>> LAUREN CARVALHO: Si.
Exactament el mateix, excepte una surar en lloc d'un int.
>> LUCAS FREITAS: Només cal posar aquí i després GetFloat allà.
>> AUDIÈNCIA: Com vulguis veure o han vist -
>> LAUREN CARVALHO: tenim no arribat allà encara.
>> AUDIÈNCIA: - fent la desigualtat amb flotadors no no [inaudible]
>> AUDIÈNCIA: Què signifiquen els punts i comes?
>> LAUREN CARVALHO: El punt i coma només vol dir que aquesta afirmació és completa,
i anirem a la següent diapositiva.
>> AUDIÈNCIA: Pel que és necessari cada vegada?
>> LAUREN CARVALHO: Si.
Bé, està bé, pel que no fos per aquestes condicions, perquè són
encapsulant alguna cosa.
Així que, bàsicament, si alguna cosa està causant a continuació, crear una clau
bloc, no posi un punt i coma al final.
>> LUCAS FREITAS: Però tot altres, sí.
Quan acabi d'un comunicat, posar el punt i coma.
I si se li oblida un punt i coma, la compilador va a enutjar amb vostè,
i vostè va a tenir per intentar arreglar-ho.
>> LAUREN CARVALHO: Si poso un punt i coma aquí, això seria aturar això, i jo
mai arribar a executar el que és a l'interior, per cert.
Així que és un d'aquests errors comuns.
>> AUDIÈNCIA: Sempre execució.
>> LAUREN CARVALHO: Si.
En aquest cas, sempre ho faria executar el que hi ha dins.
>> AUDIÈNCIA: El seu estil de [inaudible] fixar això per a vostè, el pensament.
>> LAUREN CARVALHO: Oh, això és cert.
>> AUDIÈNCIA: [inaudible] sola El line [inaudible]
>> AUDIÈNCIA: Sí?
>> AUDIÈNCIA: Es pot tenir múltiples entrades en una línia?
Així com es pot demanar als usuaris imprimir dues coses?
>> LAUREN CARVALHO: no s'utilitza -
>> LUCAS FREITAS: No
Diguem que també vull per obtenir aquest nombre enter m.
He de fer-ho en una línia diferent.
>> AUDIÈNCIA: Si es va a executar això, com [inaudible]?
S'imprimirà el símbol hi ha [inaudible]
i llavors el que entra en un i -
>> LAUREN CARVALHO: Bé, el dirigeix.
Vull dir, no hi ha res que ens impedeixi simplement executar-lo i veure el
que passaria.
>> LUCAS FREITAS: Crec que és va a es queixa de nosaltres
perquè no estem usant -
>> LAUREN CARVALHO: Vaya.
>> LUCAS FREITAS: Es va queixar a nosaltres en aquest ara perquè no estem fent servir aquest
variable, però si ho fes, per exemple, n és igual a és igual a i m és igual a
és igual a, llavors, què passar en aquest cas?
Què havia de fer aquest programa?
>> AUDIÈNCIA: Em pregunto la forma en què ho faria -
>> LAUREN CARVALHO: Ella només vol saber com es veu
com, crec, no?
Així que va prendre un d'ells, i després es va prendre la segona.
>> Crec que hauríem de seguir endavant, perquè tenim una més
presentació de diapositives que recórrer abans -
Què vols llençar de les matemàtiques?
>> LUCAS FREITAS: Sí, les matemàtiques.
>> LAUREN CARVALHO: Donar jo tan sols un segon.
>> Hi ha una numèrica pocs diferents variables en C. Dades Numèrics en C
es poden classificar en diferents tipus, i aquests són els que estarà
veure la majoria de les vegades.
>> I int és un nombre enter.
No pot tenir cap decimals.
En l'aparell, que es necessita 32 bits per emmagatzemar un int.
>> Un flotador pot tenir decimals.
També té 32 bits per emmagatzemar un flotador al Appliance.
>> Un doble és un número amb un decimal punt que es porta a 64 bits per emmagatzemar-lo,
el que significa que vostè pot tenir major precisió perquè
vostè pot tenir més -
Com es diu això?
>> LUCAS FREITAS: Sí, això és més.
>> LAUREN CARVALHO: més llocs després del punt decimal.
I molt, molt és un nombre enter que té 64 bits a
que dolor en l'aparell.
>> LUCAS FREITAS: Així que pot ser més gran que pot ser sencers.
>> LAUREN CARVALHO: El que passa amb les dades tipus en C és que et diuen el que
tipus de dades que pot emmagatzemar en la variable.
Ells et diuen com es pot utilitzar aquesta variable en el seu programa.
És molt important que acaba de realitzar un seguiment de quin tipus de dades que està utilitzant, i si
vostè ha de llançar des d'un tipus de dades a un altre, assegureu-vos que vostè sap
exactament el que passa quan aquesta fosa té lloc.
I veuràs un exemple més endavant en aquestes diapositives d'un
error que pot passar.
>> Fem una ullada a alguns matemàtiques en C i pensar amb molta cura, suposo,
sobre el que està passant quan aquest matemàtiques està tenint lloc.
A la primera línia, el que és succeint quan jo declaro x?
>> AUDIÈNCIA: Vostè està permetent x ser alguna cosa?
>> LAUREN CARVALHO: Si.
Bé, realment estic demanant a l'operació sistema de 32 bits de memòria, oi?
En què puc emmagatzemar un int, i Vaig a trucar a aquest int x.
>> LUCAS FREITAS: anar Bàsicament en la memòria i la recerca d'un lloc que té 32
bits i dit, escolta, vull aquest espai, i que serà anomenat x.
Així que no ets més que prou troballa una caixa en la seva memòria per
emmagatzemar valors per x.
>> LAUREN CARVALHO: I llavors puc inicialitzar x, el que significa que simplement emmagatzemar el
valor de 2 en aquest lloc, aquest tros de la memòria, que demanem operatiu
sistema per.
I fins aquí el que estem fent és en realitat estem declarant i
inicialitzar i en una línia en lloc de en dues línies com ho vam fer aquí,
que també és un perfectament bé, estem l'addició d'1 a x, i estem emmagatzemant que
valor en i.
>> LUCAS FREITAS: Així que bàsicament el que això línia fa, troba ara un quadre per i,
i llavors el seu valor, el que vostè va a posar dins de la caixa, és
serà el valor de x més 1.
Pel que té aquesta caixa per i.
S'obté el valor de x, es veu aquí, i veure que és 2.
Posa-ho aquí, més 1, per la qual cosa posa març 1 allà.
Això té sentit?
Per tant i seria 2 en aquest cas.
>> LAUREN CARVALHO: Molt bé, fresc.
Vam veure alguna addició, així que anem a pensar ara sobre la divisió en C. Aquí estic
declaració i iniciació d'un flotador anomenada resposta i dividint 1 per 10,
i llavors jo estic imprimint la resposta amb dos decimals.
I tingui en compte que aquí, en la meva declaració printf, quan vull imprimir alguna cosa a dos
decimals,% .2 f és el que jo vull utilitzar.
Així que el punt 2 és només dir Necessito dos llocs després de la
decimal imprimeix.
>> Ara, què passarà si executo aquest codi?
Algú té una idea?
Què faria imprimir?
>> LUCAS FREITAS: Quins són que esperava aconseguir.
>> LAUREN CARVALHO: Què fer volem, en primer lloc?
>> LUCAS FREITAS: [inaudible]
>> LAUREN CARVALHO: 0.1, si.
Però, què voleu imprimir?
>> AUDIÈNCIA: [inaudible]
>> LAUREN CARVALHO: Bé, no, en realitat.
Això és el que jo estava parlant sobre per què de fer un seguiment molt acurat de
els seus tipus de dades.
Llavors, quin tipus de dades és això?
És un int, oi?
No hi ha lloc decimal.
10 és també un int.
No hi ha lloc decimal.
>> Si dividit 01:00 int per un int, em surt un int que no és 0.1, perquè sencers
no pot tenir decimals, però només 0.
A causa d'un int simplement trunca dels decimals.
>> LUCAS FREITAS: Així que cada vegada que fas operacions amb enters, es van a
aconseguir un int com la resposta.
Així que, bàsicament, el que l'ordinador està fent, és divideix 1 per
10, i que arriba a 0,1.
Però llavors és com, espera, això és se suposa que és un nombre enter, de manera que només
ignorar el 0,1, de manera que és ara només 0.
>> LAUREN CARVALHO: Així que quan imprimeixo aquesta fora, em surt 0,00 en lloc de 0,10.
>> LUCAS FREITAS: Això té sentit?
>> LAUREN CARVALHO: Això és una cosa de lamentable, no?
>> LUCAS FREITAS: Com podem solucionar aquest problema?
>> LAUREN CARVALHO: Anem a tractar d'arreglar això.
Heus aquí un exemple d'on sóc realment llançar l'1
i el 10 per als flotadors.
Així que ara, 1 ja no és un int.
1 és un flotador.
Per cert, això és només la sintaxi per quan es desitja llançar des d'un
tipus de dades a un altre.
Vostè només pot posar el tipus de dades en parèntesi i tenir que acaba de precedir
el valor que s'està fent.
>> Així que aquí, estic dividint un flotador per un flotador per obtenir una resposta de flotació.
I sí, això seria en fet d'imprimir 0.10.
Això té sentit?
>> LUCAS FREITAS: Així que la conversió de tipus és només la conversió d'un tipus a un altre.
Així que suren 1 és en realitat 1.000.
No és exactament això, però és una cosa amb decimals
que en realitat és 1.
Això té sentit?
Sí?
>> AUDIÈNCIA: Què passa si vostè va fer resposta flotador és igual a 1,0 dividit per 10?
>> LAUREN CARVALHO: En realitat estàs passant veure que en la següent diapositiva.
Això és en realitat la nostra següent diapositiva.
Això és realment un millor que la conversió de tipus, crec.
Així que aquests dos són els flotadors amb només naturalesa del fet que es
tenir xifres decimals.
Sí?
>> AUDIÈNCIA: Què passa si vostè tenia [inaudible]
dividit per 10?
>> LAUREN CARVALHO: En realitat un flotador dividit per un enter en realitat li dóna un
surar, pel que anava a funcionar bé.
>> Espera, tothom entén això?
Com que aquesta serà una realitat gran cosa en Pset1, en realitat.
Sí?
>> AUDIÈNCIA: Podria vostè acaba ràpidament repassar la part vermella?
>> LAUREN CARVALHO: La part vermella, si.
Lucas, vols?
>> LUCAS FREITAS: OK.
Així que recordi que el percentatge és un marcador de posició.
És com un espai en blanc.
Així que anem a tractar d'entendre tot el que que està passant aquí.
Per cent vol dir que és un marcador de posició.
Llavors vostè té la f, el que significa que Aquest marcador de posició és per a un flotador.
L'última cosa que tenim aquí és una 0.2, el que significa que vull tenir dos
decimals per al flotador.
>> Si només tingués% f, que es posaran un munt de llocs decimals.
Així que només puc posar 0,2 o 0,1 o 0,5 o el que sigui, i que posarà això
nombre de decimals.
L'única cosa és que si es posa com 0.100 o 1,000, no és en realitat
posarà totes aquestes xifres decimals pel fet que no té prou memòria
tenir aquesta precisió.
>> Alguna altra pregunta?
Sí?
>> AUDIÈNCIA: Així surar tot just permet que vagi més enllà dels nombres enters?
>> LUCAS FREITAS: Si.
>> LAUREN CARVALHO: Bé, un flotador just li permet tenir xifres decimals.
>> LUCAS FREITAS: Només vol dir que vostè ara pot tenir nombres decimals.
>> AUDIÈNCIA: Per què ens Utilitzi nombres enters?
>> LUCAS FREITAS: Per què utilitza nombres enters?
Potser si vostè està comptant de 0 a 10, que voleu utilitzar en realitat un sencer.
No cal utilitzar un flotador.
En algunes situacions, no ho fa que en realitat -
>> LAUREN CARVALHO: Potser vostè no volen decimals.
>> LUCAS FREITAS: Potser vostè no ho fa que voleu utilitzar un flotador.
>> LAUREN CARVALHO: L'altra cosa és, recordi, tant posar un flotador i un int
tenir 32 bits per emmagatzemar-los, i potser no vol perdre els bits al
decimals.
>> LUCAS FREITAS: Si.
Així com, només pensar en això.
Vostè té 32 bits per a tots dos 01:00 int i un float.
Per a un int, totes aquestes 32 bits anar a la part sencera.
Si un flotador amb 32 bits, que tenen part d'aquesta memòria utilitzada
per al número, per al número sencer, i l'altra part s'utilitza per al
decimals.
Així que això significa que no es pot arribar a un gran nombre de carrosses, ja
el flotador ja està utilitzant una gran quantitat de memòria per als decimals.
Sí?
>> AUDIÈNCIA: Aquesta primera resposta, què és exactament ho està fent?
Està preparant el valor de float igual a aquest marcador de posició perquè pugui
recordar que en la següent línia?
Diu surar resposta.
>> LUCAS FREITAS: Si.
Per tant, la resposta de flotació significa que està rebent ara un petit cub en la memòria que
posseeix un flotador, i això va que es dirà resposta.
Així que això és el que fa la resposta flotador.
>> I llavors vostè diu que a l'interior de això, vostè va a posar
el resultat d'això.
Així que faràs 1,0 dividit per 10.0, s'obté un 0,1, i després es va posar
que dins de la resposta.
>> LAUREN CARVALHO: Així que en una sola línia, estem declaració i iniciació d'aquest flotador
anomenada resposta.
>> LUCAS FREITAS: Curiosament, tot i que això és només una línia, està fent
múltiples operacions.
És només una forma de C d'arrendament utilitza menys codi.
És la mateixa cosa que el ternari operador, com vostè pot fer un
[Inaudible] en una sola línia.
En realitat està fent el mateix que fent float resposta, punt i coma, i
llavors la resposta és igual a aquesta, però en lloc d' obligant-te a fer dues línies perquè,
és com una drecera.
Sí?
>> AUDIÈNCIA: Així que si va executar això, seria 0.10?
>> LUCAS FREITAS: Si.
Sí?
>> AUDIÈNCIA: és la resposta en realitat codi, o és només el nom?
>> LAUREN CARVALHO: Aquest és en realitat codi.
Això és el que anem per nomenar la nostra variable.
>> AUDIÈNCIA: Així que és només un nom de [inaudible].
>> LAUREN CARVALHO: Si.
Jo podria haver dit flotador x és igual a 1,0.
>> LUCAS FREITAS: La cosa és que el nom de la variable és
cosa que vostè utilitza.
És important per a vostè.
Per al programa en si, l'únic que el que importa és el valor que
tenir a l'interior de la cubeta.
La raó per la qual té les variables i noms de les variables és perquè sabessis
el que vostè està tractant, com quin tipus de dades que està
accedir alhora.
Però per al propi codi, si diu com contesta o pregunta o qualsevol cosa,
més o menys, no importa.
No importa.
Mentre ets consistent en tots els ocurrència i així es digui
alguna cosa més.
Sí?
>> AUDIÈNCIA: Les variables de anar més enllà de la funció?
Igual que si anés a crear un suport [Inaudible], podria vostè acaba de
[Inaudible] contestar de nou?
>> LAUREN CARVALHO: No
>> AUDIÈNCIA: [inaudible]
>> LAUREN CARVALHO: No
Això seria fora de l'àmbit d'aquesta variable en particular.
I en realitat, això és una cosa de interessant, perquè quan tenim
coses com bucles o aquests si condicions, si es declara una variable
dins d'un altre joc de claus, en realitat, només existeix
dins d'aquestes claus.
>> AUDIÈNCIA: Com apunt final sobre els [inaudible] carrosses.
Per què voldries fer servir sencers?
Això és més d'una nota al marge de qualsevol cosa, però l'equip està
significativament millor en el maneig ints del que és en flotadors de manipulació.
És com un ordre de magnitud més ràpid.
Així que si ens manegem només flota, les coses serien molt més lent.
>> LAUREN CARVALHO: En realitat, no sembla ser un problema amb els flotadors.
>> LUCAS FREITAS: Tipus de la raó de això, vostè pot pensar, és com en binari
pot representar sencers posant de 0 i 1.
>> LAUREN CARVALHO: Això és la següent cosa.
>> LUCAS FREITAS: OK.
Impressionant.
>> LAUREN CARVALHO: Just mantenir aquest pensament.
>> LUCAS FREITAS: OK, vaig a tell you later.
>> LAUREN CARVALHO: Abans d'arribar al que Lucas estava dient, l'operador
precedència.
Aquest és el sentit comú.
Vostès han fet prou.
Així que, si alguna cosa està en parèntesi, que passarà en primer lloc.
És la multiplicació té prioritat sobre la suma,
resta, coses així.
Així que en realitat, només que ningú vol digues-me el número u en realitat
avalua com?
>> AUDIÈNCIA: 27.
>> LAUREN CARVALHO: 27?
Sí
>> LUCAS FREITAS: Permetin-me donar caramels a la gent.
>> LAUREN CARVALHO: Molt bé.
Què passa amb el número dos?
>> AUDIÈNCIA: 22.
>> LAUREN CARVALHO: 22, si.
Jo no sé qui va posar això.
El número tres?
>> AUDIÈNCIA: 10.
>> LAUREN CARVALHO: 10, si.
Genial.
Així mòdul.
Lucas, ¿vols explicar mòdul?
>> LUCAS FREITAS: Mòdul és aquest operador que en realitat és molt útil per a una
munt de problemes.
Si faig 55 mòdul 10, el que fa això diguem que vull
dividir 55 per 10.
Què obtinc?
Se sent com si estic en realitat només fent la divisió, el que és el
primera vegada que em van donar el nombre sencer?
>> AUDIÈNCIA: 5.
>> LUCAS FREITAS: 5.
I després la resta és 5, no?
Així que és com 5 vegades 10 més 5.
Bàsicament, el mòdul fa, es tracta de dividir aquest nombre per aquest, i
es veu el que és la resta de la divisió.
>> LAUREN CARVALHO: Pel que només retorna la resta.
Així que el número u és el que?
5.
El número dos?
>> AUDIÈNCIA: 3.
>> LAUREN CARVALHO: 3.
El número tres?
0.
I quatre és 1.
Exactament.
>> LUCAS FREITAS: simple, no?
>> LAUREN CARVALHO: Per què no ens saltem aquesta només perquè realment no tenim
temps, i la gent sembla entendre.
Així que aquí està el que va ser Lluc simplement parlant.
>> LUCAS FREITAS: Una altra raó per la qual faria servir sencers en lloc de carrosses és
que els flotadors són molt imprecises.
I per què són imprecises?
David va dir que per representar un nombre enter, per exemple, s'utilitza 0 i de
1 de, oi?
I llavors vostè ho fa bàsicament el multiplicació, fer tots els
operacions per saber quin número decimal que té lloc del binari.
>> El que passa ara si intent posar decimals?
En realitat, per exemple, si tinc el nombre com 3.33333?
Se sent com 10 més de 3.
Com vaig a emmagatzemar tota la 3 és que tingui després d'això?
És molt difícil, oi?
No pot dir-li a l'ordinador, hey, tinc un 3, i
llavors ho fas sempre.
En realitat, l'equip no és prou intel ligent com per això.
>> Així que, bàsicament, tot l'equip que fa és que tracta de posar tants dígits com
es pot fins a la memòria que té.
Així que diguem que va a dir 3.3333, i això és tot.
Així que no és capaç d'expressar realment precisament el que és float.
>> LAUREN CARVALHO: Tenim un nombre finit de bits, el que significa que no
cada nombre decimal serà capaç de ser representat amb precisió.
I així, en aquest exemple, si estem imprimir 0.1, ara estem d'impressió
fora 20 llocs.
>> LUCAS FREITAS: Igual que jo estava dient vostès, vostè podria posar qualsevol nombre.
Però si vostè acaba de fer els dos llocs, s'obtindria 0.10, però si poses 20
llocs, va mostrar un munt de 's perquè això és el que pot posar
en la memòria, no?
>> Però aquí, fins al 0, i després s'acaba de posar un
munt de nombres aleatoris.
Això és una cosa així com una mica de -
>> LAUREN CARVALHO: Això és perquè estem no és capaç de representar aquesta decimal
precisament amb el número de bits que tenim.
>> LUCAS FREITAS: I llavors el equip és bàsicament
que li dóna un nombre d'escombraries.
Això no és en realitat la valor del nombre.
>> AUDIÈNCIA: És el més a prop que pot aconseguir [inaudible]
utilitzant el [inaudible].
>> LAUREN CARVALHO: Així que la implicació de això és que direm que en comptes de
sent 0.100014, el que sigui, ¿I si era 0,0999 -
bé, està bé.
Anem a suposar que la resposta real A això se a 0,9999999.
Això és molt proper a 1, però no és exactament 1.
És 0,99999.
>> Això vol dir que si prenc que 0.999, i el vaig a un int, si 0.
No ho entenc gener.
>> LUCAS FREITAS: Perquè recorda, fosa des d'un flotant a int, que acaba de
ignorar tots els decimals.
Vostè simplement ignorar-los.
No hi ha tal cosa com l'arrodoniment a l'alça o córrer cap avall quan encasellat.
En realitat, no és aquesta la funció que fa arrodoniment, que és molt
important, però que acaba de pensar que quan fas encasellament, és només
va a esborrar tot.
Així que fins i tot si vostè té 0,99999, que va tot just donar 0 si encasellat
[Inaudible] un enter.
>> LAUREN CARVALHO: Així de ser molt conscients punt de flotant en precisió,
especialment quan s'inicia utilitzar flotadors en Pset1.
Però el passeig a través haurien advertir-lo que també.
>> LUCAS FREITAS: I en realitat és molt dur, per exemple, si ho fes
float resposta 1 és igual a 1.0 sobre 10 i, a continuació, surar resposta febrer
és igual a 10,0 superior a 100.0.
Ells són el mateix nombre, no?
0.1, no?
1 més de 10 o 10 sobre 100.
Però ara si tracte de veure la igualtat, com si la resposta 1 és igual a contestar 2,
Potser no és en realitat va a ser la mateixa cosa.
Així carrosses són una mica com això.
Són com fent la igualtat.