[Powered by Google Translate] [Teden 7]
[David J. Malan - Harvard University]
[To je CS50. - CS50.TV]
V redu. Dobrodošel nazaj. To je CS50, in to je začetek tedna 7.
Nekaj ​​malih objav:
Pset5 je sedaj v teku, ko se bo,
in naj povem, čisto iskreno, to pa so ponavadi med bolj zahtevno
problemskih sklopov v teku, zato naj omenim to zdaj
tako da ta teden bolj kot kdaj koli prej ne boste počakati, recimo, sredo zvečer
ali četrtek zvečer se potopite noter
To je vsekakor zanimiva pset. Mislimo, da je zabavno.
Če ste dejansko dobili v celoti pravilen in nato lahko izpodbija tako imenovano Big Board,
boste imeli priložnost, da se ujema razum z nekaj osebja seveda v
in nekatere od vaših sošolcev.
Kaj Veliki svet je spet imate črkovalnika delo,
boste mogli iti na cs50.net po zagonu ukaza,
samo izbere, nato pa koliko časa in količina RAM in več
ki ste ga uporabljali v svojem izvajanju Tukaj bo razstavljal na domačem teku na stran.
Opazili boste, da se cel kup ti ljudje tu na seznamu zaposlenih
ker čez vikend, je osebje mislil, da bi bilo zabavno, da bi poskušali Preseči seboj.
Torej zavedati, da je cilj tukaj je, da ne Preseči osebje.
Tudi jaz sem tukaj samo na številki 13.
Povsem se odločijo, toda to je priložnost, da vidite, kako malo RAM-a
in kako malo CPU sekund, lahko uporabite vis-a-vis nekaj tvojih sošolcev.
>> In jaz priznam, da je Kevin Michael Schmid,
trenutno številko 1 mesto kot ena od TF,
To je izvedba, ki ji pravimo ni mogoče
glede na to, da je z uporabo skoraj 0 RAM in skoraj 0 sekund za nakladanje.
Torej bomo poskrbeli offline Kevin. [Smeh]
Obstajajo določene veščine, ki Kevin odpluje na preizkušnji tukaj.
Ena od stvari, ki smo mislili, da bomo tudi mi je zdaj CS50x je teden v teku,
in vi ste toliko del tega eksperimenta, kot so tisti študenti.
Smo jih prosili, kot del njihovega pset0, ki je bil prav tako predložiti projekt scratch
od obresti, ki so jim - igre, interaktivno umetniško delo, animacija, ali podobno -
1 - do 2-minutni video, če bi želeli, pozdravljanja na svetu in kdo v resnici so.
Sem mislil, da sem z vami deliti le nekaj videoposnetkov, ki so bili predloženi doslej
ker je za nas, za zaposlene vsaj, da je bilo res razburljivo
in navdih, da se te ljudje iz vsega sveta - držav po vsem svetu -
tuning v, od vseh stvari, na tečaj računalništva na internetu,
ali je to zato, ker želijo nadaljevati svoje študije,
želijo, da se njihove poklicne poti v novo smer,
želijo zapolniti vrzeli v svojem znanju,
tako da nekaj istih razlogov, da fantje so morda bili tukaj.
>> Torej, ti dam en tak študent tukaj. Lahko Povečati obseg le malo.
Tukaj je ena 1-minutnih našega študenta vlogah.
Pozdravljen, svet. Sem študent industrijskega inženiringa tukaj v Malagi, Španija.
Jaz sem navdušen nad tem spletnem seveda zato, ker imam rad računalništva, res,
in sem resnično cenim, da sem dobil to razišče.
In dejstvo, da se lahko naučim isto vse počnete
toda namesto da bi v Harvardu sem v Malagi, kako super je to?
No, jaz sem Fernando, in to je CS50. Se vidimo.
[Smeh] Še en posnetek, smo še posebej všeč, boste ugotovili, da je ta gospod je angleščina ni tako močna.
Izgleda, da je imel stroj prevod, tako da so prevodi so same malo nepopolna,
ampak to je bil eden od naših najljubših doslej, kot dobro.
[♪ ♪]
Pozdravljen, svet. [Govorijo v japonščini]
[Moram pozdraviti v japonščini, ker moja angleščina je zelo nezanesljiva.]
[Sem podal sporočilo za vas od mesta Gifu, Japonska.]
[Lahko sem študent prvič v 20 letih, kot je mogoče videti.]
[Zelo sem hvaležen, da Harvard University, ki mi je dal to možnost in EDX.]
[Golf je kitaro in moja najljubša stvar deluje.] [Smeh]
[♪ ♪]
[Zakaj misliš, da sem se trudil, da se udeležijo cs50x.]
[Harvard University, to je moje hrepenenje.]
[Še posebej, če sem daleč prisotnost živel na Japonskem.]
[Sem poskušal takoj zavedati obstoja takega EDX kdaj.]
[Se ti ne zdi, da ne boste z njegovo starostjo učenja I.]
[Cs50 je moje hrepenenje. Moje ime je Kazu, in to je cs50.]
[♪ ♪] [ploskanje in navijanje]
Druga priljubljena naša je bila ta trditev sem od nekoga.
[♪ ♪] [Malan] Google je, če ste seznanjeni s tem meme.
>> In potem končno, par drugih, da imam napotenih da morda zmagal čudovit nagrado.
[Študenti] Ah! >> [Malan] bomo morali poslušati. To je kratek, tako poslušajte pozorno.
[Ženska govornik] Kako ti je ime? >> Louie.
[Ženska govornik] Kaj je to? >> [Zahihita] CS50. [Smeh]
[Malan] Ni 2 traja, čeprav.
Gremo, zadnja.
Moje ime je Louie, in to je CS50.
[Smeh] To je torej CS50x.
Hvala za vse tiste, ki ste med sledenjem vzdolž doma
, ki so bili deležno doslej.
Danes smo zaključimo razpravo o podatkovnih struktur,
vsaj nekatere najbolj temeljne,
in potem bomo nadaljevali pogovor o HTML in spletno programiranje.
Dejansko smo porabili preteklosti nekateri sedem tednov si ogleduje osnove programiranja -
algoritmi, podatkovne strukture in podobno -
in C, kot ste morda imeli doslej,
ni nujno najbolj dostopna jezikov
, s katero bi se izvedli nekateri od teh idej.
In tako se začne ta teden in naslednji teden, nato pa naslednje,
bomo končno lahko prehod iz C, ki je na splošno znana kot dokaj nizko raven jezika,
da se stvari na višji ravni, med njimi PHP, Javascript in podobno,
kar bomo videli, zasnovani na istih lekcij, ki smo se naučili v zadnjih nekaj tednih,
vendar boste ugotovili, da razglasitev stvari, kot so nizi in hash tabele in iskanje in razvrščanje
postalo tako veliko lažje, ker bodo jeziki sami smo začeli uporabljati
bo postal močnejši.
Ampak najprej, uporaba dreves.
To je zelo pogosti v teh dneh, da je treba stisniti podatke.
V kakšnem kontekstu bi si želeli stisniti neke vrste digitalnih informacij?
>> Ja. >> [Študent] Če želite poslati preko spleta.
Ja, ko želite poslati nekaj preko spleta.
Če želite prenesti velike datoteke, je idealno, če nekdo na drugi strani
stisnjenim te datoteke z uporabo zip formatu ali kaj podobnega
tako da vam pošilja manj bitov, kot bi se sicer prenašajo.
Torej, kako stisniti podatke?
Vse izvira na katerih se uporablja manj bitov, kot jih zahteva privzeto.
Ampak to je nekako nenavadna stvar, ker mislim nazaj na 0 in 1 tedna
ko smo govorili o ASCII in binarni in se pogovarjala o ASCII zlasti
kot z uporabo 8 bitov za zastopanje črke abecede
tako da je črka zastopa 65, male črke, je število 97,
in pa ti predstavljajo 65 ali 97, ki ga uporabljate 7 ali 8 bitov.
Ampak ulov je, da so nekatere črke v angleške abecede
da ni tako priljubljena kot drugi.
Z sploh ni tako priljubljen, Q sploh ni tako priljubljen, ampak A in E, so super priljubljena.
In še za vse te črke, ki ga privzeto svet uporablja isto število bitov, le 8.
Torej ne bi bilo pametneje, če bi namesto z uporabo 8 bitov za vsako pismo,
še najbolj pogosto uporablja kot Q in Z,
Kaj pa, če smo uporabili manj bitov za A in E in S in najbolj priljubljenih črk
in uporabili več bitov za manj priljubljenih pisem,
Ideja je optimističen dajva za skupno primeru,
ki je tema računalništva poskuša optimizirati, kaj se bo zgodilo, najbolj
in porabili malo več časa, nekoliko več prostora za stvari, ki so, seveda, bi lahko zgodijo
vendar ni nujno tako pogosto.
Dajmo torej zgled.
>> Recimo, da želimo kodiranje podatkov dokaj učinkovito.
Morda ste odraščali vedo nekaj o Morse kode,
in so možnosti, da niste vedeli, dejansko kodo,
vendar pa bi vas opozoriti, da je vsaj ta serija pik in pomišljajev.
To je dokaj učinkovito kodiranje in obvestila, da je najbolj priljubljen pismo - na primer, E -
uporablja Najkrajši piskov.
Morsejeva abeceda je vse o beep-beep-beep-beep-beep-pisk in gospodarstvo tone
bodisi za krajše časovno obdobje ali daljše obdobje.
E, kot je označena s piko, je zelo kratek pisk, samo piska in da bi predstavljal E.
Po drugi strani pa bi bilo T daljši pisk, kot pisk [podaljšuje zvok]
in da bo zastopa T.
Ampak to je še vedno precej kratka, saj v nasprotju s tem, če pogledaš na Z,
Z izrazi bi šel pisk, pisk [več zvoka], pisk, pisk [krajši zvok].
Torej, to je več, ker je manj pogosta.
Toda kavelj tukaj je, da je Morse code malo pomanjkljiv
v tem, da to ni takoj decodable.
Recimo, da ste slišali o nekaterih koncu žice pisku [kratko], piska [časa].
Kakšno sporočilo pa sem dobil? Pika in vezaj. Kaj to pomeni?
[Študent] A. >> [Malan] Mogoče.
Lahko bi bilo tudi po elektronski sledi T.
Z drugimi besedami, Morse code, čeprav se dopolnjuje to načelo optimizacije kotiček primer,
da ni primerna za takojšnjo decodability.
To pomeni, da je človek, ki je slušno ali je prejemnik teh pik in pomišljajev
je nekako ugotoviti, kje so odmori med črkami,
ker če ne veš, če ti odmori, boste morda zamenjali za ET ali obratno.
>> Torej, kaj lahko naredite? V Morse code lahko samo premor med vsako od črk.
Ampak premori je nekako v nasprotju s celotno točke pospešitev stvari.
Pa kaj, če namesto tega smo prišli gor z oznako, kjer ni bilo tako slabo stanje
kjer je E predpona, na primer, od -
z drugimi besedami, če bi se prepričajte, da so vzorci, ki so še vedno okrajšava za priljubljene črk
dolgo manj priljubljenih pisem, vendar ni mogoče zmeda?
Človek z imenom Huffman leti izumil ta sistem se imenuje Huffmanovo kodiranje
ki dejansko dopolnjuje enega od podatkovnih struktur, ki smo jih porabili nekaj časa govorimo o
ta teden, da dreves, dvojiška drevesa posebej -
binarno drevo pomeni, da nima več kot 2 otroka.
Ima morda levo otroka, morda pravo otroka, in to je to.
Torej, predvidevam samo zaradi razprave, da nekdo želi poslati sporočilo
ki je videti takole. To je popoln nesmisel, vendar je sestavljen iz As, Bs, Cs, Ds, in Es.
In če ste dejansko prešteti vse As, Bs, Cs, Ds, in Es
in nato delite s skupnim številom pisem,
tale graf pravi, da 45% teh pisem so Es, 20% pa kot,
10% Bs, in tako naprej.
Torej, z drugimi besedami, domneva, da je borzna niz je
je le nekaj sporočil, ki jih želite poslati.
To se zgodi, da je nesmisel samo zato, da bomo lahko uporabite kot nekaj črk, kot je mogoče,
ampak to je res tako, da je E ostaja najbolj priljubljen,
in B in C so najmanj priljubljeni, vsaj v teh 5 črkami abecede.
Torej, kako lahko greste o prihajajo s kodiranjem,
binarno kodiranje, vzorec 0s in 1s za vsako od teh pisem
na tak način, da je E kratek vzorec in morda B in C so nekoliko daljše vzorci,
spet ideja je, da želimo uporabiti manj bitov večino časa
in več bitov le enkrat v nekaj časa.
Po Huffmanovo kodiranje, lahko ustvarite gozd dreves.
Tukaj je neke vrste fabule tukaj, ki vključuje dreves in tudi postopek za njihovo vzpostavitev.
Začnimo.
>> Predlagam, da začnete s tem gozdu, tako rekoč od 5 dreves,
vsak, ki je precej neumno drevo.
Drevo je sestavljeno iz samo enega vozlišča, kot je predstavljena tu krogu.
Torej bi lahko vsaka od teh stvari je struct C
in bi znotraj struct C se plovec, ki predstavlja število frekvenc
in potem morda znak, ki predstavlja črko.
Torej menite o teh vozlišč, kot navaden struct C, vendar za zdaj, višjo raven.
To je gozd 5 dreves, pri čemer je vsak, ki imajo le eno vozlišče.
Kaj Huffman predlog je, da smo začeli združevati drevesa,
ki imajo najmanjše frekvence šteje v nekoliko večjih dreves
jih povezujejo z novo vozlišče koren.
Torej, med črkami tukaj, opazite, da zaradi lažjega sem jih ločijo od leve proti desni,
čeprav to ni nujno potrebno, in obvestilo, da je najmanjši vozlišča
Trenutno je 10% in 10%.
Torej Huffman predlaga, da združi te najmanjše 2 vozlišča v novo drevo
z uvedbo novega nadrejeno vozlišče, nato pa se te matične levo otroka in pravico otroka
kjer je B poljubno levo in C je samovoljno pravico.
In potem Huffman še predlaga, da lets 'zdaj samo pomislite na levi otroka
V enem od teh dreves se vedno, kot jo zastopa 0
ter pravico otrok, pri čemer se vedno ga zastopa številko 1.
>> Ni važno, če si jih obrnite tako dolgo, kot ste dosledni.
Torej, zdaj imamo štiri drevesa v tem gozdu.
In rečem 4, ker zdaj drevo na levi -
in to ni tako veliko drevo v smislu, da raste na ta način,
to je več kot družinsko drevo, kjer je zdaj 0,2 je vrsta staršev dveh otrok -
opazili, da se v tej staršev smo sestavljeni 0,2.
Dodali smo frekvenčne štetja dveh otrok, in glede na novo vozlišče skupno vsoto.
Torej, zdaj pa ponovite ta postopek.
Poišči najmanjša dva vozlišča, nato pa se jim pridružijo v novo drevo
in ponovite postopek naprej.
Zdaj imamo nekaj kandidatov, 20%, 15% in 20% drugo.
V tem primeru moramo prekiniti kravato. Mi lahko to storite samovoljno.
Morali bi narediti dosledno.
V tem primeru bom šel samovoljno s tisto na levi strani
in zdaj združiti z 20% in 15%, da mi nov staršev, imenovano 35%
čigavo je otrok 0, katere pravica otrok 1, in zdaj imamo le tri drevesa v gozdu.
Lahko morda videli, kam to pelje.
Če bomo ponovite nekaj več časa, da bomo imeli samo eno večjo drevo,
vse katerega robovi so označeni s 0s in 1s.
Dajmo še enkrat.
35% je, da je koren drevesa. 20% in 45%, tako da bomo za združitev 35% in 20%.
Zdaj imamo to drevo tukaj. Mi dodamo tiste, skupaj imamo 55%.
Zdaj je na voljo le dve drevesi v gozdu.
Mi to en končni čas, in upam, da se vse frekvence matematično sešteti
ker bi morali, saj smo jih izračuna od zaslužiti-go, da dodate do 100%.
In zdaj imamo eno drevo.
Torej, to je Huffmanovo kodiranje drevo.
Nekako je nekaj časa do tja verbalno, ampak realnost je z zanko za
ali z rekurzivno funkcijo, bi lahko zgradili to stvar zelo hitro.
Torej, zdaj imamo eno novo vozlišče, in vseh teh notranjih vozlišč so malloc'd,
domnevno na poti.
Torej, zdaj na vrhu tega drevesa imamo 100%, zdaj pa smo opazili pot
Iz tega novega pra-pra-pra-stari starši z vsemi pra-pra-pra vnuki
vse na dnu, da bi vse liste.
>> Kaj bomo pa zdaj predlaga, da se z namenom, da zastopa črko E,
bomo preprosto uporabo številko 1. Zakaj?
Ker če prečkala to drevo iz končnega korena do lista znan kot E,
sledimo samo en rob, desni rob, in ki je označena seveda v zgornjem desnem 1.
Torej posledice tukaj za Huffman je bil, da se kodiranje E v binarno bodi 1.
In to je prekleto učinkovit. Ne morem dobiti vse manjše od tega.
Nasprotno pa se bo zastopan, če boste sledili logiki,
na kakšen vzorec bitov namesto? 01.
Torej, da bi dobili, bomo začeli pri korenu in gremo levo in nato gremo desno,
kar pomeni, da je sledila 0 in nato 1.
Zato bomo predstavljajo pismo z vzorcem 0 in 1.
In sedaj opazil že imamo lastnost neposredni decodability
da nismo imeli v Morse code.
Čeprav sta oba vzorcev precej kratek - E je 1 bit, je bit 2 -
opazite, da jih ni mogoče zamenjati za eno ali drugo,
ker če vidite 1 to je dobil, da je E, če vidite 0, potem 1 Očitno moraš biti A.
Prav, kaj je D? 001.
Kaj je C? 0001.
In kaj je B? 0000.
In še enkrat, ker so vse črke nam je mar, so na listi
in nobeden od njih so vrste posrednikov na poti od korena do listov,
ni nevarnosti conflating 2 črk "različne kodiranja
ker so vsi ti bitnih vzorcev so deterministične.
0000 bo vedno B.
Ni vozlišče nekje vmes, da boste zamenjali eno pismo za drugo.
Torej, kaj je tu posledice?
>> Najbolj priljubljena pismo - v tem primeru E - je dobila najkrajšo kodiranje
Je dobila naslednjo najkrajšo kodiranje
in B in C, ki smo že vedeli od get-go so bile vrste najmanj priljubljena
pri frekvenci 10% vseh, ki so jih dobila najdaljšo kodiranje.
In kaj zdaj to pomeni, da če želite poslati sporočilo, ki je stisnjen
prek interneta ali v e-pošti ali podobno,
namesto z uporabo standardnih ASCII, lahko pošljete Huffman kodirano sporočilo
pri čemer, če želite poslati črko E, pošljete samo en bit.
Če želite poslati, pošljete 2 bitov, 01, namesto pošiljanja 8 bitov
sledi še 8 bitov sledi še 8 bitov in tako naprej.
Vendar pa je kavelj tukaj.
Ni dovolj, da samo zgraditi to drevo in nato začeli pošiljati od Alice Bob na
krajše bitni vzorec, niz iz ASCII,
Alice, ker ima tudi obvestiti Bob česa
Bob, če se bo lahko prebrali njeno stisnjen sporočilo?
[Neslišno študentski odziv] >> Kaj je to?
[Neslišno študentski odziv] >> Od kar je drevo.
Ali še natančneje, kaj ti kodiranja so
zlasti zato, ker v tej zgodbi smo naredili sodbo klic na enem mestu.
Ne pozabite, da smo morali samovoljno izbrati med 2 različnih 20% vozlišč?
Torej ni res, da lahko Janez, prejemnik, samo rekonstruirati drevo na svojo lastno
morda zato, ker bo ustvariti drevo vedno tako malo drugače od Alice.
Poleg tega Bob ne ve, kaj je izvirno sporočilo
ker edina stvar, Alice ga poslali, seveda, je stisnjen sporočilo.
>> Torej ulov s kompresijo, kot je to, da, ja, lahko Alice prihranite cel kup bitov
s pošiljanjem 1 za E in 01 za in tako naprej,
ampak ona ima tudi obvestiti Bob, kaj je preslikava med črkami in bitov
saj ni mogoče jasno sklicevati na samo ASCII več, če ne uporabljate ASCII.
Torej ona lahko bodisi pošlje mu nekako drevo -
zapisal, ga shranite kot binarnih podatkov ali nekaj takega -
ali pa mu poslal malo list goljufija, Excelove datoteke, ki prikazuje preslikave.
Tako je učinkovitost stiskanja res predpostavlja, da so sporočila, ki jih pošiljate
so precej veliki, vsaj srednje velika podjetja,
ker če boste super kratko sporočilo,
Če si želite poslati sporočilo BAD, ki se zgodi, da je beseda, ki jo lahko tukaj napiše,
B-D, ste verjetno, da bo uporabila manj bitov,
vendar pa je ulov je, če imate tudi obvestiti Bob, kaj je drevo
ali kaj ti kodiranja, ti boš verjetno odtehta vse prihranke
da imajo stisnjenih stvari za začetek.
Tako lahko bilo dejansko res, da če poskusite stiskanje
celo z nekaj podobnega formatih zip datoteko ali bi morali biti seznanjeni z -
zelo majhne datoteke, tudi prazne slike -
Včasih pa te datoteke dobili večji in ne manjši.
Ampak realno, da se zgodi samo za majhne velikosti datotek,
tako da to ne dogaja, da bi GB datoteka 2 gigabajta;
smo res govorimo bajte ali le nekaj kilobajtov.
>> Nekateri programi, kot zadrgo dovolj pameten, da zavedaš, da
"Ti boš, da bi porabili več bitov stiskanjem to."
"Naj se ne trudi se ga stisne za vas vse."
Torej je to le eden od načinov, potem stiskanje besedila.
Mi lahko izvajajo kaj takega v C.
Na primer, tukaj je, kako bi lahko predstavljajo vozlišče v tem drevesu
kjer imamo sloj simbola, plavajoče vrednost za frekvence,
in kot smo videli pri naših drugih podatkovnih struktur, 2 kazalci,
1 na levi otroka, 1 desno, bodisi od katerih je lahko NULL,
če pa ne, se nanaša na levi in ​​desni otroka otroka.
Torej, to je potem Huffmanovo kodiranje, in to je eden od načinov, da lahko greste o stiskanje podatkov,
in to je zagotovo ena izmed najbolj enostaven za izvedbo
v kontekstu, recimo, prejšnji teden podatkovnih struktur,
čeprav še bolj sofisticirane algoritme obstaja
da lahko naredimo še bolj dovršene mutacije vaših podatkov.
Vsa vprašanja potem na drevesih, binarnih dreves ali stiskanje besedila?
[Študent] Ali obstaja nekaj nejasnosti, kot če [neslišno] razdeli na 01,
potem bi bilo 011 dvoumno, kajne?
[Neslišno] >> Dobro vprašanje. Dvoumnost.
Naj povzamem, s sklicevanjem na to sliko tukaj.
Ker znaki pa so stiskanje, predstavništva,
po definiciji tega algoritma vedno ostanejo listi,
nikoli ne boste pomotoma uporabite isti vzorec bitov za predpono več pisem.
Torej, z drugimi besedami, ste zaskrbljeni, da se sliši kot, na dvoumnosti, ki izhajajo
po kateri se lahko 001 kot začetek B ali C ali začetek kaj podobnega.
Ampak to ne more biti tako, ker obvestilo, da vse črke abecede smo kodiranje
so na listi.
>> Dvoumnost lahko nastane le, kot v primeru Morse code,
Če, na primer, C je nekje na poti od korena do B.
[Študent] desno. Torej, v tem primeru torej ima 2 liste. Povejte >> ima - Reci to še enkrat.
[Študent] Povejte, da ima 2 liste, F in G, nato pa G - >> redu. Ampak ne morem.
Sama ne bi mogla listi F in G, ker ta pisma F in G
bi tudi sami pušča nekje na levi B ali pravice do E.
Torej po definiciji, morajo biti listi.
Sicer pa imaš popolnoma prav, jaz pa ne reši problema, ki se sooča Morsejeva abeceda.
Dobro vprašanje. Druga vprašanja? V redu.
Ta pojem bitov, se je izkazalo, da smo imeli moč ves čas, da smo dejansko ne uporablja
ko je šlo za manipulacijo te 0s in 1s.
Vprašali smo o tem na enem od prvih problematičnih skupin:
in sicer, kako si šel o pretvorbi velikih na male črke ali obratno?
Ali, bolj konkretno, eden od teh prvih psets prosil
koliko bitov si dejansko morali obrniti, da bi se spremenili v male črke a ali obratno?
Tukaj je kratek spomin, kaj 65 in 97 izgledal v binarno.
In čeprav je to vprašanje nekako zbledela v spominu,
lahko ponovno ogledate tukaj, da koliko bitov je treba zrcaljeno
sprememb kapitala v male? Samo eno.
>> So le razlikujejo po eni lokaciji, tretji bit na levi.
Ker je 010, nekaj je 011.
Tako nekako se moramo le lahko, da flip bit,
in potem bomo lahko izkoristili ali male črke.
Naredili smo to v preteklosti dejansko uporabljate, če pogoji
in preverjanje, če je črka med kapitalom in kapitalsko Z,
potem rezultati podobni - + 26 ali kaj podobnega.
Verjetno si naredil aritmetično spremembo črk abecede.
Kaj pa, če bi lahko samo flip, da je en košček?
Kako bi se lotili pri čemer vrednost enega bajta bitov, tako kot 8 bitov 01000001 01100001 in?
Če ste imeli te vzorce bitov, kako bomo šli o spreminjanju le ena od njih?
Kaj pa, če bomo predstavili v rumeni barvi, sem ta drugi vzorec bitov?
Če naredim celotno rumene niz 0S razen enega bita, ki ga želim spremeniti
in potem bom predstavil novega najemnika, znano kot upravljavec bitni -
bitni v smislu, da deluje na posameznih bitov,
ne na celotno bajt ali štiri bajte, vse na enkrat.
To je navpična vrstica v rumeni predlaga, da kaj pa če vzamemo zastopanosti kapitala
in bitni ali pa z rumeno zaporedje bitov?
Z drugimi besedami, mislim nazaj na našo razpravo o logičnih izrazov v Scratch, nato pa v C.
>> Narediti logičnim ali pomeni, da bi bilo res, ali je prva stvar je, da bi bilo res
ali druga stvar je, da bi bilo res, ali imata da bi bilo res,
in potem kar sama proizvodnja je res.
V tem primeru je tu, kaj dobimo, če vzamemo 0 "ali" ed z 0? Lažni ali napačna?
To je še vedno napačen, tako malih še vedno v skladu s pričakovanji.
Kaj če bi namesto naredimo 1 ali 0?
To je zdaj še 1, ampak obvestilo, kaj se bo zgodilo.
Če začnemo s kapitalom A in bomo še naprej "ali" njegove posamezne koščke, kot smo tukaj,
0 ali 1 rumena nam daje vse, kar sem? To nam daje 1.
Dejstvo je, recimo, da nismo vedeli, kaj velikimi različica malo dejansko bil.
Pojdimo to storiti. Naj premakniti nazaj sem.
Naredimo to še enkrat. 0 ali 0 0 mi daje.
1 ali 0 mi daje 1.
0 ali 1 mi daje 1.
0 ali 0 0 mi daje. Naslednji 1 0, naslednji 1 0, je naslednjič 0.
1 ali 0 mi daje 1.
In tudi če nismo vedeli vnaprej, kaj male bila
preprosto "ali" številke s tega vzorca bitov, da smo tukaj predstavljenih v rumeni barvi,
lahko male kapitalski z listanjem, da je malo.
Uporabili smo ta izraz tedni: lahkota malo.
Kako ste dejansko naredil načrtno?
Uporabite tisto, kar je splošno imenujemo masko, zaporedje bitov,
da v tem primeru prav tako se zgodi, da izgledajo kot to številko tukaj,
in potem "ali" da skupaj s to novo C operaterja,
ne | |, lahko uporabite eno | in bi dejansko dobil ta odgovor sem zakaj?
To je kraj, 1s, 2s mesto, 4S, 8s, 16s, 32s.
Tako se izkaže, da če ste vzeli črko in bitni ali pa celo z 32,
saj je celo 32, če gledate na to kot bitov, izgleda tako,
to pomeni, da lahko flip bit, da si dejansko želite.
In prav - pa bomo pogled na kodo čez nekaj trenutkov -
Recimo, da želimo iti v drugo smer.
>> Kako greste z malimi črkami od A do A kapitala? Kar malo je treba spremeniti?
To je ista.
Želimo spremeniti, da se 3. malo od 1 do 0.
In kako bi lahko šel o tem?
Kako izklopiti malo? S kakšnim vzorec bitov lahko zavijemo malo?
Kaj, če bi nekako obrnemo masko?
Ker pred tem, smo naredili celo rumeno masko 0s
razen enega bita smo želeli vklopiti,
Kaj pa če tokrat naredimo celotno masko 1s razen za malo, da želimo, da izklopite
nato pa operator, kaj?
Kaj pa, če mi "in" stvari? Oglejmo si.
Če bomo zdaj flip na to, recimo, da sem spet ustvarili masko, ki je vse 1s
razen za en bit, da sem želite izklopiti
in potem namesto "ali" bele številke do vrha z rumenimi številkami tukaj,
Kaj pa če namesto "in" oni skupaj? Imenuje bitni in.
Logično je, da je to ista stvar kot logičnim in.
To mi daje 0 & 1 je 0. Torej, napačne in res je napačen.
Res je, in res je res.
In tu je magija: pravimi in lažnimi, je zdaj napačen, zato smo izklopili ta del.
In zdaj ostali del zgodbe je nekoliko preprosta.
Ker preostali del maske je 1s, ni važno, kaj so številke v beli barvi.
Ko "in" nekaj, s drži, ne boš šel, da spremeni svojo vrednost.
Če je to res, bo to še vedno velja. Če je bila napačna, bo ostala lažna.
>> Vendar pa se zgodi čarovnija, ko ste vzeli nekaj, kar je res
in potem "in", je z napačne.
To ima za posledico, da izklopite bit.
Tako malo skrivnosten tam.
Poglejmo dejansko pogled na nekatere oznake, ki bi dejansko videti še bolj skrivnosten,
vendar pa si lahko ogledate tukaj na tolower.
Če gledam tolower, ki gre od kapitala v male črke,
Poglejmo, kako bi lahko izvajanje tega programa.
Tukaj je glavni, in to ne jemljete ukazni vrstici nekaj argumentov.
Jaz razglasitvi znakov c za pisma, ki si bo tip noter
I potem uporabite znano storiti, medtem ko zanke, da samo poskrbite, da si definitivno mi daje kapital
ali B ali C. .. Z, tako da mi dajo nekaj med in Z.
In zdaj, kaj počnem tukaj?
Jaz sem "ali" ing to z 0x20, ampak to je dejansko isto kot -
in se vrnemo na to v trenutku - 32.
Torej, še enkrat, 32 je ta vzorec bitov tukaj. Zakaj to vemo?
Samo pomislite nazaj v tednu 0.
To je kraj, 1s, 2s mesto, 4s, 8s, 16s, 32s mesto.
Torej, ta rumena število zgodi, da je 32.
Lahko pa se tako pismo char tukaj bitni "ali" To s dobesedno številko 32,
in kaj dobim nazaj? Napisane z malimi različica, ki zna.
Trenutek nazaj, čeprav sem izrazil to v drugačnem zapisu osnove.
Kaj je to pomenilo? >> [Študent] Šestnajstiški.
[Malan] To se zgodi, da predstavlja šestnajstiški.
Nismo se pogovarjali o šestnajstiški vse to veliko,
vendar je dejansko primeren v primerih, kot je ta.
>> Čeprav izgleda bolj zapletena in čeprav izgleda 20 in ne 32,
Izkazalo se je, da je pravzaprav zelo šestnajstiški zapis v bližini
ker v šestnajstiško vsako številko po 0x - in to ne pomeni nič;
To je samo človek konvencije, ki pravi, prihaja šestnajstiško število -
vsako od teh številk, 2, nato pa 0, lahko sami zastopani
z natanko 4 bitov.
Torej, če bomo to storili, naj odpre urejevalnik besedila, tukaj - čudno autocomplete -
če naredimo malo urejevalnik besedila tukaj, število 0x20 pomeni, tu je 4-bitno, tukaj je še 4 bitov.
Naredimo desnega 4 bite prvi.
0, kadar je zastopana s 4 bitov je kaj? Super enostavno. Samo vse 0s.
Tako kot 4 bitov 0s.
Kako si predstavlja 2? To je bilo nekaj časa, odkar smo to naredili, ampak to je 0100.
Torej, to je kraj, 1s, 2s je to mesto, potem pa ni važno, kaj drugi kraji so.
Z drugimi besedami, v šestnajstiškem bi lahko rekli 0x20,
če pa potem razmišljati o tem, kaj je 2 in kako se predstavlja v binarno,
kaj je 0 in kako je zastopana v binarno,
odgovori na ta vprašanja so to in to, oz.
Torej 0x20 zgodi, da predstavlja ta vzorec 8 bitov,
ki je ravno maska, ki smo želeli.
Torej, to je za zdaj le intelektualna vaja,
ampak realnost je v kodi, da je običajno bolj pogosto, da napišete konstante, kot je ta
v šestnajstiškem ker potem programer lahko relativno enostavno,
tudi če to zahteva nekaj papirja in svinčnik, ugotoviti, kaj je vzorec bitov je
saj ne moreš kar predstavljajo 0s in 1s običajno v kodi.
Ne moreš iti 00.010 in tako naprej.
>> Moraš izbrati decimalke ali šestnajstiški ali oktal ali drugi simboli.
Večina ljudi se nagibajo k izbrati šestnajstiški preprosto tako, da vsaka številka predstavlja 4 bitov
in lahko to storite hitro matematike.
In jaz bom mahal z roko v toupper, kar je skoraj enako, da izgleda skoraj enako.
Toupper zgodi, da uporaba ne na operaterja ali pa namesto tega tipa in df.
Kaj df predstavlja? df? Kdorkoli? >> [Študent] 255.
255? Ni 255. To bi bilo naslednje.
Bomo zapustiti tole je malo vaje.
Ampak, če greš od 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 in kaj potem pride za 9?
Mi smo nekako out decimalnih mest, vendar v šestnajstiškem kar pride po 9?
[Študent]. >> Torej, b, c, d.
Lahko ugotovimo, od tam kaj vzorec bitov d dejansko predstavlja.
In če ne bomo v matematiki, bomo videli, da je maska ​​lahko na koncu dobili nazaj enaka tem.
To je f, vse 1s, in to je d. Torej df pomeni, da masko. V redu.
In nenazadnje, ne da stvari dobro super, super tehnično,
ampak, da smo želeli napisati program, ki počne to.
Naj gredo naprej in da binarno, ki je program v datoteko z imenom binary.c.
In sedaj mi deluje binarno in mi ni negativno celo število.
Začnimo enostavno in vnesite 0.
To je zdaj program, ki izpiše celo število v svojem binarni predstavitvi.
Torej, če sem to igro znova in vnesite v samo 1, bi moral dobiti 32-bitni prikaz 1.
Če sem to spet z 2, bi jaz.
Če naredim 7 naj dobim nekaj 1s konec in tako naprej.
Izkazalo se je, da sem omenil zato, ker se nanašajo na poslovanje bitni
lahko dejansko narediti eno drugo stvar, kot dobro.
Ustvarite lahko te maske dinamično.
Oglejte si ta primer, ki vključuje enega končnega bitni operacij.
Tukaj je prvi del kode, poziv uporabniku za nekaj,
in vztraja, da se mi ne negativno celo število.
Torej, to je neke stare stvari v šoli.
Ampak tukaj je nekaj, kar je zanimivo.
>> Kako naj grem o tiskanju število v binarno?
Ponovil sem prvič od česa, kaj?
Kakšna je velikost notr Značilno je, vsaj v aparatu? >> [Študent] 4.
To je 4. Torej, 4 * 8 32 - 1 je 31.
Torej, če sem začel šteti od 31, ki predstavlja, se je izkazalo,
Samo konceptualno, 31.-bitne ali najvišji Da malo, kar je ta človek tukaj,
ker to se bo bit 0.
Torej, to je bit 01 bit ... 31.
Torej, kaj je ta koda počne?
Obvestilo ta zanka, čeprav izgleda skrivnosten, je samo ponavljanjem od 31 do 0. To je to.
Torej mora biti zanimiv del sedaj v teh 5 vrstic tukaj.
Obvestilo, da je v tej vrstici sem razglasitvi spremenljivko z imenom masko
da je v skladu z našo zgodbo o teh rumenih številk.
In potem, kaj je to delaš?
To je še en bitni subjekt, ki smo jih nismo videli, verjetno.
To je premik levo operaterja.
Ta operater to naredi.
Tu je številka 1, in če ne bom zapustil premik, premik v levo,
Kaj menite, da je učinek tem v tem posameznem 1?
Dobesedno se premikajo več.
Torej, če je število 1 je tisto, kar imate na levi strani in začnete z inicializacijo i do 31,
Kaj je to storil? To se dogaja, da se to številko 1 in se osredotočiti na to 31 mest tukaj.
In zato, ker je očitno ni drugih mest za njo,
ki bo privzeto nadomesti z 0s.
Torej boste začeli s številko 1, kar seveda izgleda takole -
in mi ga pripravijo tukaj v centru.
In potem, ko se premakne stvari na levo, ta človek v bistvu gre v to smer.
Toda takoj, ko je to storil, dobi 0 vpisati
Če premik ga drugič, gre v to smer in še 0 napolni noter
>> Si ga spet premika in potem se še 0 vpisati
Torej, če vam to stvar 1 << i 31 mest, boste na koncu dobili masko
da je 32 znakov, skrajno levo od katerih je 1,
vsi preostali, ki so 0.
In izkazalo se je, kot prahi, prenos številke na levi, kot je ta
Prav tako po naključju, in včasih priročno,
učinkuje tem, kaj to številko? >> [Študent] je debelejše.
Podvojitev ga, ker vsak od stebrov - 1s mesto, 2s mesto, 4s mesto,
8s mesto, 16s mesto - Povsod podvojitev kot greš na levi strani.
Oziroma, ko prestavite 1s boš končal podvojitev vrednosti števila.
Lahko na koncu delaš zanimive preobrazbe mest
S preusmeritvijo vse na ta način s pooblastili 2.
Torej, kako to deluje?
To potem mi daje masko, ki je vse 0s, razen za 1 v točno mesto sem jo želite,
in potem je to izraz, ki je bil ukraden iz toupper.c,
je preprosto rekel da je število n, ki si jih vnesli v,
"In" se s tem masko, kaj boš dobil?
Boš dobil 1, če obstaja 1 v tej prikriti lokaciji,
ali boš dobil 0, če ni.
In tako vse to program pa je dejansko ima zanko,
in ustvarja masko z 1 tukaj, potem pa 1 tukaj, potem pa sem 1,
in uporablja to bitni in trik reči, da je 1 bit na vhodu uporabnikov tukaj?
>> Ali obstaja 1 bit na vhodu uporabnikov tukaj? In če je tako, dobesedno tiskanje 1, sicer 0 natisniti.
Delamo to z ints samo zato, ker je to, zakaj delamo 32 bitov namesto 8,
ampak kaj smo potem uvedli to bitni in to bitni ALI
in ta levi premik operater, ki pogosto niso strašno pomoč,
vendar se je izkazalo, so lahko.
V bistvu, če ste bili, da so nekaj podobnega paleto Booleans
Samo, da predstavlja resničen ali neresničen, da ste želeli slediti ali ne
soba polna 300 študentov je prisotna,
bi lahko razglasi niz velikosti 300 tipa int, tako da boste dobili 300 bools,
in lahko nastavite na vsaki pravi, če je nekdo tu in lažno drugače.
Zakaj je to predstavništvo v tej strukturi podatkov neučinkovita?
Kaj je slabo načrtovanje te podatkovne strukture, polja od 300 bools?
Kaj je bool, v resnici, pod pokrovom?
Tudi to je nekaj, kar ne bi bilo znano.
Izkazalo se je, da ni int.
Ne pozabite, smo nekako ustvarjena, da se z cs50.h datoteke
ki sam po sebi vsebuje standard int.
C je malo neumno, čeprav, ko gre za int.
Uporablja 8 bitov za zastopanje vsak bool, ki je povsem potratno
saj je očitno, koliko bitov rabiš za zastopanje int? Samo 1.
Tako se izkaže, da če imate sedaj možnost z upravljavci bitni
vplivati ​​posamezne bite tudi v char, niti v enem samem bajtu,
Izkazalo se lahko zmanjša količino pomnilnika, potrebnega za zastopanje nekaj neumnega
tako, da je udeležba styled strukture podatkov s faktorjem 8..
Namesto z uporabo 8 bitov za zastopanje resničen ali neresničen, lahko dobesedno uporabite enega
z uporabo enega zloga za vsakih osem učencev v razredu
in preklapljanje 0-1 posameznih bitov z uporabo te vrste na nizki ravni trikov.
To je res odpravila do energije. Ali obstajajo vprašanja o bitni operacij?
>> Ja. >> [Študent] Ali obstaja izključna ali upravljavec?
Da. Tu je izključna ali subjekt, ki izgleda tako, ^, korenček simbol,
kar pomeni, da samo prvo stvar ali druga stvar je lahko 1 za izhod za 1.
Obstaja tudi ni ~, kar bo omogočilo, da obrniti 0 v 1 ali obratno, kot dobro.
In tam je tudi pravica premik operater >>, ki je nasprotno od tistega, ki smo ga videli.
V redu. Vzemimo stvari zdaj na višjo raven.
Začeli smo s pogovorom o besedilu in ga nato stisnili
in predstavlja besedilo s manjšem številu bitov;
smo se pogovarjali malo o tem, kako lahko zdaj začnete manipulira stvari na ravni bitni.
Pojdimo zdaj povečavo nazaj 10.000 metrov do zastopanja
za bolj zapletene stvari, kot so grafike.
Tukaj imamo pod zastavo Nemčije, tukaj imamo enega Franciji.
Ti so lahko zastopane v oblikah zapisa datotek, boste morda poznate - GIF, na primer.
Če ste že kdaj videli sliko na spletu, ki se konča. GIF,
To je Graphics Interchange Format.
Ti dve zastavi tukaj nekako mogoča stiskanje
Za kaj morda očitnega razloga? >> [Neslišno študentski odziv]
Obstaja veliko ponavljanja, kajne?
Za pošiljanje zastavo Nemčije, pomislite na to kot slika na zaslonu
nazaj v Scratch dni.
Morda se spomni, da obstaja posameznih točk ali pik, ki sestavljajo sliko.
>> Tam je celotna vrsta črnih pik in drugi cele vrste črnih pik.
Obstaja kup vrstic črnih pik, da smo lahko videli, če bomo res povečani,
zelo všeč, ko smo povečujete na obrazu oropal v Photoshop.
Takoj ko smo dobili globlje in globlje in globlje v sliko,
ste začeli videnje pixelation, vse kvadratov, ki sestavljajo njegovo pozornost v tej zadevi.
Enako se ukvarjajo tukaj. Če bomo povečani zelo malo, bi videli posamezne pike.
No, to je neke vrste odpadkov bitov.
Če tretjino zastave je črn in tretjino zastave je rumena in tako naprej,
zakaj ne moremo nekako stisniti to zastavo?
In mogoče tudi francosko zastavo stisnjen čeprav vzorec je nekoliko drugačen.
Izkazalo se je datoteka GIF je lossless format kompresije,
kar pomeni, da lahko sliko, kot je nemška zastava tukaj,
lahko mečejo veliko njegovih bitov brez žrtvovanja kakovosti.
To je v nasprotju z nekaj podobnega JPEG,
, s katero je večina od nas verjetno bolje pozna.
Facebook in Flickr fotografije fotografije in podobno
so skoraj vedno shranijo kot JPEG, ko si naložil, da,
ampak JPEG je izgubno - Trošenje format - pri čemer ti mečejo bitov
ampak tudi mečejo kakovosti.
In tako, če obkladek fotografije z Photoshop ali jih naložite na Facebook
ali pri njih na zelo crappy telefon,
Veš, da je slika začne, da bi dobili zelo Umrljan in pixelated,
in da je zato, ker je se stisne računalnika ali telefona
jih dobesedno vrgel proč informacij.
Ampak GIF je neverjetno, v tem, da lahko uporabljajo manjše koščke, kot bi jih lahko privzeto
ne da bi izgubili vse podatke.
>> In to v bistvu počne, kot sledi.
Namesto trgovini v datoteki, kot je na BMP bi RGB trojno za črna, črna, črna, črna,
črna, črna, črna, črna, črna, črna, črna, črna in tako naprej,
namesto tega je format GIF bo rekel, "Black"
in potem: "To ponovite 100-krat," ali nekaj takega.
"Črna, ponovite 100-krat, črna, ponovite 100-krat ..."
"Rumena, ponovite 100-krat."
In tako se spominja, v bistvu skrajno levo pixel
in potem kodira nekako pojem ponavljanje, da je piko znova in znova.
Tako lahko GIF, nato se stisne, ne da bi izgubili vse podatke.
Toda če bi moral ugibati, če je algoritem, ki Gif uporabo,
katera od teh zastav, čeprav so videti enake velikosti,
bo manjša, če se posname na disk kot GIF? >> [Študent] Nemčija.
Nemčija bo manjša? Zakaj?
[Študentskih] Ker si ponovitev veliko, veliko krat vodoravno
in nato ponovite še čas. >> Točno tako.
Ker so ljudje, ki so izumili GIF nekako odločil za samovoljno
da bo ponovitev vzvod vodoravno in ne vstran.
Tam je veliko več ponovitev bočno tukaj v nemški zastavi kot v francosko zastavo.
Torej, če smo dejansko odprli mapo na mojem trdem disku, ki je te GIF,
lahko dejansko videli, da je nemška zastava tu 2 kilobajtov in francoski ena 4 kilobajtov.
To se zgodi, da je naključje, da je ena dvakrat drugi,
ampak to je dejansko res, da je francosko zastavo veliko večji.
>> Čeprav smo tukaj govorimo o grafiki, te iste ideje uporablja
ne stvari, kot so zastave, ampak slike, ki so malo bolj zapletena.
Če ste vzeli sliko jabolka, zagotovo obstaja veliko podvajanja tam,
tako da smo nekako ne pozabite, da je privzeto ozadje modra
in ne, kot desna slika kaže,
zapomniti barvo vsakega posameznega piksla na sliki.
Tako smo lahko vrgel koščke stran pa ne da bi izgubili podatke.
Jabolko še vedno izgleda enako.
V tem primeru je tu, lahko vidite, kaj se zgodi v filmu.
Ti so stari filmski šoli koluti, s katerim v zgornji sliki tam
imate RV vožnji mimo hiše in drevesa.
In kot da vozi mimo van od leve proti desni, kar se seveda ne spreminja?
Hiša se ne grem nikamor, drevo pa ne gre nikamor.
Edina stvar, ki se premika, je van v tej zadevi.
Tako kot ozadje Nespremenjen pove, kaj lahko storite v filmih
Podobno se vržemo proč informacije, ki se ne spreminja v času med okvirji.
To je splošno znano kot stiskanje interframe
pri čemer, če je ta okvir izgleda skoraj identično tej,
naj ne moti shranjevanje na disku koli enake informacije
o teh vmesnih okvirjev, greva samo uporabo ključnih okvirjev vsake toliko časa
ki dejansko shrani te informacije redundantly prav tako malo duševno zdravje preverite.
>> Nasprotno, drugačen pristop k stiskanje video je v tem drugem in spodnji primer tukaj,
kjer namesto trgovine 30 slik, zakaj preprosto ne hranite 15 sličic na sekundo namesto tega?
Namesto filma vrste teče lepo, odlično,
je morda videti, kot da je jecljanje malo, malo stara šola,
vendar bo neto učinek je v uporabi veliko manj bitov, kot bi sicer lahko bili potrebni.
Torej, če ne to potem pusti nas?
To je bilo malo na stran, kje še lahko greš s stiskanjem.
Za več informacij o tem, da razred, kot CS175 tukaj.
Tu je še en primer, v videu.
Če čebela je edina stvar, ki se gibljejo,
lahko res vrgel proč informacije v teh okvirih srednjih
ker cvet in nebo in listi se ne spreminja.
Ampak kaj je zdaj preučiti še zadnjo stvar.
V naslednjih 5 minut pustimo za sabo C vedno v predavanju? Da. Ne v psets, čeprav.
Zadnja zgodba o C, nato pa pridemo do zelo seksi stvari
vključujejo HTML in interneta woo-hoo. V redu.
Pa gremo. To je motivacija.
Izkazalo se je ves ta čas, ko smo bili pisanje programov Vodimo Jek.
In Jek, je dejal, da smo po prvem tednu zelo veliko, meni izvorno kodo
in ga pretvori v objektni kodi.
To traja C in jo pretvori v 0s in 1s.
Sem nekako je lagal za nekaj tednov, saj to ni tako enostavno, kot to.
>> Tam je veliko več dogaja pod pokrovom motorja, ko zaženete program, kot je Jek.
V bistvu, lahko proces priprave programa, res je mogoče povzeti,
kot ste morda spomnite iz video Rob o prevajalniki,
v teh 4 korakih: predobdelava, se sestavljanje, montaža in povezovanje.
Vendar pa smo v razredu in večina ljudi na svetu običajno povzame vse te korake
kot le "zbiranje".
Ampak, če začnemo z izvorno kodo, kot je ta, spomnim je to morda najpreprostejši C program
smo napisal doslej, opozarjajo, da pri zbiranju se konča videti takole.
Ampak tam je pravzaprav vmesni korak, in ti ukrepi so naslednji.
Najprej je tu ta stvar na sam vrh seznama in večina naših programov,
# Vključujejo
Kaj # include ne za nas?
To zal veliko kopij in prilepi vsebino stdio.h v moje datoteke, tako da, zakaj?
Zakaj me briga o vsebini stdio.h? Kaj je tam zanimivega?
Printf izjavo, njen prototip, tako da prevajalnik potem ve, kaj mislim
Ko sem omenil to funkcijo printf.
Torej, korak 1 v pripravi, je pred-obdelavo, pri čemer program, kot Jek
ali nekaj pomočnik program, ki prihaja z Jek bere svojo kodo vrha do dna,
od leve proti desni in kadarkoli vidi # simbol, ki mu sledi ključna beseda, kot vključujejo,
opravlja to operacijo, kopiranje in lepljenje v tem primeru stdio.h v datoteki.
To je korak 1.
Potem imate veliko večji C datoteke zaradi velikega kopiranje, lepljenje novih delovnih mest, ki je pravkar zgodilo.
>> 2. korak: zdaj se pripravi.
Vendar se je izkazalo zbiranje meni izvorno kodo, ki je videti takole
in jo spremeni v nekaj, kar je videti tako,
ki je za tiste, ki poznajo poklical? >> [Študent] skupščine. Skupščina >> jezik.
To je pravzaprav nekaj, če jemljete CS61 boste lahko potopite v bolj podrobno.
To je skoraj tako blizu, kot lahko dobite za pisanje 0s in 1s se
ampak pisanje stvari na tak način, da se še vedno naredi vsaj malo občutka.
To so navodila za stroj, in če se pomaknite navzdol do glavne funkcije tukaj,
opazite, da je ta pritisk navodilo, premaknite pouk, pouk odštevanje,
pokličite pouk, in tako naprej.
Ko slišite, da ima računalnik Intel Inside
imate procesor Intel v vašem Mac ali PC, kaj to pomeni?
Procesor prihaja zgradili podjetij, kot so Intel razumevanje določena navodila.
Nimajo pojma, kaj funkcije, kot so zamenjave ali glavni per se,
ampak oni vedo, kaj zelo nizko stopnjo navodila, kot so seštevanje, odštevanje, potiskanje,
premakniti, klic, in tako naprej so.
Torej, ko se zbere C kodo v zbirnem jeziku,
vaš zelo uporabniku prijazen usmerjena koda pretvori v nekaj, kar je videti tako,
ki dobesedno premika bajtov ali 4 bajte okrog v tako majhnih enot v in iz CPU.
Ampak na koncu, ko Jek je pripravljena prevzeti to predstavitev vašega programa
v 0s in 1s, nato pa korak se imenuje montaža zgodi,
in še enkrat vse se zgodi v hipu, ko teče Jek.
Začeli smo tu, da oddaja datoteko, kot je ta, nato pa jo pretvori v teh 0s in 1s.
In če želite, da se vrnete na neki točki in dejansko videti v akciji,
če grem v hello1.c--to je eden od prvih programov smo pogledal na -
običajno želimo pripraviti to z hello1.c Jek in to bi nam a.out.
Če je nasprotno namesto tega ji dajejo-S zastavo, kar boste dobili, je hello1.s
in boste dejansko videli zbirni jezik.
>> To delam že zelo kratkem programu, če pa greš nazaj za Scramble
ali obnovitev ali kateri koli program, ki ste jih napisal in samo iz radovednosti
želite videti, kaj se dejansko izgleda, je tisto, kar se dejansko vnašajo v CPU,
lahko uporabite, da-S zastavo z Jek.
Ampak potem na koncu, tam je še vedno ena te.
Tu so 0s in 1s, da zastopa moje izvajanje Pozdravljen svet.
Ampak sem nekoga drugega funkcijo v mojem programu.
Torej, čeprav je bil postopek vzamem hello.c,
da dobi zbrane v zbirniku, in potem se je sestavljen v 0s in 1s,
samo 0 in 1s, da so izhodne v tem trenutku
so tisti, ki so posledica mojo kodo.
Toda tisti, ki je napisal printf so sestavili svojo kodo pred 20 leti
in je sedaj nameščen nekje na napravi,
tako da smo nekako morali združiti njegove 0 in 1 sekundo z mojo 0s in 1s,
in to nas pripelje do 4. in zadnji korak v pripravi, znan kot povezovanje.
Torej, na levi strani imamo povsem enako sliko kot pred:
hello.c postane montažo koda postane 0s in 1s.
Ampak spomnim, da sem uporabil standardno I / O knjižnici v moji kodo,
kar pomeni, da nekje na računalniku, obstaja datoteka z imenom stdio.c
ali vsaj zbrati različica, ker je nekdo pred nekaj leti
zbrati stdio.c v zbirniku in potem cel kup 0s in 1s.
To je tisto, kar je znano kot statični ali dinamični knjižnici.
To je nekaj datotek sedi nekje v napravi.
>> Ampak na koncu, moram opraviti svoje 0s in 1s in 0s te osebe in 1s
in nekako povežejo skupaj, dobesedno kombinirate 0s in 1s
v eno samo datoteko z imenom a.out ali hello1 ali karkoli sem poklical moj program
tako da je končni rezultat je vse od 1s in 0s, da sestavljajo moj program.
Torej vsem tem času ta semester, ko ste uporabljali Jek
in še bolj v zadnjem času izvaja bo, da bi prost Jek,
vse te korake se dogajajo nekakšnega takoj, vendar zelo premišljeno.
In tako, če boste še naprej v računalništvu, in sicer CS61,
To je plast, da boste še naprej lupine nazaj dol tam
govorimo o učinkovitosti, varnosti in posledice, kot so te nižje ravni podrobnosti.
Ampak s tem, da smo na odhod C zadaj.
Gremo naprej in vzamemo 5-minutni odmor zdaj,
in ko smo prišli nazaj: Internet.
V redu. Mi smo nazaj.
Zdaj smo začeli naš pogled ne le na HTML, saj, kot boste videli,
HTML sama je pravzaprav zelo preprost
ampak res na spletnem programiranju bolj na splošno, mreženje na splošno
in kako vse te tehnologije srečajo
, ki nam omogočajo, da ustvarite bolj zapletene programe na vrhu interneta
kot doslej smo uspeli v teh črnih in belih oken.
Dejansko je v tem trenutku v polletju, čeprav bomo porabili precej manj časa
na PHP, HTML, CSS, JavaScript, SQL in še več,
večina študentov ne končajo tem končne projekte, ki so spletno
saj, kot boste videli, ozadje imate zdaj v C
je zelo primerno za ta višji ravni jezikih.
>> In ko začneš razmišljati o svoji končni projekt,
ki, podobno kot Set Problem 0, kjer so spodbujali si
storiti skoraj karkoli od vas zanima v Scratch,
Končni projekt je vaša priložnost, da svoje novo pridobljeno znanje in zdrava pamet s C
ali PHP ali JavaScript ali podobno ven za spin
in ustvarite svoj kos programske opreme za svet za prikaz.
In tebi semena z idejami, vedo, da se lahko odpravite tukaj, projects.cs50.net.
Vsako leto smo zbirati ideje iz univerzitetne predavatelje in osebje in študentske skupine na univerzi
samo, da predložijo svoje ideje za zanimive stvari, ki bi jih lahko rešili z uporabo računalnikov,
z uporabo spletnih strani, ki uporabljajo programsko opremo.
Torej, če ste borijo da bi prišli do zamisli o svojem,
Z vsemi sredstvi pomikanje po zamisli je od letos in zadnje.
To je popolnoma v redu za reševanje projekt, ki se je spoprijel prej.
Videli smo številne aplikacije za videnje položaja perila na univerzi,
številne aplikacije za navigacijo meni, jedilnici,
številne aplikacije za navigacijo tečaja katalog in podobno.
In res, v prihodnjem predavanju in v prihodnjih seminarjev,
vam bomo predstavili nekaj javno dostopnih API, tako komercialno dostopna
kakor tudi tukaj na voljo CS50 na univerzi, tako da imate dostop do podatkov
in lahko naredite nekaj zanimivih stvari z njim.
Torej, več o končnih projektov v nekaj dneh, ko smo sprostite specifikacijo,
vendar za zdaj, vem, da boste lahko delali samostojno ali z enim ali dvema prijateljema
na večini kakršen koli projekt, ki vas zanima.
Internet.
Ti pojdi naprej in potegnite prenosni računalnik, greš na facebook.com prvič,
da ni prijavljen v zadnjem času, in pritisnite tipko Enter. Kaj točno se je zgodilo?
>> Ko zadeti nastopiti na vašem računalniku, cel kup koraki
začetek neke vrste čudežno dogaja.
Torej si tukaj na levi, spletni strežnik, kot so Facebook, je tukaj na desni strani,
in nekako boste uporabljali ta jezik, imenovan HTTP Hypertext Transfer Protocol.
HTTP ni programski jezik. To je več od protokola.
To je skupek konvencij, da spletni brskalniki in spletnih strežnikov uporabijo, ko prehajajo.
In kaj to pomeni, je, kot sledi.
Podobno kot v resničnem svetu, imamo te konvencije
če ste dosegli nekaj človeka prvič, če vas ne moti me humoring tukaj
Morda bom prišel do tebe, rekel: "Zdravo, moje ime je David." >> Zdravo, David. Moje ime je Sammy.
"Zdravo, David. Moje ime je Sammy."
Torej, zdaj smo pravkar ukvarjajo s to vrsto neumne ljudi protokola
kjer sem začel protokol je Sammy odgovorila,
smo pretrese roke, in posel je končan.
HTTP je zelo podobno v duhu.
Ko se vaše želje spletnega brskalnika www.facebook.com,
kaj ima vaš brskalnik res delaš širi svojo roko, tako rekoč,
na strežnik in to je da mu je poslala sporočilo.
In to sporočilo je ponavadi nekaj podobnega dobil - kaj želite? -
me domačo stran, ki je običajno označen z eno poševnico na koncu URL-ja.
In samo da veš, kateri jezik govorim, jaz brskalnik bom povedal,
da govorim HTTP različice 1.1,
In tudi za dobro mero, bom povedal, da je gostitelj, ki ga želim domačo stran
je facebook.com.
Značilno je, da spletni brskalnik, nevede vas, ljudi,
to sporočilo pošlje prek interneta, ko preprosto vpišite www.facebook.com,
>> Vnesite, v svoj brskalnik.
In kaj Facebook odzval s?
Odziva se z nekaj podobnega videza Grobni informacij, ampak tudi veliko več.
Naj gredo naprej na domačo stran Facebook je tukaj.
To je zaslon, da je večina od nas verjetno nikoli videli, če boste ostali prijavljeni ves čas,
ampak to je res njihova spletna stran.
Če to storimo v Chrome, opazili, da lahko dvigni te male menije konteksta.
Uporaba Chrome, ali na Mac OS, Windows, Linux ali kaj podobnega,
če Nadzor klik ali levi klik, lahko običajno dvigni meni, da je videti takole,
kjer je nekaj možnosti čakajo, od katerih je ena View Page Source.
Lahko tudi tipično za te stvari, ki jih bo na meniju Pogled in poking okoli.
Na primer, tukaj pod pogled Developer je ista stvar.
Grem, da gredo naprej in si oglejte Stran za ogled vira.
Kaj boste videli, HTML, da je Mark napisal, da predstavlja facebook.com.
To je popolna zmešnjava tukaj, pa bomo videli, da to naredi malo bolj smiselno kmalu.
Vendar pa obstajajo nekateri vzorci tukaj. Naj se pomaknite navzdol, da stvari, kot je ta.
To je težko za ljudi, da se glasi, ampak obvestilo, da je ta vzorec kotne oklepaje
s ključnimi besedami, kot so opcije, ključne besede, kot so vrednosti, ki kotirajo na nekatere strune.
To je, če, ko ste se prijavili za zelo prvič, iz katere je tvoje leto rojstva.
To spustnem rojstva letih je nekako kodiran tukaj
V tem jeziku se imenuje HTML, HyperText Markup Language.
Z drugimi besedami, če vaš brskalnik zahteva spletno stran,
govori to konvencijo, imenovano HTTP.
Toda kaj facebook.com odgovor na to zahtevo z?
>> Odziva se z nekaterimi od teh Grobni sporočil, kot bomo videli v trenutku.
Toda večino svojega odgovora v obliki HTML, HyperText Markup Language.
To je dejansko jezik, v katerem je napisana spletna stran.
In kaj je spletni brskalnik, res pa je, da po prejemu nekaj, kar je videti tako,
prebere od zgoraj navzdol, od leve proti desni, in kadar koli se mu zdi ena od teh kotne oklepaje
sledi ključna beseda, kot je možnost, da se prikaže, da je označevalni jezik za ustrezen način.
V tem primeru bi bilo prikazati spustni meni let.
Ampak spet, to je popolna zmeda gledati.
To ni zato, ker Facebook razvijalci manifest 0 za 5 stila, na primer.
To je zato, ker večino kode, ki jih pišejo, je v resnici napisal lepo,
dobro komentiral, lepo razgibana in podobno,
ampak seveda strojev, računalnikov, brskalniki res ne briga
ali je vaša koda je dobro opremljen.
In v resnici je popolnoma potratno zadeti tipko TAB vse tiste čase
in naj pripomb vse skozi svojo kodo in izbrati res opisna imena spremenljivk
ker če brskalnik ne skrbi, vse ti gre na koncu dneva se zapravlja bajte.
>> Tako se izkaže, kaj je večina spletnih strani storiti, je, čeprav je izvorna koda za facebook.com,
za cs50.net in vseh teh drugih spletnih strani na internetu
so praviloma dobro napisana in dobro komentiral in lepo razgibana in podobno,
Običajno pred spletno dal na internet, je minified koda
pri čemer je HTML in CSS - nekaj drugega, da bomo kmalu videli -
kode JavaScript, da bomo kmalu videli je stisnjen,
pri čemer dolgi imeni spremenljivk postane X in Y in Z,
in vse te presledki, da naredi vse, kar si tako berljivo vse vrže proč,
ker če pomislite, da na ta način, Facebook dobi milijardo stran zadetkov na dan -
nekaj norega kot je ta - pa kaj, če programer samo, da je analni
hit preslednico še en čas samo za alinea nekaj kode še toliko več?
Kaj posledice, če Facebook ohranja, da presledkov
v vseh bajtov jih poslali nazaj na ljudi na internetu?
S pritiskom na preslednico, ko vam daje dodatno bajt v datoteki.
In če milijarda ljudi, nato nadaljuje, da prenesete domačo stran tisti dan,
koliko več podatkov, ki so jih prenaša preko interneta?
GB brez pravega razloga.
In odobrena za veliko spletnih strani, to ni tako prilagodljiva vprašanje,
ampak za Facebook za Google, nekatere od najbolj priljubljenih spletnih strani
obstaja velika spodbuda, da bo vaše finančno koda izgledati nered
tako da boste uporabljali kot nekaj bajtov, kot je mogoče poleg potem stisniti
z uporabo nekaj podobnega zadrgo, algoritem se imenuje gzip,
da brskalnik ne za vas samodejno. Ampak to je grozno.
Nikoli ne bomo izvedeli kaj o drugih ljudi spletnih strani in kako oblikovati spletne strani
Če moramo gledati na to, kot je ta.
>> Torej, na srečo, kot so brskalniki Chrome in IE in Firefox v teh dneh
običajno prihajajo z vgrajeno v razvojnih orodij.
V bistvu, če grem dol, da preverite, ali element, če grem Poglej, razvijalcem,
in pojdite na Orodja za razvijalce eksplicitno,
To okno na dnu mojega zaslona, ​​zdaj izskoči.
To je malo zastrašujoče na prvi, ker tam je veliko neznanih kartic tukaj
ampak če sem kliknite na elemente vso pot na spodnji levi strani,
Chrome je očitno zelo pameten. To zna razložiti vse te kode.
In kaj počne Chrome je počisti vse HTML je Facebook.
Kljub temu, da ni presledkov tam, ni zamik tam,
zdaj opazil, da sem lahko začela pluti to spletno stran še toliko bolj hierarhično.
Izkazalo se je, da bi morala vsaka spletna stran napisana v jeziku, ki se imenuje HTML5 začeti s tem,
To DOCTYPE izjavo, tako rekoč: <! DOCTYPE html>
To je nekako svetlo siva in tam, ampak to je prva vrstica kode v tej datoteki,
in da samo pove, brskalnik, "Hej, tukaj prihaja nekaj HTML5. Prihaja spletno stran."
Prvi oklepaj tistega, ki se zgodi, da je to stvar, oklepaj HTML tag,
in potem, če sem se potopite v globlje - te puščice so popolnoma brez pomena;
so samo zaradi Predstavitev je, da niso dejansko v spisu -
opazite, da je notranjost HTML oznake Facebook, karkoli, ki se začne z odprtjem
in je nato besedo imenujemo oznako.
Tako znotraj oznake HTML je očitno glavo tag in telo tag.
Znotraj glavo tag je zdaj celoten kaos na Facebooku
zato, ker imajo veliko metapodatkov in drugih stvari, za trženje in oglaševanje.
>> Ampak, če se pomaknite dol, dol, dol, dol, da vidimo, kje je. Tukaj je.
Ta je vsaj nekoliko pozna.
Naslov domače strani Facebook je, če si kdaj pogledaš na kartici v vašem naslovni vrstici,
Dobrodošli je na Facebooku - Prijava, da se prijavite ali Več o tem.
To je tisto, kar boste videli v naslovni vrstici brskalnika Chrome,
in to je, kako se je predstavljala v kodi.
Če odmislimo vse ostalo v glavi, večina drobovje spletni strani, so se v telesu
in se izkaže, da je koda Facebook bo videti bolj zapleteno
kot večina stvari bomo napisali sprva samo zato, ker je bila zgrajena v zadnjih letih,
vendar pa je cel kup skript oznak, JavaScript kode,
ki omogoča spletna stran zelo interaktivna:
videl stanje posodobitve takoj uporabo jezikov, kot so JavaScript.
Tukaj je nekaj, kar ti div, ki je delitev strani.
Toda preden bomo prišli do te podrobnosti, poskusimo za pomanjšanje
in pogled na preprostejšo različico Facebook 1,0, če se tako izrazim.
Tukaj je zdravo, svet spletnih strani.
To je, da DOCTYPE izjavo na vrhu
, ki je malo drugačna od vsega drugega.
Nič drugega nam pišite na spletni strani, se bo začela z <! razen tega vrstico
in razen za nekaj, kar ti komentarji v HTML.
Toda za večino del, vse na spletni strani, je oklepaj, ključne besede, zaklepaj.
>> V tem primeru si lahko ogledate najpreprostejši spletnih strani mogoče.
Oznako HTML vsebuje oznako glavo in telo vsebuje oznako,
ampak obvestilo, da je ta pojem zagon in ustavitev oznake.
To je začetna oznaka za HTML, to je blizu oznake ali končna oznaka.
Obvestilo, da so si nekako nasprotij v tem smislu, da je blizu oznake ali končna oznaka
to poševnico znotraj sebe.
Medtem pa je odprta glava tag tu in zapri glavo tag tukaj.
>> Tam je odprt naslov in tesno naslov tag tukaj.
Dejstvo, da sem dal naslov v eni vrstici, povsem samovoljno.
Je bilo videti, kot bi bilo primerno lepo v eno vrstico, tako da ni motilo, pritisnemo Enter nekajkrat.
Medtem, telo sem alinee le, da je vedno tako jasna.
Vedite, da je HTML zelo neumen jezik.
V bistvu, nazaj v dan, preden je bilo WYSIWYG uredniki
in Microsoft Word, kjer lahko rečeš: "Naredite mi to krepko, da bi to poąevne"
, ki bi jih dejansko vnesete malo ukaze v esejih 20 + let
pri čemer bi rekli, "Start bi to krepko. delajte to krepko."
"Start bi to besedilo, ležeče. Ne delajte tega besedila so poąevne."
>> To je tisto, HTML ali katero koli označevalni jezik je.
Ta prva oznaka reče: "Hej, brskalnik. Prihaja nekaj HTML."
Naslednji tag pravi: "Hej, brskalnik. Prihaja glavo, glavi moji spletni strani."
"Hej, brskalnik. Prihaja naslov."
In potem sem "Hej, brskalnik. To je to za ta naziv."
Torej, to je, kako brskalnik ve, da ne bo več prikazal več znakov, kot zdravo, svet
V naslovni vrstici.
Medtem, ta pravi: "To je to v glavo."
Ta pravi: "Prihaja telo Tu je dejansko telo." - Dobesedno, besede halo, svet.
In to tukaj piše: "To je to za telo. To je to za HTML."
Torej brskalniki so precej neumno.
So samo brati te stvari od zgoraj navzdol, od leve proti desni in to točno tisto, kar so jim povedali, da ne.
Kaj je dejansko naredil malo primer tukaj.
Naj odprejo najpreprostejši programov na mojem računalniku Mac tukaj, in sicer TextEdit.
V sistemu Windows lahko uporabite Notepad.exe.
Ampak to je vse, kar potrebujete za začetek oblikovanja spletnih strani.
Grem naprej in samo kopirajte in prilepite kodo v to datoteko.
Grem, da gredo naprej in ga shranite na mojem namizju,
in bom shranite kot hello.html,
in zdaj je datoteka z imenom hello.html.
Tukaj je na mojem namizju.
Naj gre zdaj v brskalnik in povlecite datoteko v brskalniku.
In voila, tukaj je moja prva spletna stran.
Obvestilo, da je naslov na kartici je zdravo, svetovni kot na naslovu tag,
in obvestilo, da je zdravo, svet je organ moji spletni strani,
in woo-hoo, sem na internetu.
>> Jaz nisem, prav, saj je ta datoteka ne na internetu.
To se zgodi, da je na moji lokalni trdi disk, pri tej poti.
Toda ideja je ista. Vse, kar zdaj potrebujemo, je spletni strežnik, ki ga naložite.
Ampak najprej kaj je dejansko uvedla malo več kompleksnost in malo več stilizacije.
To je preprosta, če je dolgočasen, spletna stran.
Izkazalo se je, da so druge vrste oznak lahko uporabite.
Na primer, tu v rumeni barvi, sem uvedel novo oznako 2.
Ne bomo se več igrati s temi danes, ampak obvestilo, da link tag
nekako je videti drugačen od vsega drugega.
Povezava tag vzame, kar imenujemo atributi,
in atribut je nekaj, kar vpliva na obnašanje oznako.
V tem primeru to ni najboljša izbira imen, zvez, saj je kar nekako brez pomena,
vendar ta link tag pravi, da v bistvu tudi datoteko z imenom styles.css znotraj moji spletni strani.
Si lahko zamislite, da je to podobno C je # include direktivo.
Styles.css se nanaša na povsem drugem jeziku, da ne bomo igrali z današnjim dnem
vendar je za estetiko: velikost pisave, barve, oblazinjenje, vtiskovanje, marže,
in vse te vrste podrobno estetike.
Medtem script tag je funkcionalno podobna,
vendar ne sodita CSS, da se jezik, pa tudi drug jezik, JavaScript.
Torej, z drugimi besedami, s temi oznakami 2 bom sčasoma lahko napisali svojo spletno stran
ampak tudi potegnite v kodeksu, ki je jaz ali kdo drug napisal
tako da lahko stojimo na ramenih drugih ljudi, lahko vadimo dober dizajn
faktoring iz skupne kode.
Če imam 10 različnih spletnih strani, to pomeni, da nekateri moji estetike
je lahko vključeno ven, podobno kot # vključujejo v ločeno datoteko.
Torej smo tam dobili.
Toda kaj je dejansko najprej narediti nekaj bolj zanimivega s to datoteko.
>> Še enkrat, to je samo TextEdit. Nisem tehnično na internetu še ni, vendar bomo prišli tja.
Želel bi, da bi zdravo, svet nekoliko drznejši kot je.
Torej zdravo, kaj je rekel samovoljno za krepko.
Spet zgodba je enaka: Pozdravljeni, vejica, začeli delati to krepko,
potem se svet natisnjeni v krepkem tisku, in to pomeni prenehala tiskati to krepko.
Naj gredo naprej in shranite svojo datoteko, pojdite nazaj na Chrome, bom povečate tako, da lahko vidimo, da je bolje,
in osveži, pa boste videli, da je svet zdaj krepko.
Internet je vse o hiperpovezave, tako da gremo naprej in to je to:
moja najljubša spletna stran je, recimo, youtube.com.
Razen, osvežite. Ok. Tukaj je nekaj težav zdaj poleg hideousness spletne strani.
1, sem prepričan, da sem zadeti nastopiti tukaj. In sem.
Ne samo pritisnite tipko Enter, sem tudi zamaknjena, vadil kar smo pridiga o slogu,
ampak moja je tik svetu.
Torej, zakaj je to? Brskalniki samo to, kar si povedal, da storijo.
Nisem rekel, da brskalnik, "Break proge tukaj. Vstavite odstavek prekinil tukaj."
Torej brskalnika, ni važno, če sem udaril Prikaz 30 krat,
to je še vedno tekoč, da dam zraven svetu.
Kaj res moram tukaj narediti, je reči kaj takega , vstavite prelom vrstice.
>> In dejansko, prelom vrstice je nekako čudna stvar
zato, ker si ne morem začnejo premikati v drugo vrstico, nato pa naredite nekaj,
in potem stop selitev v novo vrstico. To je neke vrste atomske operacije.
Ali ga naredili ali ne. Vi pritisnite tipko Enter ali pa ne.
Torej br je malce drugačno oznako, zato moram nekako tako odprta in zapreti
vse naenkrat.
Skladnja za to je to.
Tehnično bi lahko naredil kaj takega v nekaterih različicah HTML,
ampak to je neumno, ker ni razloga za vklop in izklop nekaj
če lahko namesto narediti vse naenkrat.
Zavedaj se, da HTML5 izrecno ne zahtevajo takšne poševnice,
Tako boste videli, učbenike in spletne vire, ki ga nimajo,
ampak za dober ukrep dajmo vaditi simetrijo, ki smo jih videli do sedaj.
To pomeni, da je oznaka tako odpirajo in zapirajo.
Torej, zdaj mi rešil sliko, pojdi nazaj.
Ok, tako da je začel iskati boljše, razen na spletu vem, je nekako klikniti,
in še youtube tu ne zdi, da vodi v nič.
To je zato, ker, čeprav je videti kot povezavo, brskalnik ne veš, da sam po sebi
tako da moram povedati, da je to brskalnik link.
>> Način za to je, da uporabite sidro oznako:
<A href za hiper odločbe, ki je stara šola besedami povezavo,
= "Http://www.youtube.com">
in mi prestavili v novo vrstico le tako, da je malo bolj berljivo,
in bom skrči velikost pisave.
Sem že končal? Ne Prišlo bo to deljenje.
Ta oznaka, sidro tag, res da atribut,
, ki spreminja svoje vedenje, in vrednost tega atributa je očitno URL YouTube.
Ampak opazite razkorak je, da samo zato, ker je to URL boš,
to ne pomeni, da mora biti beseda, ki si poudarjanju in tako povezavo.
Namesto, da bi se lahko kaj takega.
Torej, moram reči, da se ta beseda ustaviti povezavo s pomočjo tesnega sidro oznako.
Obvestilo ne delam tega.
1, bi to lahko samo zapravljanje časa vsakogar in to ni potrebno.
>> Če želite zapreti oznako, da omenim samo ime oznake znova.
Vi ne omenja nobene od lastnosti.
Torej le da, pojdi nazaj. Ok, voila, zdaj pa je modra in hiperpovezavo.
Če ga kliknete, pravzaprav ne gre za YouTube.
Torej, čeprav je moja spletna stran ni na internetu, je vsaj HTML,
in če bomo pustili internet dohitevanju bi dejansko končal tukaj na youtube.com.
In sem šel nazaj in tukaj je moja spletna stran. Toda opazil.
Če ste kdaj gotten vsiljeno ali gre za lažno predstavljanje,
Zdaj imate možnost, po samo petih minutah, da storijo enako.
Tu se lahko pojdi in naredi nekaj podobnega www.badguy.com
ali karkoli površno spletne strani je, in potem lahko rečeš preverili svoj PayPal račun.
[Smeh] In zdaj to, da bo šel na badguy.com, kar ne bom, da kliknete na
ker nimam pojma, kje ki vodi. [Smeh]
>> Ampak sedaj imamo možnost, da dejansko konča tam.
Torej smo res šele začenjajo praska površino.
Ne bomo programiranje po sebi, smo pisno označevalni jezik.
Toda takoj, ko smo zaokrožujejo našo besedišča v HTML,
bomo uvesti PHP, dejansko programski jezik
ki nam bo omogočil ustvarjanje HTML samodejno ustvari CSS samodejno
tako da bomo lahko začeli izvajati v sredo, recimo,
naše iskalnik in še več.
Ampak več o tem v nekaj dneh. Bomo videli potem.
>> [CS50.TV]