[Powered by Google Translate] [SONS ELECTRÒNICS STATIC]
ROB: Bé, i què ens vas portar a CS50 és Spaces.
ALI: Espera, espera de nou.
Benvinguts a la secció!
ROB: Benvinguts a la secció!
ALI: Yay!
ROB: supersección!
ALI: Sóc Ali i això és Rob.
Bé, ara explicarem Spaces.
ROB: I què ens vas portar a CS50 és Spaces.
Vostè va a utilitzar molt això en les seccions d'aquest semestre.
Bàsicament, ja hem hagut de baixar l'aparell.
I vostè pot pensar CS50 Espais com una interfície web que parla d'un aparell
que tenim en algun servidor en algun lloc.
Així que vostè pot executar el seu codi en aquest interfície, i farem
veure la manera de fer les coses.
També pot buscar en el codi d'altres persones en la secció, i -
ALI: I com algunes persones han descobert, pots xatejar gent al lateral.
I tots ho veuran, també, així que és emocionant.
Entra, veuen i seu.
Presa seient.
>> ROB: Així, les seccions són -
ALI: No, no, vostès poden venir.
ROB: Les seccions seran molt més interactiu aquest semestre.
ALI: Oh, ell és com -
Oh.
D'acord, genial.
Així que si vostès tot just estan entrant, vostè pot anar a aquest enllaç, si puc aconseguir
aquí, just aquí.
En realitat, no puc escriure, perquè no hi ha espai a la placa, però en aquest enllaç
aquí mateix, aneu a la dels equips, i entraràs CS50
Espais, la qual cosa és una cosa molt bona.
Bé.
Té un problema?
ROB: Així que vostè pot trobar els problemes -
hem de ser capaços d'escriure això en algun lloc.
Així que si vas a cs50.net/psets i aquest és el supersección hacker -
i entres en l'edició pirata d'un conjunt de processadors, vegeu l'especificació
en algun lloc de la pàgina -
>> ALI: Així que, bàsicament, mentre que Rob està mirant, el que farem en
Avui secció és hi ha una secció de problemes -
ROB: - a la pàgina vuit.
ALI: - anomenada secció de problemes -
ROB: Secció de preguntes.
ALI: Em sap greu, una secció de preguntes.
I aquests són els que passarem -
aquests són els que passarem avui a la secció.
I nosaltres anem a codificar en CS50 Espais, i és d'esperar que funcionarà.
I només podem parlar a través d'ells.
I vostès poden fer preguntes cada vegada que se sent -
>> ROB: Així que això s'està convertint en alguna cosa comú amb la majoria de conjunts de processadors.
Crec que amb això, es diu que vostè no ha de lliurar aquestes preguntes polz
Però la idea és que aquestes qüestions es posen en el conjunt de processadors, i vostè pot venir
a la secció de tenir aquestes preguntes.
O si vostè no ve a la secció, vostè pot respondre pel seu compte o aconseguir
ajudar a les hores d'oficina o alguna cosa així.
Però aquestes són qüestions que se suposa de preparar per al conjunt de problemes.
I en l'edició pirata, moltes de les preguntes podria ser de
l'ampliació del seu actual coneixement CS.
ALI: Sí, bastant.
>> Bé, llavors, és que tots els espais en CS50?
Hola, endavant
Ponència 1: Podem veure la direcció un cop més?
Rob: Sí, això serà més fàcil una vegada que estigui en les seves seccions, i
la TF només pot enviar per correu electrònic la URL per endavant.
ALI: Yay, prengui seient.
Hi ha seients aquí.
El front no és tan dolent.
Què?
Per tant, CS50 Spaces, ens anem acostant.
Algú té alguna pregunta abans d'entrar a - què?
ROB: No hi ha tan sols un guix.
[Inaudible]
ALI: Em sap greu.
Podries utilitzar les ungles?
Estem en una habitació molt baixa tecnologia per a una classe molt alta tecnologia.
Bé, tot el món és una espècie de bé?
Algú té encara dubtes sobre això?
Com he dit abans, anirem a través de la secció de preguntes
les especificacions PSET.
Així que només hi ha un parell de problemes que anem a
codificar en CS50 Spaces.
Estan tots bé?
Bé.
¿Bé?
ROB: Tens un ordinador portàtil?
ALI: Pot passar l'estona amb Lucas.
Està assegut al teu costat.
Vinculació temps.
>> ROB: Llavors, comenci amb el primer problema?
ALI: Si.
Podem començar.
Vostè em vol -
Puc anar.
Per tant, anirem a les especificacions PSET.
Oh, per què ho és -
ROB: Control.
ALI: Bé, anem a respondre a aquestes coses també?
ROB: Oh, sí.
Per tant -
ALI: Oh, sí pantalons curts protagonitzada per tot el món rellotge de Rob?
D'acord, genial.
Rob: Sí, no crec que ens espera necessàriament que vostè tingui
el vaig veure abans de venir a aquesta secció, però podem discutir els
problemes per endavant, ja que estan en la secció de preguntes coses.
Així que si no l'han vist, no es preocupi.
Els que tenen poden tractar de respondre.
>> Per tant, la primera pregunta, què és un pre-processador, com # include
relacionar?
Així que algú té resposta per això?
ALI: Vostès poden parlar.
És clar, endavant.
Ponència 2: # include és un codi pre-escrit, i en lloc de
copiar i enganxar-lo en el seu programa, simplement dient que inclouen,
el pre-processador sap que hi és i que hauria d'afegir a
més tard o abans que passi res més.
ALI: Sí, impressionant.
Cool.
ROB: Llavors, quan en realitat estàs compilant un programa el pre-processador és aquest
primer pas.
Compilació passa en quatre grans passos.
Així que el pre-processador és el gran primer, i és aquest tipus que va
i busca a través de tots aquests símbols hash.
I qualsevol línia que comenci amb un coixinet, el processador pre-mira i veu
si es pot processar.
Així que # include li diu al preprocessador per buscar alguna cs50.h
presentar i només has de copiar i enganxar el contingut en aquest arxiu.
Així que vostè pot realment # include el que vulguis, però és en la seva majoria serà
H. Arxius.
No hem arribat a # defineix encara, així que no importa.
ALI: Sí, som bons en això.
Algú té alguna pregunta sobre això?
Estem bé?
Següent pregunta.
>> ALTAVEU 3: En la fi, hi havia alguna cosa al carrer també.?
¿Això és rellevant o és irrellevant?
ROB: Sobre c amb el pre-processador.?
Ponent 3: Sí, o ho puc fer alguna cosa?
ROB: Així que el petit podria haver estat mostrant el preprocessat d'aquest arxiu i
. Donar sortida a un altre arxiu c, de manera que pot pre-processar aquest arxiu -
quan vostè acaba de funcionar com, hola o fer hello.c so metàl · lic, que està fent tot
la compilació en un gran pas.
Però vostè pot fer-ho de forma explícita en les seves etapes separades.
Així que primer es pot pre-processar.
A continuació, pot compilar, llavors es pot muntar, i llavors vostè pot vincular.
Anem a arribar als altres.
No obstant això, pre-processament, quin tipus del que preveu procés, i després que entri en
altre. c arxiu.
Com que pre-processament en realitat no canvia res.
És només un munt de copiar i enganxar.
Manualment, pot copiar i enganxar vostè mateix.
ALI:. I per ser clar, l'arxiu és un arxiu c C, pel que és
escrit en codi C.
Així que va des del codi C a codi C.
No ets més que afegir més codi amb la lliura.
ROB: Quan es pre-processats, encara és un arxiu vàlid de C.
ALTAVEU 3: D'acord.
ALI: Bona pregunta.
Això m'agrada.
Val, següent pregunta.
>> Quin és el compilador?
Algú?
Sí
ALTAVEU 4: Canvia el codi de pre-processat en el muntatge.
ALI: Perfect.
ROB: Si.
ALI: Cool.
ROB: Així que això és el que el compilador està fent específicament
quan estem usant Clang.
En un sentit molt general, un compilador és com si estigués prenent el codi en un llenguatge
i convertir-lo en un altre idioma.
Així que en C -
o, bé, Clang està prenent el codi que està en C i transformar per al muntatge.
I que no ha de ser capaç d'entendre el conjunt en absolut.
Però aquest és l'idioma que s'està convertint en el.
>> ALI: Bé.
I llavors, què és un assemblador?
Algú?
ALTAVEU 5: [inaudible] en binari?
ALI: Em sap greu, què?
ALTAVEU 5: [inaudible] en binari?
ROB: Yep.
ALI: Sí
ROB: Així que l'assemblador -
codi assemblador és molt, molt a prop del que el seu ordinador pot entendre,
però recorda que no acaba d'entendre el text
que és codi assemblador.
Cal que el converteixen en 1s i 0s recta.
És com un procés de traducció directa.
Podríem donar-li una taula que assigna el que cada
instruccions de muntatge significa.
No obstant això, l'assemblador està fent això traducció per a vostè.
S'està transformant el codi assemblador en 1s i 0s.
>> ALI: I llavors, finalment, què és un connector?
I com-lcs50 relacionar?
Algú?
ROB: Aquest és el més difícil i per explicat al vídeo un compilador.
ALI: Algú recorda haver vist-lcs50 en una ordre?
ALTAVEU 6: Quan vostè va anar a la marca.
ALI: És en el fer.
Sí, fresc i bé.
Hi ha alguna idea o vagues - Sí, vaja.
ALTAVEU 7: No estic segur, perquè el seu curt era realment [inaudible], però va ser
alguna cosa sobre fer arxius separats amb cada biblioteca i després posar
tots junts en una biblioteca?
ROB: Si.
Així que quan vostè té hello.c, és un programa molt simple.
Realment estàs fent només una cosa en ell.
Però quan et fiques en altres programes -
i crec que fins i tot quan GetString en els seus programes, que necessita per començar
incloent altres arxius.
Així que la biblioteca CS50 és un fitxer on tenim les implementacions
de GetString i getInt i totes aquestes coses.
Així que el que l'enllaçador que fa és que va per aquí buscant a través de tots aquests
arxius, veient on es defineixen les funcions, assegurant-se que quan dic
GetString en algun lloc, sap que GetString significa que és el
GetString més a la biblioteca CS50.
Així que el vinculador només pren tots aquests arxius, trenca juntes, i ara
Té un executable.
Així que tingui en compte, si vostè està utilitzant la biblioteca CS50, cal tenir les
# Include a la part superior, i després també en la comanda make, com
Dit això, vostè ha de tenir la lcs50-.
Així que no només pot tenir un.
Així que això és una cosa a tenir en compte per a futures consultes.
>> ALTAVEU 8: Per tant, direm que no hi havia una altra llibreria, com cs51.h, ens
També cal afegir-lcs51?
ROB: L'única raó-lcs50 funciona perfectament és perquè no tenim aquest conjunt
en un lloc específic en els seus aparells perquè sàpiga què
-Lcs50 mitjans.
Podríem donar-li un arxiu cs50.c, i llavors vostè pot compilar, dient:
Clang hello.c cs50.c, i llavors tindria el seu executable posant
aquests dos arxius junts.
Sap que-lcs50 significa cs50.c nou en algun directori que s'especifica al
seus aparells.
Així que si volia una cs51.c ser determinable per només dir-lcs51,
llavors també hauria de posar-ho en aquest directori perquè sàpiga on
buscar-la.
ALI: Quina és la teva pregunta?
>> ALTAVEU 7: Per què has de connectar el CS50
si - no era de copiar / enganxar al primer pas quan es pre-processat?
ALI: Vols prendre'l?
ROB: Per descomptat.
Així l'arxiu cs50.h està separat de la cs50.c arxiu C.
Has arribat a funcionar prototips a classe?
Bé.
Així que, bàsicament, l'arxiu cs50.h és només va a copiar i enganxar -
ALI: Vostès saben el que són les signatures?
Bé, així que més o menys, si ens fixem en -
ROB: Anem a fingir cs50.h no hi és.
Ara aquest arxiu -
que està fent GetString string s =.
Però quan hem arribat a aquest punt en el codi, no té idea del que
GetString és.
Se sap que és una funció, ja que ho està trucant.
Però no saben que en realitat ha de retornar una cadena.
Així que, com he dit, string s = getInt, això no té cap sentit, ja que
que està signant un sencer a una cadena.
Però no sap que GetString té sentit, ja que no
Sabem que GetString retorna una cadena.
Així que el que diu és cs50.h alguna cosa com això.
ALI: Així que el que Rob està escrivint és que és una promesa en la forma que es
tenen aquesta funció anomenada GetString.
ROB: Això és tot el que cs50.h és copiar i enganxar aquí, així
com getInt i totes aquestes coses.
I això només diu que GetString torna una cadena.
No saps com està implementat encara, però quan vam arribar a aquesta línia, ara
se sap que retorna correctament una cadena.
>> ALTAVEU 9: Així que si no ens molestem amb la cosa # include i en el seu lloc
acabo d'escriure el prototip dels que estem en realitat va a utilitzar?
ROB: Si.
Així que anem a executar aquest.
ALTAVEU 9: Ho és?
Així que, per defecte, ho faria el l-CS50 a només perquè -.
ROB: - expressió.
ALI: Sí, perquè com vostè ha dit, està a l'arxiu make.
ROB: cs50.h també passa a ser * typedef char a string.
Vostè pot ignorar el que això significa, per ara.
Però això també és una cosa inclòs en cs50.h.
Així que ara tot funcionava perfectament bé.
Funciona exactament igual que ho va ser quan ens vam
el # include.
I així com cs50.h succeeix a un excés d'incloure coses que vostè necessita -
com, ja no fa servir el getInt en aquest programa, però això no importa.
És simplement l'ignoren.
ALI: I després, quan fas el-lcs50 aquí i aquí, què està passant
és que es tracta de tenir el codi implementable real.
Així que aquí és on està realment, fent -
escriure el codi per GetString.
Així que no és només una promesa més.
En realitat, és passant i prendre la corda i tot això.
Té sentit?
Preguntes? Està bé.
Cool Beans.
>> ROB: Ara podem passar a codi real.
ALI: Bé.
Així que aquí està el primer problema.
Pel que diu escriure un programa que demana a l'usuari una minúscula
lletra i després la converteix a majúscules sense utilitzar bitwise
operacions, d'acord amb el resultat d'exemple a continuació.
Així que vostè pot veure, s'executa el programa amb el. / A.out, i llavors estàs
posarà en minúscula, a continuació, el programa ha de donar a conèixer el capital
A. Per què no es van tots a donar-li un tret al CS50 Spaces?
Així que vostès poden anar tots aquí.
I vostè pot eliminar tot el codi aquí.
I llavors vostè pot seguir endavant i començar a programar la cosa.
ROB: Vostè probablement voldrà utilitzar GetChar, això és
inclòs a la biblioteca CS50.
ALI: Suposo que podria ser millor si es guarda la part superior.
Així que potser voldreu canviar només les coses en el medi.
Seguir endavant i treballar.
Siéntase lliure per treballar amb altres.
Rob: I vostè pot fer preguntes si vostè té -
>> ALTAVEU 10: Què és una operació bit a bit?
ROB: Llavors, passar per alt que per aquest problema.
ALI: Si no ho sap, això és bo.
ROB: Nosaltres el farem servir en el següent problema.
Però si vostè no sap el que és un operador de bits és, això està bé.
ALTAVEU 10: És com convertir a codi ASCII?
ALI: No
ROB: No
Vostè pot fer això per aquest problema.
ALTAVEU 10: Com es fa això?
Així que si jo tingués un lloc per escriure -
ALI: O alguna cosa amb què escriure.
ROB: Podria només una mica en aquest tipus.
ALI: Escriviu a la part superior.
ROB: Oh, estic assegut en un micròfon.
>> Així, hem vist en la conferència que el valor ASCII d'A majúscula és 65.
I el capital B serà 66, i així successivament.
Així que, literalment, pot fer servir 'A' en el sentit del número 65.
Igual, aquest és el valor 65.
Puc fer alguna cosa com int x = 100 - 'A'. I ara, x té el valor
100-65.
ALI: Pot executar i mostrar que això.
Oh, potser no.
No importa.
ROB: vaig haver imprimir.
ALTAVEU 10: Com es torni a personatge?
ALI: Així que si no -
que acaba de forçar que sigui un char, és igual.
ROB: Així que hi ha una -
la distinció entre un caràcter i un enter és només en termes de mida.
Així que un nombre sencer passa a ser capaços de representar les coses
a, com, quatre mil milions.
Un char només és capaç de representar les coses fins a 255.
Però no hi ha cap diferència entre ells diferent d'aquest.
Així que pots dir char c = 65.
Això és equivalent a dir char c és igual a 'A'.
ALI: Oh, no.
En realitat, no guardar coses.
ROB: No, vostè no pot fer això.
ALI: Això és just -
[Gemecs]
>> ROB: Està bé, així que el que acabo d'escriure Ali era un programa que primer imprimeix 100 -
'A' com un enter, que tenia 35 anys, com esperem, perquè 100 menys l'ASCII
valor de A és 65.
Després s'imprimeixen mitjançant% c, el que significa que la interpreten com un char.
Així 100 - una és de 35.
Interpretar a un personatge que, com resulta ser el símbol de hash.
Si ens fixem en asciitable.com o el que sigui, veuràs que el 35 és el
símbol de hash.
ALI: Bé, qualsevol aclariment sobre l'altre problema?
Bé, vostès poden anar endavant i fer-ho llavors.
No dubti en fer preguntes o parlar entre si.
O si ja està fet, vostè pot relaxar-se.
>> LUCAS: Són la mateixa classe, totes les lletres minúscules en ordre i
també les majúscules també es troben en ordre, perquè això és una cosa útil per
el problema.
ALI: Bon punt, Lluc.
Llavors, ¿vostès tot això?
ALTAVEU 11: Sí
Així és com ho fas, oi?
ALI: Així és.
ROB: Si.
ALTAVEU 11: [inaudible]
ALI: Bé.
ROB: Quina és la pregunta que demana?
Només per convertir -
ALI: Convertir les minúscules a la majúscula.
Això és tot.
ROB: Molt bé.
ALI: Cal escriure?
Suposo que només haurem de mirar d'una altra persona.
ROB: Així que per a aquells que puguin estar encallat, una manera -
si tinc algun char c, i dir que anem a passa a ser la lletra D.
Així que ara, com puc esbrinar quina lletra de l'alfabet és C?
D No, però vull dir, D passa a ser la quarta lletra de l'alfabet.
I si comencem a comptar des de 0, que és la tercera lletra de l'alfabet.
Així que si A és 0 i B és 1, C és 2, D 3, com puc esbrinar la posició int -
quina és la posició de l'alfabet C és a?
Algú té alguna idea?
ALI: Crec que tots estem de codificació.
ROB: Què passa amb la primera?
ALTAVEU 12: Així que el que A és, restar la primera?
ROB: Si.
ALI: Sí, impressionant.
Pel que podria fer el capital D -
oh, ho sento.
Vostè pren el caràcter i es resta de la primera, com vostè ha dit.
ROB: Llavors, si D és una cosa així com 68, i restem A, que és de 65, llavors obtenim
3, que ens diu que D és la tercera lletra de l'alfabet
a partir de 0.
Així que vostè pot utilitzar això.
Ara sabem quina lletra de l'alfabet, en termes de
lletres majúscules, o -
podríem fer el mateix amb les lletres minúscules per esbrinar què
minúscules posició que estem ficats
I podem usar això per convertir majúscules després que utilitza un
idea molt similar.
Demani suggeriments?
>> ALI: Vostès - espera, no sé fins a quin punt vostès són.
La majoria dels que has fet, segueixes treballant, està encallat?
Vostès poden cridar -
encallat.
Una persona ha encallat.
Cool.
Tendeixo a ser atrapat, també.
ALTAVEU 13: He acabat.
ALI: Ja està?
Bé.
Fet.
ALTAVEU 13: [inaudible]
ALI: Sí, bé.
Està vostè de comprovar que està en forma minúscula?
D'acord, genial.
On són els altres?
¿Aquesta pista t'ajudi, com per a si mateix sense enganxar?
ALTAVEU 14: En realitat no, però només perquè, no sé, no estic
digerint encara.
ALI: Bé, genial.
Vols provar -
o vols anar a parlar?
>> ROB: El que havia de dir és -
pel que usar això.
¿Entén vostè com arribem quina és la posició de l'alfabet
la lletra és en?
ALTAVEU 14: D'acord, així que quan vostè posa les coses en una sola cita,
que retorna un nombre?
ROB: Si.
Es traduirà al valor ASCII que representa.
Llavors, vols anar a la taula ASCII o el que sigui?
ALI: Només un d'aquests?
ROB: Yep.
Així que quan vostè posa algun d'aquests símbols, fent cas omís d'una gran part de la -
ALI: [inaudible]
ROB: Oh, utilitzant el cursor.
ALI: Si.
Això va ser emocionant.
ROB: Així que, fent cas omís d'aquests els de l'esquerra, que són símbols especials -
si poses qualsevol d'aquests símbols entre cometes simples, llavors serà
converteixen a aquest valor de l'esquerra.
ALI: Això és el nombre decimal de la mateixa.
És com un partits amb 65, B 66, i t'adonaràs que tots estan en
ordre alfabètic, el que fa la diferència.
Així que, com diu Rob, abans, en aquest codi, estàvem calculant la distància de
la primera lletra, per se.
I això serà la mateixa, ja sigui en majúscules o minúscules.
ROB: Així que quan vam D, 68 menys un 65,, obtenim 3.
Com que D és de tres posicions en l'alfabet.
ALI: Llavors, com es tradueix això a trobar el poc d?
ROB: Si.
Així que si tinc 3 ara, sé que vull anar tres lletres al -
ens ha tocat anar en minúscules ara, però direm que vull anar tres
posicions en la part minúscula de les coses.
Llavors, com puc fer això?
Sé que és una minúscula 97.
Llavors, com puc trobar tres posicions en les lletres minúscules?
>> ALTAVEU 15: Tinc una pregunta en realitat.
ALI: Sí, endavant.
ALTAVEU 15: Així que per això, en realitat no importa si conec a aquesta posició,
agrada, jo no necessito aquesta taula.
ROB: Nope.
Vostè mai haurà d'utilitzar qualsevol d'aquests nombres.
I aquest és un punt important en els seus programes que vostè mai hauria dur
codificar qualsevol d'aquestes constants.
Useu 'A'. mai utilitzeu 65 o 97.
ALI: Es diuen nombres màgics, i són realment confús.
Igual que, quan s'està depurant un codi, és possible que no recordi el
vostè els utilitza.
I per a nosaltres classificació del seu codi, no sabrà realment el que
vostè els està utilitzant per.
Així que és millor si vostè utilitza realment els personatges pel que té
més sentit per les persones.
Bé, més preguntes?
Hi ha més gent fa, o -
Suposo que es pot comprovar.
És realment esgarrifós que vostè pot veure la gent.
ROB: Si.
Nosaltres no hem de fer això aquí.
No sabem els noms de les persones, tampoc.
ALI: Ah, sí, bé, això ho fa millor, així que serem encara més imparcial
en comptes d'escollir a l'atzar a algú.
No es preocupi.
No ho faré.
Si vostè té les coses a l'atzar sobre - És igual.
Bé.
Què fan les persones?
>> ALTAVEU 17: Així que la novena línia d'imprimir un personatge?
ROB: Si.
ALI: Si.
Així que si vostè va avall -
ROB: Oh, no puc fer això.
ALI: Vostè veurà que imprimeix el símbol de hash.
ALTAVEU 17: Oh, està bé.
ROB: Suposo que d'altra manera es pot veure les coses és que estem imprimint 02:00
personatges.
Primer que estem imprimint és la lletra A.
La següent és la impressió que estem a només 65.
Probablement vaig a cridar a mi per aquests.
Així que si en tenim prou amb executar això, t'adonaràs que s'imprimeixi De vegades ambdós.
Perquè ho estem preguntant el mateix.
Ho estem demanant per imprimir la lletra A. I llavors li demanem que s'imprimeixi el
número 65 interpreta com un caràcter, que és la mateixa cosa.
ALI: Tens alguna cosa a dir?
Oh, és broma, ho sento.
Molt bé, com són les persones -
ROB: Es pot caminar a través d'ell.
>> ALI: Bé, com començar?
Algú?
Com a suggeriment, hem d'aconseguir una mica de les persones, dels typers.
ALTAVEU 18: [inaudible]
ALI: Ah, sí, un perfecte sistema,.
Així que anem a escriure -
Quin tipus?
Algú?
O he de escriure?
Estem realment escrivint el -
ROB: Per descomptat.
ALI: Així que anem a escriure un printf per estimular, perquè puguem ser
agrada, em donen un caràcter.
Bé, i llavors què?
Per què està fent això?
ROB: No ho sé.
ALI: Bé.
Així que ara, els estem dient que ens doni un caràcter.
Però llavors, ¿com s'aconsegueix realment aquest personatge?
ALTAVEU 19: GetString ús.
ALI: GetString?
GetChar?
Bé, quina és la diferència entre una cadena i una xerrada?
ALTAVEU 19: Les cadenes són una sèrie, com un conjunt de caràcters.
>> ALI: Cool, sí.
Així que en aquest problema, només hem de considerar un caràcter alhora, de manera que
només farem GetChar per aquesta instància.
ROB: Podríem implementar una funció que si volíem que va tenir una cadena completa
i va ser la cadena i va canviar tot en minúscules a majúscules i tot
majúscules a minúscules.
Però aquí, només demanem un caràcter.
ALI: Així que ara tenim el caràcter aquí, però llavors hem de guardar.
Així que anem a afegir char c - què?
ALTAVEU 20: Definiu la variable.
ALI: Sí, exactament.
Així que tenim el nostre caràcter.
ROB: Crec que podria ser -
que és a tres espais, de manera que està cridant a vostè.
>> ALI: Bé, cool, ara que hem tabulació conjunt, què passa després?
Quin és el següent pas?
ROB: El que el nostre programa ha de fer és canviar una lletra minúscula per a una
lletra majúscula.
Què passa si se m'acut per introduir el símbol hash?
És que -
ALI: És un bon símbol.
Nosaltres fem servir molt.
ROB: Això és vàlid que es pot convertir en una forma majúscula?
ALTAVEU 21: No
ALI: No
Hem de comprovar que.
Així que podem tenir una sentència if comprovant així que si el c és més gran que
o igual a a'la minúscula '-
pel que si ens fixem en el gràfic, t'adonaràs que ha de ser d'aquí,
a 97, i la minúscula.
I pot ser qualsevol d'aquests, i en increments baix tot el camí.
I després hi ha z en 122.
I ha de cauen entre aquests dos valors.
Això té sentit?
ROB: Així que si c no és entre 97 i 122 -
o que mai hauria d'haver de fer servir aquests números - si c no és entre 'a' i
'Z', llavors no era un caràcter vàlid per a nosaltres en majúscules.
ALI: Així que, en forma de codi, es diu que si c és major o igual a un sol
en minúscules -
wow, com pots dir això?
D'acord, és major o igual a "a" minúscula, i ha d'estar per sobre
la minúscula 'z'. Així que ha de ser menor o igual a minúscules 'z'.
Ens estem assegurant que és entre els dos.
Llavors podem continuar amb el nostre codi feliç.
Què?
ROB: Així que vaig pensar que només podria seguir preguntant, si resulta que no tenen un
lletra minúscula.
ALI: Oh, jo no era conscient.
Em sap greu.
>> Molt bé, així que si anem a fer el que diu Rob, i assegureu-vos que -
podem seguir fent ells, llavors què hem de fer?
ALTAVEU 22: [inaudible]
ROB: Si.
Hem d'utilitzar algun tipus de bucle.
Com que l'usuari pot introduir alguna cosa invàlid una quantitat incalculable de vegades.
Així que vostè pot utilitzar un bucle while.
El propòsit d'un bucle do-while -
literalment, l'única vegada en les seves vides que haurà d'utilitzar docu-
bucles while és quan vostè està demanant la entrada de l'usuari.
Així que el fet que estem demanant l'entrada de l'usuari que aquí hi ha una insinuació que hauríem
utilitzar un bucle do-while.
I per què és això?
A causa de do-while sempre passa almenys una vegada.
Així que quan vostè està demanant la entrada de l'usuari, que desitja que això passi, almenys una vegada.
I si les coses fossin correctament, pot seguir endavant.
Si no és així, torna a preguntar de nou.
>> ALI: En altres paraules, hem de veure secció.
I així, aquest està dient que faci alguna cosa.
Així printf -
imprimir la declaració, ràpid, i també un caràcter, o l'intent de
aconseguir un personatge.
I després hem de comprovar si en realitat ho va fer correctament.
Llavors afegim les condicions, llavors diem estona, i llavors tenim la
sentència condicional.
ROB: Però ara que hem revocat la línia de pensament.
Ara que originalment estaven dient si c és en aquest rang, és vàlid.
Ara volem revertir això i dir si c no està en aquest rang, llavors
necessitat de tornar a fer les coses de nou.
ALI: Oh, sí.
Rob: Així, mentre que això no és cert, volem tornar enrere i
demanar un altre personatge.
Tothom veu això?
Les preguntes sobre això?
Bé.
>> Així que ara tenim un caràcter vàlid que podem majúscules.
ALI: Llavors quin és el següent pas per les majúscules ella?
ALTAVEU 23: Afegir 32.
ALI: Agrega -
Perdó, què?
ALTAVEU 23: No pots afegir 32?
ROB: Així que sí, no en termes de nombres màgics.
Només s'ha d'utilitzar cometes simples coses.
ALTAVEU 23: Bé, bé -
ROB: Però vostè pot obtenir 32 -
ALI: Com vas aconseguir el nombre 32, crec, és el que estem dient.
ALTAVEU 23: [inaudible]
ROB: Així que podem arribar amb el número 32 al costat -
ALTAVEU 23: [inaudible]?
ROB: Si.
Però si anem a fer-ho en els dos passos que vam fer abans amb
la matèria posició.
Així que la posició en l'alfabet que passa a ser c és c menys minúscules
'A'. Així que si entrem en una minúscula 'd', ja que serà 3.
I ara volem portar les coses a l'abast majúscules de les coses.
Així que ara el nostre nou c serà la 'A' majúscula posició plus.
Llavors, com la gent veu que ens porta -
ens estem movent de la gamma minúscules, la profunditat exacta en què estàvem
rang, i baixar al rang de majúscules, i va tan lluny
-hi de nou, que serà el mateix caràcter, però ara
uppercased.
ALI: I per les persones que estaven confosos per la manera com ell acaba de dir 32,
bàsicament, combinar ambdós en un comunicat.
Així que una manera equivalent a escriure això per dir que pot sol tipus de
lloc de substitut, el c menys 'a,' i el va posar aquí.
Així que el que vaig fer, jo no -
majúscules newc = 'A' més c menys minúscula 'a'. I a causa d'àlgebra,
Vostè pot moure.
També es pot dir que es pot moure al voltant per caràcters en majúscula newc = 'A'
menys minúscula 'a' plus c.
I això, t'adonaràs si ens remuntem a la carta.
Comptem amb majúscula A és 65 i un minúscul és 97.
Per tant 65-97 és -32.
>> Hi.
Presa seient.
Oh.
Vostè pot seure aquí.
Genial, bé, impressionant.
Benvinguts a la secció.
Es donarà compte de que la diferència és de 32.
Així que aquí és on ell va aconseguir aquest nombre.
Però no ho és, com diu Rob, la millor manera de fer-ho, ja que té l'estranya
confusió nombre màgic.
ROB: Vostè ha d'usar majúscula a minúscula menys.
No ha d'usar només directament 32.
ALTAVEU 24: Per què, de nou?
Per què no hauríeu d'utilitzar 32?
ALI: Si ho aconseguim, seria caràcters newc = -32 + c.
I si vostè no veu cap de les altres, si tot això s'ha anat, i vostè
només veure aquesta línia, llavors, com saber quin és el negatiu 32 està?
És simplement fora de lloc.
ROB: Així que el seu programa podria funcionar completament bé.
És només una cosa estil.
Algú que entra i la lectura del seu codi, són com 32, què significa?
Potser no -
Probablement no pugui comprendre immediatament que el 32 passa a ser
diferència entre una lletra minúscula i una lletra majúscula, encara
utilitzarem aquest fet en el següent problema.
32 és -
vostè pot deixar un comentari sobre ella dient: 32 és la diferència entre
'A' i 'a'. Però en aquest moment, per què no fer servir 'A' i 'a', i
no cal el comentari a continuació.
>> ALI: És només la forma per sobre d'ella són molt més net, l'estil es refereix.
I per això, ja que estàs començant programació -
o crec que no, ja que ets edició hacker - no importa.
És una bona manera de tenir -
és millor tenir un millor estil.
És més fàcil per a la gent a llegir.
ROB: Vostè mai hauria d'haver de recordar la taula ASCII, mai.
Vostè només ha de ser capaç d'utilitzar els caràcters de cometes simples.
Preguntes?
ALI: Tothom bé?
ROB: Molt bé.
Així que el problema és substancial.
Així que el problema ens demana -
ALI: El següent problema està demanant que fem el mateix, però per utilitzar
bitwise operadors.
ROB: I és clar, no hem vist encara operadors bit a bit.
Així que ara vaig a parlar d'això.
ALI: Estar emocionat.
Són super divertit.
>> ROB: Així que els operadors regulars, com x més i, menys, els temps, divisòria.
ALI: Escriviu a aquest sistema.
ROB: També hi ha%, si vostè no ho ha vist, que es pot utilitzar pel
per cent símbol.
Però no utilitzarem els d'aquest problema.
Volem utilitzar els operadors bit a bit.
Ara recordi, nosaltres ho portaven en una conferència.
No estic segur de si hem discutit binari més enllà d'això.
Però recordeu que cada nombre només es representa -
així, tot -
es representa en 1s i 0s en binari.
Així que això significa que quan dic el número 8, que jo sé que això és
com, 1000.
Què operadors bit a bit farem és operar en aquests bits -
s'operen en aquests bits directament.
Ara estic ja no es tracta en termes de vuit.
Estic tractant en termes de 1000, i vull fer les coses amb les quals
bits individuals.
Així que Ali ha escrit els operadors bit a bit aquí, però això és -
El número 8 farem servir com un dels números del nostre exemple.
I la representació binària és 1000.
Utilitzarem un altre número, 5 -
en realitat utilitzarem 9 i 5.
I el 5 de representació binària és 00 -
0101.
ALI: Estan tots bé en això?
El material binari?
Va ser a partir de la primera conferència?
>> ROB: Així que encara que no està completament a la part superior de la forma de convertir les coses
binari, que no és del tot important per aquest problema.
Estarem usant, però tindràs moltes més possibilitats per trobar la manera de
ràpidament canviar les coses en binari.
Així que amb 9 i 5, ara tenim els nostres operadors bit a bit.
Ah, i també, 9 i 5, si és un nombre enter, llavors en realitat és 32 bits,
el que significa que tenim com a 0, 0, 0, 0 un munt de vegades, i després
101 en l'últim moment.
Això és perquè, no importa el que facis, en nombres enters, de 32 bits.
El fet que només es necessiten quatre bits per representar 9 no vol dir que no siguem
utilitzant els altres 27 bits per només 0.
ALI: Només per aclarir, un d'aquests números que hi ha un 0 o un 1 és un bit.
Aquest és de 4 bits.
Com tantes Rob va dir que les màquines d'emmagatzemar en el 32.
Així que llavors tindrien 32 d'un 0 o un 1.
Cool?
ROB: Els operadors bit a bit.
El primer que anem a tractar, farem i.
Així que si fem 9 i 5.
Així que el que fa és i, poc a poc, compara els bits dels dos nombres
i si tots dos nombres són 1, i després tornarà a 1.
Si un és un 0 i l'altre és un 1, o tots dos són 0s, a continuació, torna un 0.
Així que vostè pot pensar en ella com els seus lògiques AND.
Igual que vostè necessita cert i veritable per retornar true, però cert i la falsedat és fals.
Pel que és el mateix, però ara estem tractant amb ell amb només bits.
>> ALI: Llavors, si ens fixem en això, tindràs 1 -
les vas a alinear, de manera que serà 1 i 0.
Vostès pensen que seria - el que avaluaria a?
ALTAVEU 25: 1.
ALI: Cool.
O no.
Em sap greu.
Això té sentit?
Llavors, ¿quina és la resposta col · lectiva de nou?
Em sap greu.
Així que si tenim 1 i 0, llavors què s'obté?
ROB: Així que pensa en el que dius i en veu alta.
Si disposa de dos bits, x i i, necessites x i i per ser 1 per tal que
per avaluar veritable - o, per tal que per avaluar a 1.
Si Xoy són 0, llavors s'avalua com fals o 0.
LUCAS: És bo recordar també que 1 és veritable i 0 és fals.
Així que si tens veritable i fals, és fals.
Però llavors, fidel i veritable, veritable.
Fals i fals, fals.
ALI: Tenim veritable i fals.
So 1 i 0.
Així que, de nou, ho sento, un cop més?
ALTAVEU 25: Seria 0.
Sí, bé.
I després tenim 0 i 1 -
ALTAVEU 25: [inaudible]
ALI: Si.
Així que sempre es pot canviar en -
Llavors, si vostè té 0 i 0?
ALTAVEU 4: 1?
0?
ROB: Així que és 0.
No és que els números han de ser el mateix.
És que tots dos nombres han de ser 1.
ALI: Així que tots dos han de ser veritat perquè sigui cert.
Així que això és 0.
I llavors vostè té un 1%, el que és?
ROB: Són nombres bastant bons.
Tenen tot és possible -
ALI: Bon treball, wow.
D'acord, genial.
Això té sentit per a tothom?
>> ROB: Així que ara farem |.
I això serà molt similar, però ara en lloc de x i i necessitat de
ser d'1 per tal que aquesta pugui valorar a un, ara és només xo
i ha de ser 1.
ALI: So 1 | 0 es s'avalua com -
CLASSE: 1.
ALI: Cool.
0 | 1 avalua a -
CLASSE: 1.
ALI: Cool, i després 0 | 0 -
CLASSE: 0.
ALI: Sí, i després 1 | 1 -
CLASSE: 1.
ALI: Cool.
Així és com dos operadors bit a bit.
Awesome.
ROB: Així que ara farem ^.
ALI: Cal fer tot d'ells?
ROB: Sí, perquè crec que l'utilitzaran -
ús de totes elles.
ALI: Bé.
Per tant -
ROB: Suposo que no cal.
ALI: Llavors ^ obres en què vostè ha de tenir exactament una veritable i una falsa.
^ Significa OR exclusiva.
Així que ara no és -
si x i i són ambdós 1, és ara falsa.
Aquesta és la diferència entre ^ i |, és que O, vostè pot tenir, si x és
veritable o I és cert, llavors estem bé.
No, diu que si x ^ és veritat, i ha de ser falsa, o en cas contrari no és cert.
Té una pregunta?
>> ALTAVEU 26: [inaudible]
ALI: Si.
És una cosa semblant.
Rob: Sí, així que quan arribi a això de maquinari de baix nivell, aquests són
els tipus d'operacions que s'està tractant.
A nivell de maquinari, només s'ocuparà de bits.
No s'ocupen de nombres.
ALI: Bé, per ^, o si té 1 ^ 0, el que s'ha d'avaluar a?
CLASSE: 1.
ALI: Cool.
Si vostè té
0 ^ 1? CLASSE: 1.
ALI: Cool.
0 ^ 0?
Cool.
I llavors 1 ^ 1?
CLASSE: 0.
ALI: Cool, impressionant.
El següent -
ROB: Crec que es tracta de tot el que hem de tractar.
Només farem això.
ALI: L'única vegada que haurem de fer -
ROB: Oh, això serà per a l'últim problema.
ALTAVEU 27: Espera, un cop més?
ALI: Em sap greu, quina era la seva pregunta?
>> ALTAVEU 27: Es pot explicar que un cop més?
El ^?
ALTAVEU 27: exclus - sí.
ALI: Quina és l'OR única significa que no ha de ser exclusivament
un veritable i fals, així que un 1 i un 0, davant OR, vostè té pot -
un d'ells ha de ser veritat, o tots dos poden ser cert, per
per avaluar true.
ALTAVEU 27: Així que 0 i 0 seria fals.
ALI: Si.
Però si tens 1 |
1, que s'avaluarà com true.
Però si vostè té un ^ 1, com vam fer nosaltres, que s'avalua com false.
Perquè no és exclusivament una és veritable.
ROB: I això pot o no ser útil, però observi que la ^ és
igual a simplement prendre el |
menys el &.
I en realitat es pot pensar d'aquesta manera.
^ És només ORing tot junts però traient qualsevol dels bits que
ambdós eren certes.
Així i tot torna on tots dos eren certes.
| Torna tot el que un o tots dos eren veritables.
Així que resta des del | li dóna la ^.
ALI: Alguna pregunta?
Aquesta va ser una gran quantitat d'informació.
Tothom bé?
>> ROB: Podem passar els pròxims per al següent problema, reduir
¿Quina hora és?
No necessiten això fins que el següent problema.
ALI: Vaig pensar que era aquest.
ROB: No ho és.
ALI: Estàs segur?
ROB: Sí, estic segur.
ALI: Per què no començar a fer el problema?
El problema és, una vegada més, per canviar de majúscula a minúscula, i aquest
moment d'usar els operadors bit a bit.
ROB: Així ho farem -
anem a començar amb la representació binària de 'A', 'A' majúscula,
que és 65.
Així que en binari -
de manera que 'A' = 65, = que, en binari -
Vaig a ficar la pota el nombre de 0s - que.
ALI: Això té sentit per a tothom?
Per tant, 1, no 2s, no 4s, 8s no, no -
no 16s, 32s, i després no un 64.
ROB: Sí, crec que això és una 0s massa.
ALI: Em sap greu.
>> ROB: Està bé, així que tenim la sèrie 64, i tenim el conjunt 1, i la combinació dels
junts, tenim 65.
ALI: Cool Beans?
ROB: Així que ara, minúscules 'a'-
nota 97 -
Quina és la diferència entre 97 i 65?
ALTAVEU 28: 32.
ROB: Si.
Així que és de 32 anys, que és el seu propi trosset, així que això serà 110001.
I això serà veritat per a tots els caràcters possibles.
Així que si pensem en la 'D', que serà 68, que serà 1.000.011.
I llavors minúscula 'd'serà 68 més 32, que és 100, que és
serà la mateixa cosa que era, simplement movent el
32 una altra vegada, de manera 1100011.
Així que la diferència entre una lletra majúscula i en minúscula és només moure d'una tirada
que la posició de 32-bit.
ALTAVEU 29: No és 1000100?
ROB: Espera, és 100 -
una cosa que vaig fer malament.
Això no era cert.
Estava pensant que es tractava d'una diferència de 3, de manera que després em va pegar
el binari 3 al final.
Això ha tenir raó.
ALI: Gràcies.
Bé per assenyalar-ho.
Això va ser forta.
Molt bé, està clar a la gent?
>> ROB: La diferència entre la versió en majúscules i minúscules és
sempre serà només 32, de manera que sempre serà una mica sola
que necessita ser voltejat per passar dels dos.
ALI: Així que en aquest cas, conèixer la diferència entre la capital i un
la minúscula és una bona cosa.
No es troba en el codi, però si més no conceptualment, és bo.
Així que vostès poden anar i codi que en els Espais ara.
O hem de parlar-ne?
ROB: Només es pot parlar d'això.
No.
Vostès poden provar.
Discussió entre vostè mateix una mica.
Nosaltres li donarem l'oportunitat de codificar.
[Interrompent VEUS]
ALI: - està fresc
ALTAVEU 30: Això és com la comèdia hacker.
ALI: Sí, estem dient a la premsa, passant a través d'ell.
>> Rob: I estem de tornada.
ALI: Això és una mica estrany.
Sento que hauria de tenir una estació de notícies CS50 i podríem
en realitat es sentin així.
ROB: Notícies Hacker.
ALI: Hacker News 50.
ALI: No dubti en fer qualsevol pregunta si vostè està confós.
ROB: Hi ha algú atrapat?
ALI: Sí, això és una bona cosa.
ALI: Espera, estàs encallat a la seva cadira?
Oh.
Jo estava una mica preocupat.
ROB: Perquè m'acabo de donar compte que anem a voler
altre operador bit a bit.
Per ara, anem a convertir majúscules a minúscules.
ALI: Em sap greu, tothom aconseguir que l'anunci?
Anem a passar de majúscules a minúscules.
ROB: Després parlarem de majúscula a minúscula després d'això.
Oh, no.
Tenim un error en el, que, suposo, mai va tractar de córrer.
Que és només això char c ha de ser declarat fora del bucle, perquè
seu abast està restringit al bucle.
ALTAVEU 32: En aquest cas, és incorrecte utilitzar un nombre?
ROB: Ei, no cal.
Si et garanteix que el capital 'A' - o, en minúscula 'a' capital menys 'A'
era exactament una mica, però que no sap que és 32 -
les coses funcionarien igual de bé si es tractés de la de 16 bits que es va bolcar - o
no, suposo que wouldn't -
o el bit 64 es va bolcar, possiblement.
Però vostè no necessita utilitzar 32.
En el seu lloc, pot utilitzar minúscules 'A' 'a' capital menys.
>> ALTAVEU 32: D'acord.
Què pots fer si et sents com si estiguessis escrivint massa és que es pot definir
a la part superior.
Així que vostè pot ser com, int = diferència minúscula 'A' 'a' capital menys. I
llavors vostè pot escriure diferència en canvi.
Això és vàlid.
Però només amb el nombre 32 és una mena de -
ALTAVEU 33: Tot i que és pel fet que és la de 32 bits?
ALI: Si.
ROB: No pot ser -
l'única garantia que hem de fer és que la diferència entre el
minúscules i majúscules és un bit.
No hauria d'importar que passa a ser la de 32 bits que es va bolcar.
Per raons de temps, començarem a anar per això.
No passa res si no s'ha acabat.
No es preocupi.
ROB: Suposant que c és una lletra majúscula -
no hem d'assumir c és una lletra majúscula.
Sabem c és una lletra majúscula després d'aquest bucle while -
do-while.
Així que això significa que es veu alguna cosa com això 'A'. Així que si volem portar aquest
'A' a aquesta 'a', què és el que hem de fer?
Llavors, ¿com convertir i donar-li la volta al bit?
ALI: Com donar-li la volta?
>> ROB: Així que sabem que volem donar-li la volta al de 32 bits.
Així que farà 'a' menys 'A', o podríem escriure 32, però -
Maleïda sigui, és al revés.
ALI: Bé pel que Rob aquí està el càlcul d'aquesta xifra, el nombre màgic 32.
Així que ell està descobrint que la zona on flip poc seria.
I llavors què és el que posem en els signes d'interrogació són?
ROB: Com podem capgirar aquesta part?
En termes de la lletra majúscula, és un 0, i volem arribar a ser un 1.
ALTAVEU 34: |.
ROB: Si.
Així que això ens està dient que tenim 'A'. Ho estem ORing amb 0 -
1000 -
i que que =.
ALI: Això té sentit per a tothom?
Podem anar a través d'ell a poc a poc si vols.
ALTAVEU 35: És vostè [inaudible]?
ALI: On és el signe menys?
ROB: Oh, vols dir aquí?
ALI: Oh, sí.
ROB: Així que suposo que això és nosaltres.
Podríem dir 32 anys, i ara estem fent servir operadors bit a bit.
ALI: No ens agraden els números màgics.
No farem això.
També crec que hauríem d'utilitzar un operador bit a bit -
ALTAVEU 36: Si un ^ A, obtindrà 32?
ALTAVEU 37: Sí, crec que -
ROB: Sí, ho faràs.
ALI: Així és com s'hauria fet per anar
del capital en minúscules.
>> Ara, ¿algú pot dir-me per què Rob i he canviat el sistema i la manera com es va anar
majúscules de minúscules, en lloc de minúscules
majúscules com ho vam fer abans?
Algú té alguna idea de per què pot ser més difícil?
ROB: Així que faríem -
ALI: Sí, endavant.
ALTAVEU 38: L'operador | Només realment bo per sumar.
ALI: Sí, exactament.
ROB: Així que el que vull fer en el cas de minúscules a majúscules és a dir,
convertir aquesta a'' -
pel que volem posar en alguns números aquí i utilitzar algun operador de manera que es tracta de
a capital d'A Encara estem utilitzant probablement 32 de alguna manera, però ara com podem
aconseguir que això surti a això?
Així que c -
oh, encara vull que també -
ALI: Així que ara si estem conversió de minúscules a majúscules de nou, llavors
fer l'operació ^, com vostès van dir.
ROB: Hi ha altres maneres de fer les coses.
Molts dels operadors de bits arribar a ser molt fàcil de definir en termes
d'altres operadors a nivell de bits.
Així que jo no usaria ^ o en absolut, però ^ funcionava perfectament bé.
>> ALI: Bé, pel que anirem a l'últim problema, que és bàsic -
l'últim problema és convertir una cosa en binari.
Així, per exemple, té 50 anys, i després es converteix
binari, que és 110010.
I jo crec que vostès saben tot sobre binari de xerrada.
I també se suposa que no posi cap 0s líder-hi.
ROB: pot ignorar aquesta part per ara.
El primer pas, vostè pot fer-ho de manera que hi ha 0s líders.
I després podem modificar aquest no tenir 0s líder, si tenim temps.
ALI: Així que no et preocupis per això.
Simplement intentar aconseguir en binari.
Un bon lloc per començar seria -
ROB: Hem de demanar un nombre enter.
ALI: Oh sí, això és una bona idea.
Podem començar amb això.
Així que vostè pot canviar el sistema.
Així que en lloc d'un personatge, ara estem tractant amb nombres enters.
Cool?
>> ROB: I ara és el que el nostre do-while condició serà?
S'està demanant un enter no negatiu.
ALI: Quan volem seguir preguntant a l'usuari una mica més?
Quan és menor que 0.
ALI: Així és.
ROB: Tot i és menor que 0.
ALI: Ara volem convertir.
Vostès tenen alguna idea de què fer?
Els indicis?
Si.
ALTAVEU 39: Hem de convertir-lo, o podem simplement imprimir alguns 0s i 1s
que seria el nombre correcte?
Podria fer un bucle for i compti per potències de 2?
ROB: Si.
No ha de puc convertir la seva binari -
la representació binària de i no cap dins de i.
Només ha d'imprimir la representació binària de i.
ALI: En altres paraules, vostè no ha d'anar per potències de dos.
ROB: Perquè ja està sent emmagatzemats com arxius binaris, pel que no és necessari
convertir a binari.
Només has d'anar a través del seu binari, i imprimir-lo.
I hauràs utilitzar bit a bit, perquè vol veure
els bits reals.
No cal utilitzar bit a bit, però si us plau.
I això és en realitat -
vostè pot fer les potències de dos, multiplicant per 2.
Anem a repassar una de les últimes dos operadors de bits binaris,
que és aquest.
Així que quan vostè pren -
>> ALI: Es pot anar a través dels dos?
ROB: Si.
Així que anirem amb 9.
Així desviació a l'esquerra 9 1 -
el que queda és només mig torn moure tots els bits a l'esquerra i inseriu un 0.
Així que ens estem movent tots els bits de 9 a l'esquerra
posició, el que ens dóna -
Així notar hem canviat tot el que queda un, i s'insereix un 0 en el
costat dret.
Si s'ha desplaçat a l'esquerra en dues, que canviaria tot el que va deixar a dos,
i inseriu 2 0s per omplir els buits.
Pregunta?
ALI: Llavors desplaçament a la dreta fa una cosa semblant.
Si té 9 desplaçament a la dreta 1, llavors estàs movent tot a
el dret, es perd un dígit, el que el 100 en el seu lloc.
ROB: I està bé que vostè està perdent el poc que va passar a ser tot el
el camí a la dreta.
Hi ha diferents tipus de canvis correctes, però bàsicament es pot pensar en
desplaçament a la dreta com s'acaba de dividir per 2.
I es pot pensar en desviació a l'esquerra de multiplicar per 2.
Així que si vostè converteix això -
si es converteixen 9 torn 1, que és igual a 10010, si en realitat va ser
mitjançant el binari i descobert el que fos, no seria més que 18 anys.
Acabem de multiplicar per 2.
1001 desplaçament a l'esquerra 2 serà 36.
Es multiplica per 4.
Val, guai, així que això és un pràctic operador bit a bit per aquesta.
Més confusió?
Vostès volen provar-ho?
O simplement pot saltar a la dreta i posar-lo en marxa?
ROB: Probablement hauria saltar a la dreta endins
ALI: Sí, està bé.
Rob: I caminar a través d'ella junts.
>> ALI: Bé, jo només vaig a entrar-hi.
Així com ho vaig dir al principi, anirem només a través de bit per bit.
Així que necessitarem un bucle.
Algú té una idea de la millor classe de llaç de passar per això?
Tenim bucles while, do-while, bucles for.
ALTAVEU 40: Do-while?
ROB: Així que recorda el que vaig dir abans sobre, només estem utilitzant do-while
bucles per obtenir entrada de l'usuari.
Vostè mai serà més o menys sempre els utilitzen per res més.
ALI: El problema amb do-while és que faci alguna cosa abans que es comprova
la condició.
Per tant, es podria fer una cosa dolenta -
com, fa mal -
fer alguna cosa que no és possible.
Així que vostè vol comprovar primer.
ROB: Hi ha un munt de casos en què es pot utilitzar do-while, però la gent
no esperi que els usi si no és l'entrada de l'usuari.
Així que hem utilitzat la nostra do-while i per aconseguir-ho.
Quantes vegades és el nostre llaç voldrà bucle?
Volem bucle sobre cadascun dels bits de i.
Quants bits hi ha en i?
ALTAVEU 41: 32.
ALI: Si.
ROB: Així que hi ha 32 bits.
No volem dir 32.
En el seu lloc, vull dir sizeof -
que, has vist que a la classe encara?
ALI: Nope.
ROB: Per què diu que l'ús -
sizeof (int) vegades 8 -
ALI: Bé, sizeof és -
>> ALTAVEU 42: [inaudible]
ALI: Interessant.
Així, sizeof és una funció incorporada a C, on només li indica la
nombre de bits a -
ROB: Bytes.
ALI: Bytes, ho sento -
el nombre de bytes que té una variable per emmagatzemar un valor.
Així que crec que va passar a la classe, llavors, un int és de 4 bytes potser.
Cool?
ROB: Però vostè no necessita saber que un int és de 4 bytes.
Vostè ha de ser capaç de dir -
vostè ha d'utilitzar sizeof (int) per obtenir 4 bytes.
I això és realment important per a algunes coses.
Un int no podria ser de 4 bytes.
En un altre equip, un int pot ser de 8 bytes.
Així que el teu programa no funcionarà en aquest equip perquè no modificable 32
bits quan en aquest equip passa a ser de 64 bits.
ALI: Així que vostè tingui el nombre total de bits que et vull fer marxa enrere.
Rob: I és la diferència entre un byte i una mica de que no
són 8 bits en un byte.
Així que sizeof (int) retorna 4 bytes, llavors hem de multiplicar aquest
per 8 per obtenir 32 bits.
>> ALI: Bé, pel que sabem el màxim i sabem que volem anar de -
volem anar a través de tots ells.
Així que volem anar de 0 a numBits.
Llavors, ¿algú sap com escriure el bucle per això?
Algú?
ALTAVEU 43: [inaudible]
ALI: Així que vols travessar el nombre i del bit zero a la
bit primer, el segon bit, el tercer bit, tot el camí a numBits.
El nombre màxim de bits que pot arribar.
ROB: Quin és el llaç comú que utilitzem el que volem fer alguna cosa vegades x?
ALI: For.
Perfecte.
Així que tenim per.
I després crearem un Iterador, que no serà i.
ROB: j.
ALI: J = 0.
Així que anem a començar a 0.
I llavors tindrem la condició per estar segur, mentre que vostè està
passant a través d'ell cada vegada -
[Interrompent VEUS]
ROB: j.
ALI: j és menor que numBits.
Així que no vull fer el real és igual a un, perquè són numBits
total, i comencem a 0.
Així que estem realment tindrà -
ALTAVEU 44: Oh.
ALI: Els índexs no acaben en numBits menys 1.
ROB: Nosaltres etiquetar els bits 0 a 31, no se'ls etiqueta 1 a 32.
ALI: I després anem a incrementar cada vegada a un, perquè volem
revisar cada un d'ells.
Així que anirem j + +.
>> ALTAVEU 45: Per què fas això?
ALTAVEU 46: Per què va vostè a través de cada bit?
ROB: Així que vols anar a través de cada bit i -
Així que diguem que tenim un nombre.
ALI: 68.
ROB: Podem utilitzar 68.
Així que el binari que serà 100100.
Així que això està dins de i i volem anar sobre cada un d'aquests bits.
És un 1?
Imprimir 1.
És un 0?
Imprimir 0.
A continuació, passem a la següent part.
És un 1?
Imprimir 1.
És un 0?
Imprimir 0.
ALI: Cool, està bé.
Ara estem en l'índex correcte perquè aquest poc és.
Com podem comprovar que un particular?
Diguem que estem en j = 0, de manera que desitgi comprovar l'índex 0 del bit.
Així, en aquest cas, aquesta.
>> Així que ara, com fem per comprovar - oh, seria aquest.
ROB: Si.
ALI: Em sap greu.
Com fem per comprovar que un, en un sentit?
Com podem comprovar si és un 0 o un 1?
Bé let 's -
CLASSE: I 1?
ALI: I?
Si.
ROB: Així que anem a dir que ja tenim una.
Llavors això i, es retornarà si es tractava d'un 1 o un 0.
ALI: Així que podem anar cap avall.
I podem fer com vostès, va dir, de fer i la funció.
ROB: int -
Com vull dir això -
Isone = i.
I per al primer bit que estiguem veient, estem fent i & 1.
Ara, ¿què hem de voler i pel segon bit?
ALTAVEU 47: 2.
ROB: Sí, el segon que estem en 2.
ALI: Es donarà compte de que l'1 s'ha mogut cap a l'esquerra.
Així que hem après tots els operadors bit a bit per fer aquesta funció?
ROB: La següent -
ALI: Sí, és clar, això és.
Així que és una desviació a l'esquerra.
En lloc de sempre consultar amb 1, es canviaran.
I quantes vegades l'hi canviarem?
Si estem comprovant el zero llavors ens mourem per sobre de zero.
Sí, exactament.
Així ho va deixar passar per ella j.
Perfecte.
Així que ara que sabem -
tenim aquest int de si és 1, i després -
pel que Rob és una espècie de parany aquí -
i el que ara anava per davant i acaba dient que si realment és 1,
perquè un resultat veritable, així que no has de dir isf Isone és igual a 1 -
pel que si Isone, llavors imprimir 1, i en cas contrari imprimir 0.
>> ROB: Així que el nostre programa té un error total.
Bé, les preguntes sobre això primer.
ALTAVEU 48: ¿Podràs posar el Isone dins de la peça i operació de quatre
llavors sí que ho han canviant a mesura que l'última part?
Així Isone és igual a 1 i, a continuació -
Rob: Sí, es pot.
De fet, podem demostrar que una vegada que es corregeix l'error que estic a punt de
discutir amb tots vosaltres.
Tingueu en compte l'ordre en què van les coses.
Tenint en compte aquesta representació binària, estem començant amb el bit zero.
Si és un 0, llavors estem imprimint -
bé, és un 0, de manera que estem imprimint 0.
Després anem al segon bit.
Es tracta d'un 0, de manera que imprimim 0.
Després anem al tercer bit.
És un 1, pel que imprimim 1.
ALI: Així que va cap enrere.
Llavors, com és el que vostès suggereixen que arreglar això i van per un altre camí?
ALTAVEU 49: [inaudible]
ROB: Si.
Així que en comptes d'anar de 0 a numBits, anirem a partir de fragments numBits a 0.
ALI: Així que [inaudible]
Sempre es pot anar a un altre costat.
ROB: NumBits menys 1, perquè aquesta és l'última nubmer -
ALI: Perquè va de 0 a 31.
I llavors sempre anem a fer de és més gran que 0 perquè no et vagis
massa a la dreta.
I tan bon punt sempre resta per 1 per anar a la dreta.
>> ROB: Així que ara tenim un bucle de retorn, i el nombre està de tornada en la impressió
en la forma correcta.
ALTAVEU 50: ¿No ha de canviar la cosa canvi també?
ALI: Llavors no.
ROB: Estem fent les operacions exactament els mateixos, excepte que ara
en l'ordre invers.
Així que en lloc de fer el canvi per numBits menys 1 per obtenir el que aquesta
és poc, en lloc de fer això últim, només haurem de fer primer.
En revertir aquesta aquí, invertim l'ordre de totes les coses
que succeeix a l'interior.
Però no volem canviar el que passa a l'interior del tot.
ALI: Això té sentit?
El processament?
Bé, algú més té alguna pregunta conceptuals altres?
ALI: Abans d'entrar al punt que és -
ALI: Bé, bé anar.
Rob: En lloc d'utilitzar j per ser el nostre -
en lloc d'utilitzar j per canviar per sempre, com un j desviació a l'esquerra, crec que el
vostè està dient és així, per si mateix j utilitzar.
Així que per j -
Suposo que aquesta és la dura - j = 1 << 31.
És això el que vols?
Crec que és << 31.
j> = 1.
j >>, >> Isone, i & j -
de manera que ara en lloc d'usar -
ALI: Està en constant moviment j en lloc de tenir un
índex per comprovar-ho.
No és tan dolent.
Estem utilitzant el mateix tipus de lògica.
Així que si vas de nou -
oh, però perdrà.
Està bé, et escriure de nou.
Si vostè nota que tenim una quantitat j << de vegades, i se'ns
j incrementar cada vegada per un increment, però aquesta vegada en comptes
que estan fent l'increment de la j en la part superior dins del bucle for.
Així que en comptes d'estar sempre en moviment cap avall -
ROB: La primera iteració del bucle for, tenim j és 10000.
La següent iteració del bucle for és 01000.
La següent iteració és això.
I l'1 és només seguirà propagant cap avall fins que arribem a la molt
final, on ara és això.
El següent, l'1 serà empès, i j ja no és major
que o igual a 1.
També podria posar més gran que 0, la mateixa diferència.
I això és tot.
Preguntes?
Si.
>> ALTAVEU 51: [inaudible]
ROB: Així que aquest és el mateix que -
Has vist j + = 3?
Així que aquest és el mateix que j = j + 3?
Vostè pot fer això per gairebé qualsevol operador en C. Així j >> = 3 és
igual a j = j >> 3.
Així que també funciona amb els operadors bit a bit.
I no hauria d'haver posat aquí 31.
Hi hauria d'haver posat numBits - 1.
ALI: Yay, no hi ha números màgics.
Bé, són les 4:00, així que si vostès han d'anar - però té sentit?
Vostès tenen alguna altra pregunta?
ROB: Jo també anava a llençar que si volíem -
es va discutir operador ternari en absolut?
ALI: No
Està bé.
ROB: Així que vostè pot veure-hi per a la pròxima vegada.
ALI: Bé, en realitat?
Ara estàs presumint.
ROB: No, ara és -
això és el que fa que la gent interessada, i ara aniran a buscar-hi.
Així que ara, que fa el mateix, en un sol pas.
Així que primer comprovar, és i & j 1?
És cert?
Si és així, escriviu un 1, en cas contrari, imprimiu un 0.
ALI: Però fer-ho de l'altra manera és perfectament bé també.
Té la mateixa lògica.
Així que no és com un és -
ROB: En aquest punt, podem desfer-nos d'aquestes claus, perquè és només
una línia de bucle.
ALI: Bé, pel que no té sentit?
Això era una mena de salt.
Però va ser només una mica de sintaxi, més.
>> Cool?
Alguna altra pregunta?
ROB: Molt bé.
ALI: Bé, genial.
Gràcies per venir a la secció.