>> [REPRODUCCIÓ DE VÍDEO]
>> -A Triomf de matemàtica i habilitat mecànica
és aquesta gran nova automàtica calculadora de la Universitat de Harvard.
Un complex entramat de problemes en matemàtiques posat a través de la màquina en forma codificada
a la cinta es resolen amb precisió en un diminuta fracció del temps requerit
per al càlcul humà.
Dissenyat per agilitzar totes les formes de la investigació matemàtica i científica,
el cervell mecànic gegant va a treballar per la Marina dels Estats Units fins al final de la guerra.
>> [FI DE REPRODUCCIÓ]
>> DAVID J. Malan: Aquesta, és CS50.
El passat va ser un màgic lloc, però si alguna vegada has
preguntar què aquest dispositiu és a Harvard Science Center,
és de fet part de la Harvard Mark I, i és
en exhibició en l'actualitat durant els últims anys.
I el que veuràs incrustat en conjunt de problemes
un és una mirada darrere de les escenes al que va fer aquest dispositiu, i ho fa,
del professor Harry Lewis, qui es troba en el departament de ciències de la computació aquí.
Així que més que en només una mica.
>> Però avui comencem a transició des de la setmana passada a aquesta,
i anem a portar menció d'una fotografia aquí
que en realitat és bastant famós.
Algú sap el que això aquí està a la pantalla?
Almenys segons el mite.
Sí.
AUDIÈNCIA: El primer virus.
DAVID J. Malan: Així que va ser suposadament la primera decisió real en un ordinador.
Ara bé, en la realitat la paraula bestiola, per un error en un programa,
ha estat amb nosaltres des de fa algun temps en el món físic,
i aquest va ser un dels primers temps documentats on algú realment
va arrencar una gran arna de la Marca Equip II, el va posar al lligant,
i després el va gravar com el primer error conegut
en realitat s'han trobat físicament.
Així que per tant va ser introduïda que en la tradició d'avui.
Tot, des de l'última setmana està disponible en línia.
En particular, els recursos que vostè pot ser no necessàriament notar, especialment
si ve aquí a persona.
Així que un dels becaris d'ensenyament cada anys fa que un conjunt canònic de notes,
pel que no és necessari mantenir el cap cap avall, tractant
transcriure gairebé qualsevol cosa això podria succeir aquí a classe.
Així que adonar-se que aquells anomenat [? Scribd?] Notes
estan en línia, sens dubte les diapositives i codi font que fem servir a classe.
Fem transcripcions de text complet disponibles també.
Així que si vostè recorda vagament alguns termini, i volen mirar cap amunt una mica
més fàcilment, s'adonen que tot que es pot buscar en línia.
A més de tutorials també.
De fet, avui comencem a mirar un llenguatge de programació de nivell inferior,
que aviat serà conegut per nosaltres com C, i és molt fàcil
al tipus de perdre després de només uns pocs temps de moments, i després una mena de meravella
com en realitat ens van donar a alguns més exemple complex des del més simple.
I així anem a donar-nos compte de la cirera recollir durant la classe alguns
dels exemples representatius, però s'adonen que molt més és també
disponible en línia perquè pugui treballar a través d'ell al seu propi ritme,
però, vostè està més còmode.
>> Però el deixem amb programes que eren només això.
Així que faig clic a la bandera verda, i què fa aquest programa?
Diu, hola, món.
Això fa que el gat dir hola en el seu petit món
a la part superior esquerra d'interfície d'usuari d'Scratch.
Però vam començar a introduir alguna terminologia setmana passada.
I així, aquest tipus de coses ens criden i què?
Quin podria ser el terme genèric per això?
Sí.
Un mètode o una declaració.
És clar, és una acció.
Fer això.
I no obstant això, havia altres formes a zero,
a més d'aquests anomenats declaració, que eren també
coses com aquesta, que anomenem què?
Sí.
Per tant un bucle.
I en aquest cas, aquesta cosa repeticions, òbviament, 10 vegades.
Hi ha un bloc de sempre.
Hi ha un parell dels altres.
I avui anem a veure la forma de traduir això a un món més modern,
si es vol, encara que és va semblar a primera vista
ser molt més arcà.
Però aquests eren de fet els bucles.
I després tenim coses com això, que tenia aquesta forma,
i essencialment preguntes.
I ens referim a aquests com què?
>> AUDIÈNCIA: expressió booleana.
>> DAVID J. Malan: Sí.
Expressió booleana.
Una cosa que és veritable o fals, sí o no, un o zero,
però vostè desitja veure el món.
Però anomenem els booleana expressions, i els endoll
en condicions, o branques.
I en el món de Scratch, tot molt bé
enclavaments quant a la seva forma, si té sentit lògic per fer-ho,
però vostè no ha de parar en només fent una cosa condicionalment,
vostè pot tenir una proverbial bifurcació en el camí
i fer això o que si la condició és vertadera o no.
I llavors, com es veurà, si vostè no ho ha fet,
Vostè pot fins i tot nien aquests blocs.
Així esgarrapades creix per omplir les formes que és possible que vulgueu inserir en ell,
pel que en realitat es pot expressar més qualsevol lògica que és possible que vulgueu fer.
>> Ara unes paraules d'anunci per tant aquí com a New Haven.
Així seccionament comença avui.
La direcció d'aquesta es troba en el curs de lloc web, per als que no estan familiaritzats.
Seccions seran un oportunitat de reunir-
en un ambient molt més íntim que no sigui [? Sanders?] Permet,
amb 10 a 20 companys de classe amb una ensenyament company en diferents pistes,
i ritmes diferents, si així ho desitgen.
De fet les ofertes de cursos diferents seccions
per als menys còmode, més còmode, i en algun punt intermedi,
i el paper d'or aquí, és no hi ha una definició formal,
però si vostè és menys còmode, quin tipus d'adonar-te.
Estàs una mica intrèpid sobre la idea de posar un peu, potser, de tornada
a l'aula, o mostrar fins a una d'entre la secció.
Si has estat a la programació ja que van ser sis anys d'edat, més còmode,
potser per a vostè.
I si es tracta d'una espècie de cara o creu, això és exactament el que l'intermedi
està destinat a ser.
>> Ara, en l'interí, per a una classe d'aquesta mida,
ens porta força temps a la secció tots, pel que hem anomenats,
seccions súper, que fins aquest cap de setmana i principis de la setmana que ve,
així que fes un cop d'ull a la pàgina web del curs per a aquells que són per descomptat d'ample,
i també va filmar per a aquells que no pot fer-los.
I seccions mateixos començaran en la setmana tres de CS50 índex zero.
CONJUNT DE PROBLEMES 0 ja està a la pàgina web del curs.
I adonar-se que vostè té nou dies finals d'aquest semestre.
Així que aquesta és una actualització de l'última anys, quan teníem cinc dies de retard.
>> Així que si vostè s'està preguntant, tenim nou butlletins de problemes.
Té nou dies finals, cadascun dels quals només es pot passar una setmana a.
Això fa que efectivament tots el problema s'estableix a causa Divendres,
però l'objectiu és posar una mica de mica de pressió psicològica
amb vostès per intentar aconseguir coses en el dijous
perquè tan aviat descobrirà, per bé o per mal, la majoria
sobretot en el món del programari acaba ser molt més temps que vostè anticipa.
Així que considera que una espècie d'oportunitat d'ajudar
a tu mateix per apuntar dijous però tranquil per això, sí,
tot s'ha de divendres.
I si envia ells en Dijous, això és meravellós.
No hi ha punts de bonificació o addicional el crèdit per complir amb aquest termini.
És la intenció de ser només una crossa.
>> I les hores d'oficina, tant aquí ia New Haven,
en persona, si desitja complir amb qualsevol dels nostres cursos
l'ensenyament dels becaris i les entitats emissores d'assistència.
>> Tot bé.
Així que ara, farem això més real.
I per un moment que va a començar per aconseguir una mica més arcà, però molt
ràpidament el divendres i la setmana que ve estarem
capaç de fer molt més que que vam poder fins ara en Scratch.
Així que vam introduir últim codi setmanes, encara que pictoral.
Va ser peces del trencaclosques.
I vam formalitzar que és cosa que es diu codi font,
sinó que va fer sembla?
Bé, semblava una mica alguna cosa com això.
I, de fet, només per a la classe de embromar on podem anar amb això.
Vaig a seguir endavant i obrir una finestra aquí,
i jo només vaig a triar nou arxiu.
I em vaig a guardar aquest arxiu com una mena de punt hola c.
Més sobre que l'elecció de paraules un moment.
I això és com algú podria anar sobre l'escriptura d'un programa.
Inclogui E / S estàndard de punt h, int main buit, i després obrir claudàtor, prop
claudàtor, printf hola món coma, barra invertida n, punt i coma, Desa, fet.
D'ACORD.
He escrit la meva primera programa, però va
a ser increïblement decebuts perquè quan en realitat
executar aquest programa, per descomptat, per primera escriptura que hola,
i després dot retallar hola, i anem a passar per això amb molt més detall
en un moment, això és tot el que fa.
No esclatar obert totes les finestres.
No fa res particularment elegant.
Tot el que fa és el que li vaig dir a fem, però com arribem a això?
I com construir sobre això?
Bé, anem a introduir alguns diferents conceptes aquí.
>> Així que un, estem a punt de començar utilitzant un programa anomenat un compilador.
Hi ha un compilador per a Mac OS, Windows, Linux, qualsevol nombre de sistemes operatius,
i aviat li presentarem a la ambient que utilitzarem,
però un compilador és només un general termini per a una peça de programari
que porta codi font i produeix codi objecte de la mateixa.
En altres paraules, si vostè té com a entrada la font
codi, una cosa així com el que acaba d'escriure, que en última instància produeix codi objecte.
I el codi objecte és en realitat una forma elegant de dir que les sortides
de zero i un.
En altres paraules, la font codi, tot i que és
va a semblar una mica misteriós, i una mica menys agradable
d'esgarrapades, a primera vista, és almenys alguna cosa
que els éssers humans poden entendre.
En certa manera es veu i sona com Anglès Tot i que és molt succinta.
Atès que la programació en de zero i un, com els nostres predecessors havien de fer,
Fa alguns anys, no era una entrada molt divertit.
I, no obstant això, això és el que el equip encara entén.
Així compilador ens porta des codi font del codi objecte.
És com obrir un arxiu amb el compilador, i al guardar-lo,
vostè aconsegueix aquests zeros i uns.
Així que veurem com fer-ho que, en un moment.
>> Però ara anem a tractar de proporcionar una tendir un pont entre la setmana passada i present,
de manera que fins i tot a mesura que s'obsessioni en coses com claus,
i punt i coma i parèntesi i tots aquests intel·lectualment interessant
aspectes de la programació, que molt comprensiblement disparar a la gent des del principi,
adonar-se que totes les idees Avui en dia, són els mateixos que passat.
Així que ahir, vam veure aquest exemple aquí, el programa Hola Món.
Bé, a partir d'avui, si volem per posar en pràctica aquest mateix programa,
que va a buscar un mica alguna cosa com això.
I anem a explicar en poc temps el que int, i principal, i sense efecte, i tot això
és, però almenys jo veig aquí Ja ho familiar Hello World.
>> Mentrestant, coses com funció, saluda,
és molt senzill serà un declaració molt simple com això.
Printf hola món, amb una mica de cita, amb una barra invertida,
amb un punt i coma, però més sobre això més per venir.
Loops, per la seva banda, es tracta d'un bucle que, per descomptat, diu hola món per sempre,
i aquest va a semblar un poc més estrany que en el passat,
però si dic alguna cosa de la mateixa manera que, mentre cert,
pot després imprimir Hola món una i altra vegada i una altra i una altra.
I després com puguis tipus de començar a inferir aquí,
aquesta convenció d'usar claus és una espècie
de com abraçar la línia de sangria de codi d'allà.
La línia printf de codi molt semblant la peça del trencaclosques de color groc per sobre.
Així que no direm sempre, anem a dir, mentre que la veritable,
però anem a veure què és en només una mica.
>> Mentrestant, si tenim un circuit com aquest, on repeteixes una cosa una finita
nombre de vegades, aquest també és Va a prendre una mica de temps per acostumar
, Però que dirà amb int i es posa a zero, i menys de 10, i ++,
i després printf de nou.
Però no serà patrons.
I per a aquells de vostès familiaritzats amb AP Ciències de la Computació, o Java,
o qualsevol nombre d'altres idiomes, Gairebé tots aquests constructes
fins ara han de buscar sobretot familiar.
>> Així variable.
Així que aquí està un senzill fragment de Scratch que estableix una variable anomenada comptador a zero,
i després diu sempre el taulell, i llavors es canvia el comptador en un.
Així que comença amb zero, i després un, dos, tres.
Bé, com podem introduir que en aquest nou llenguatge una mica similar?
Contador Int és igual zero, mentre que la veritable, la qual
és la mateixa idea d'abans de fer alguna cosa per sempre,
i jo només vaig a printf.
I ara s'està fent una mica estrany, i per cent, però més sobre això més per venir,
però aquestes idees són exactament els mateixos.
Només ara hem de complir amb la sintaxi que l'equip està
exigirà de nosaltres.
>> Expressió booleana, una mena de sx menor que i, x o menys i,
e i menys de z.
Es va a veure una mica d'alguna cosa així, amb parèntesis només
com en matemàtiques per si de cas només assegurar-se que l'ordre de les operacions
és com pretenem.
I ara, les condicions.
Així que si x menor que i, diguem x és menor que I, més si x és més gran que i,
dir x és més gran que i, en cas contrari lògicament, x ha de ser igual a i.
Així que es podria posar en pràctica alguna cosa com això en Scratch,
o pot aplicar en aquesta sintaxi.
I de nou, les claus són una mena de ens dóna la mateixa manera que el trencaclosques
peces, però la sintaxi, ara, és potser començant a seguir algunes pautes.
>> Així que, què ens donen aquí?
Així que estem en aquest llavors en el nostre programa principal.
Anem en realitat, ara, fer alguna cosa amb ell.
Així que en aquest primer línia que veiem aguda incloem,
I / S estàndard, punt h, i a continuació, un angle estrany
suports sota d'això. int main buit, i després printf hola món.
Així que fer un pas.
Algú que mai ha programat abans, almenys explicar una d'aquestes línies.
Usant potser alguns l'argot de la setmana passada.
Quin és printf, per exemple?
Sí.
>> AUDIÈNCIA: [inaudible]
>> DAVID J. Malan: Sí.
És una funció, o una declaració, de la terminologia de la setmana passada.
I és una acció que està fent alguna cosa.
Ara aquesta funció, o aquesta declaració, fa
que sembla tenir algun tipus d'entrada?
I en quin sentit ho fa semblen tenir d'entrada, en aquest cas?
D'entrada, què vull dir amb això?
Sí.
>> AUDIÈNCIA: [inaudible]
DAVID J. Malan: Sí.
Així guanyar-se unes quantes peces del trencaclosques on es pot parametritzar ella.
Es notava la repetició bloquejar quantes vegades repetir,
així que va ser una entrada de classes, i igual que les ratllades
tenia un petit marcador de posició blanc per al número hauria d'escriure en,
així que fem servir en aquest parèntesi mundials text
per donar-nos aquesta forma circular en el qual podem connectar la nostra entrada.
Després de tot, fa desenes d'anys quan aquest llenguatge, anomenat C,
va ser inventat ningú anticipar que és un de nosaltres,
aquests alguns anys més tard, estaríem volen una funció que diu hola.
Oi?
Seria bo si hi hagués un peça del trencaclosques, o unes paraules clau,
això es diu hola, que literalment, només diu hola.
Però no necessitem això.
Podem tenir alguna cosa molt més baix nivell, com una impressió genèrica
comandament, que pren l'entrada, i imprimeix el que vulguem.
Així notar ara el patró que començarà a emergir.
Parin Obertes, prop parin és aparentment abraçant l'entrada,
i després veig doble cita en ambdós extrems.
Encara hi ha barra invertida rar n, però espero que ara vostè
pot començar a visualitzar almenys aquesta printf està prenent algun tipus d'entrada.
No és tan fàcil d'usar com Zero, però és només
com haver endollat ​​algun valor allà.
>> Molt bé, ara anem a realitat fer alguna cosa amb això.
Així que alguns de vostès podrien saber de tenint comprat la classe abans,
xerrat amb els amics, que durant molts anys
fem servir una cosa anomenada l'aparell CS50.
Aquest era un terme que descriu una tecnologia crida l'màquina virtual, que
és una peça de programari que el seu predecessors es descarrega fora
la pàgina web del curs de forma gratuïta.
També es descarrega una peça lliure de programari anomenat un hipervisor,
cosa que es diu com VMware, o VirtualBox, o qualsevol nombre
d'altres eines, i en el seu Mac o PC o qualsevol equip que tenien l'any passat
i l'any passat, duplicaria clic a una icona
per executar aquest programari anomenat l'hipervisor.
I després a l'interior d'aquest programa obririen l'aparell CS50.
I l'efecte va ser que si un antecessor seu
estava executant Mac OS o De Windows, ell o ella llavors
posteriorment va tenir una nova finestra en la seva pantalla de córrer l'entorn del CS50.
Així que una màquina virtual li permet executar un sol sistema operatiu dins d'un altre,
i això és exactament el que vam fer.
Al llarg de la major part del supòsit que utilitzar un sistema operatiu anomenat
Linux, específicament Ubuntu Linux, i això
és una forma molt agradable en els últims anys de assegurant-se que tot el món en el curs
només tenia el mateix ambient.
I vostè pot utilitzar qualsevol tipus de equip que vostè realment desitja.
Entre els desavantatges, però, eren que era com dos gigabytes
descarregar gratis la cosa.
No necessàriament funciona molt bé en persones les computadores que potser només
va tenir una actuació més o menys de RAM, o no massa gigahertzs ​​de velocitat de la CPU,
pel que aquest any, per aquesta i altres raons,
¿Hem estat transicionando a aquest entorn.
L'anomenat CS50 IDE, que és basat en programari de codi obert,
i una plataforma compatible que una companyia anomenada Cloud9
dóna suport a Europa, que ens permet tenim essencialment
aquest mateix ambient exacta com a any passat, però en l'anomenada en el núvol.
>> Llavors, què és el núvol?
Vostè probablement ha fet clic la seva icona al teu Mac o PC.
Què és el núvol?
Sí?
Una mica més fort.
Sí.
És només un munt d'ordinadors en altres llocs que les dades de la botiga i d'execució
programari i similars.
Així que és realment només a la paraula de iure de descriure [? vénen llogades?]
equips que no viuen més en.
Que vostè, vostè mateix, no necessàriament posseir.
Així que quan les seves dades, o la seva programes, estan en el núvol,
només significa que és d'algú ordinadors d'una altra persona en un altre lloc,
i no, el més probable, si ordinador portàtil o d'escriptori físic.
I això és el CS50 IDE ara és.
>> A partir d'ara aniràs a una certa URL que presentar-
que, en el conjunt de problemes 1, a finals d'aquest setmana, que llavors, en iniciar la sessió,
donar-li aquest entorn.
I molt de Scratch com tenia un uns panells diferents involucrats,
el mateix passa amb l'IDE de CS50 té exactament això.
A la part superior esquerra mà aquí, ets anar a veure un explorador d'arxius familiars.
Així que qualsevol dels arxius que posat en aquest entorn
només es va a figurar-hi.
Els arxius i carpetes.
A la part superior dreta aquí, vostè va a veure un lloc
on realment es pot escriure el seu codi.
Inicialment en C, més endavant en el termini en PHP i JavaScript,
i, potser per última projectes, Ruby o Java o Python
o qualsevol nombre d'idiomes són recolzat en aquest entorn.
No és en absolut lligat a CS50 específicament.
>> I després, a la cantonada de fons aquí, especialment per als més còmodes,
tens alguna cosa crida una finestra de terminal.
I aquesta finestra de terminal permet que permet executar qualsevol comanda que vostè
desitjar en aquest entorn de núvol.
Se li permet instal·lar cap programari addicional
que desitja, perquè vostè ha anomenada arrel o d'administrador privilegis.
Així, en altres paraules, tot i que aquest està instal·lat en última instància, en el núvol,
i tot i que tenim simplificada fins a cert punt
per defecte, literalment, la introducció, gràcies a Dan Armendariz, i Dino,
i Dan Bradley en l'equip de CS50 sobre el passat molts mesos, un menys còmode
manera que s'amaga una gran quantitat de la distraccions inicialment confuses.
Tot existeix per representar un sistema informàtic típic
que vostè pot utilitzar en el món real.
>> Llavors, què significa tot això, i ¿Què podem realment fer amb ell?
Anem realment fer una ullada a un programa.
Així que vaig a obrir el entorn real aquí,
que és només la nostra Crom navegador, que podria ser Firefox,
podria ser Internet Explorer, o algun altre navegador també.
Està plena projectar aquí de moment.
I vull molestar realitat a part el que era aquest programa.
Així que anem a fer una ullada, fent zoom en fins a dalt, en el que vaig fer, i com vaig arribar aquí.
Així que aquí està els exacta mateixes línies de codi.
Així que aquesta és la declaració, com vostè ha esmentat abans.
La funció que diu hola.
Les claus, en línia de quatre i línia de sis,
presumiblement tipus d'embolcall aquesta línia per associar
amb l'essència del meu programa.
Així que de fet, aquesta paraula clau principal, això és allà dalt en la línia 3,
vostè pot pensar que com l'equivalent que quan fa clic a bandera verda,
bloquejar en Scratch.
Així que això és tot el que tenim aquí, és quan bandera verda es fa clic, impressió, o dir,
Hola món.
>> Però anem a prendre una conjectura, ara, en el que aquesta primera línia, més arcà, és.
Agut inclouen, oberta en angle suport, E / S estàndard de punt h,
tancar forca.
El que sé que potser fent, especialment si vostè ha programat
abans en algun altre llenguatge.
Sí?
>> AUDIÈNCIA: [inaudible]
DAVID J. Malan: Sí.
Exactament.
Així que això està donant accés a una biblioteca, per així dir-ho, de les funcions.
I una biblioteca de funcions és funcions que una altra persona
va escriure, ja sigui recentment o fa molt de temps, de manera que vostè
no han de reinventar la roda.
Per exemple, no ho fem ha de saber, el 2015,
com escriure codi que posa un personatge en la meva pantalla.
Algú s'ha adonat que amb la funció printf
perquè jo pugui ordenar d'abstracta lluny d'això, o capa de
a la part superior de la seva codi, i ara acaba de prendre
per fet que qualsevol programa que escrigui pot imprimir alguna cosa a la pantalla.
Així que aquesta primera línia d'allà en el pas un inclou el denominat arxiu de capçalera
per a la biblioteca estàndard.
Així a veure, l'idioma en que ara estem treballant
tingut una biblioteca estàndard amb una gran quantitat de funcions.
Printf és un d'ells, i aquesta primera línia de codi
em vol dir donar accés a aquestes funcions, pel que jo
no han de reinventar la roda.
>> Ara anirem a la finestra inferior i fer exactament el que vaig fer abans.
Fa un moment, quan jo era brunzint a través del codi,
escrivint a terme per primera vegada, Jo molt ràpidament escrit, faig hola.
Què va ser tot això caldria endevinar?
Què estava fent?
Sí?
No importa.
Està bé.
Sí.
AUDIÈNCIA: Compilació d'ella.
DAVID J. Malan: Sí.
S'acaba de compilar-lo.
Oi?
Fins i tot si això és completament desconeguda a vostè, que és bastant Anglès similars.
Certament no és zeros i uns, així que encara
hagi d'executar a través que l'anomenada programa, de codi, que va
prendre-ho com a entrada i produir una sortida.
I almenys, per ara, en aquest entorn Linux,
però això no és un requisit previ, això és just on anem a començar,
en general, interactuar amb sistemes informàtics com aquest
mitjançant una línia d'ordres trucada.
Així que amb un parpelleig ràpida i el seu teclat,
i no tant el punter del ratolí, i no tant les finestres i les icones i menús,
més aviat tot és textual.
I malgrat això se sent, en un primer moment vista, potser, com un pas cap a enrere,
en realitat és una forma molt més forma poderosa i expressiva
de controlar un ordinador especialment a mesura que,
vostè mateix, es tornen més còmode des de menys.
Això permetrà que vostè fa un munt més coses que simplement el que Microsoft
o Apple li permet fer amb el seu sistema operatiu gràfic.
>> Així que quan vaig arribar a Enter, ara, no passa res en aquesta ocasió
perquè pel que sembla la hola programa està actualitzat.
I el que era la comanda Vaig córrer darrere d'això?
Dot slash hola, i hola món.
Ara anem a fer un pas còpia d'un moment.
Resulta que fan hola és només una forma simplificada de la compilació d'un programa.
Anem a introduir una peça de l'argot,
però després allunyar- d'ella, ja que no és
tan interessant per als propòsits de l'actualitat.
El compilador que començarem a utilitzar es diu Clang, per al llenguatge C.
I aquest és un programa que s'executa només com ho vam fer en la línia d'ordres allà.
I així, si vull compilar un programa que jo
han escrit en un fitxer anomenat hola dot c, que, literalment, només escric Clang hola c
entrar.
>> El graciós és que, per raons històriques,
si no s'especifica la nom del programa
que jo vull a la sortida, si no ho faig especificar un nom de fitxer per als zeros
i uns, molt rar Fa anys es va adoptar la convenció
on se sentia una mena de bona resposta en el moment,
així que anem a cridar arbitràriament el primer programa que compila un punt fora.
Una és el primer en l'alfabet.
Out, que és la sortida.
Així que anem a trucar al programa per defecte un punt fora.
I això està bé, perquè si vull executar el programa en aquest text basat
medi ambient, jo només escric dot retallar un punt a terme entrar.
I seria executar exactament igual que abans.
Així que anem a veure que realment ràpid.
>> Així que si torno al meu codi font en CS50 IDE,
i jo en comptes faig això, Clang hola bressol c entrar, avís res sembla succeir,
però gairebé sempre en aquest entorn Linux,
quan res dolent sembla succeir, que significa alguna cosa bona en realitat va succeir.
Si no veu un error missatge, tot és probablement també.
I de fet, si ara ho faig punt slash un punt terme entro, m'he trobat a mi mateix programa.
Encara tinc el programa hola d'abans, perquè de fet, és
serà molt més agradable just escrigui fer en lloc de recordar
aquests conjurs de ordres, però anem a veure com ens
podria millorar en això, però.
>> Per tant, aquest és l'ordre per compilar el codi.
Aquest és l'ordre per executar el codi compilat a partir de llavors.
Com puc especificar un nom de fitxer?
Bé anem a introduir una peça més de l'argot.
Quan estàs en aquesta entorn basat en text,
vostè va a voler especificar coses que es diuen arguments de la línia d'ordres.
La qual cosa és només una forma elegant de dir, És a dir en el símbol que
modificar el comportament del que sigui programa que s'està executant.
Així específicament el programa que estic córrer, escrivint el nom del so metàl·lic,
és el programa anomenat Clang.
Així que això és o la vella escola equivalent a un doble clic
en Microsoft Word o icona d'algun programa.
Estic en comptes simplement escrivint el seu nom, però en aquesta versió de l'ordre,
Llavors tinc dash espai o hola hola espai del punt c.
Així que fins i tot si vostè mai ha jugat en aquest món abans,
simplement prendre una conjectura el Què ruixada o hola fer?
O què dirà so metàl·lic que fer?
Sí.
>> AUDIÈNCIA: [inaudible]
DAVID J. Malan: Sí.
Simplement estableix la sortida de l'arxiu a ser hola en lloc del més ximple un punt fora.
I, de fet, anem a provar això.
Així que si ara ho faig, primer farem això, r m hola.
Això és treure.
I que dirà remove fitxer regular hola, que
és innecessàriament arcà, però simplement mitjans fan que desitja esborrar l'arxiu,
i jo escric i per a si.
I noti, si estigués mirant a la part superior a l'esquerra, que va desaparèixer des d'allà dalt.
Permetin-me ara faig soroll metàl·lic guió o, i Vaig a seguir endavant i fer-ho hola,
en majúscules, hola punt c.
Ara, si ho faig slash dot hola, què es pot esperar?
>> Potser és sensible a majúscules.
Potser no ho és.
Anem a veure.
El fitxer o directori no existeix.
I podem tipus de trampes per només mirar la part superior esquerra.
Ho vaig fer jo, òbviament, guardar el programa com?
Totes les tapes hola.
Així que de fet, això és anar per fer una diferència.
Així que ara hola món està de tornada.
Ara bé, això és tot fi i bo, i tot molt ment-anestèsica,
al tipus de empantanegar en aquests detalls, però entenent-
està bé.
>> Escrivint una ullada a aquests cada vegada més conjurs llargs
no serà particularment diversió, així que la gent al món
inventat un altre programa, Fa alguns anys, anomenat
fer, que, senzillament, li permet escriure marca,
el nom del programa vostè vol fer, i fer
és intel·ligent en què es veurà en la carpeta actual, també conegut com el directori,
i si vostè té un arxiu anomenada hola punt c,
que és l'arxiu que es compilarà per a vostè en un programa que es diu hola.
Així que és una manera molt més simple de fent els ordres més críptics
que vam fer abans.
I hem preconfigurat CS50 IDE saber
que hauria de fer o guió i un nombre de altres banderes o arguments de la línia d'ordres,
que veurem en poc temps.
>> Però farem ara en realitat alguna cosa més interessant.
Simplement teclejant fos el món hola a tots el temps no és tan convincent.
Així que permetin-me anar per davant i el canvi aquest programa i dir hola David.
Ara em vaig a anar per aquí.
Vaig a seguir endavant i fer que saludar.
I de nou ara que s'està veient fer que es mostra el temps
script que és fent perquè hem configurat prèviament
d'aquesta manera, però nosaltres no ha de preocupar-se pel moment
el que està fent a part que és dot compilació slash hola, hola món.
Què passa?
Sí.
>> AUDIÈNCIA: [inaudible]
>> DAVID J. Malan: Sí.
Així, l'error noobie.
M'adono que això és molt subtil, però l'asterisc que aquí, a la fitxa,
simplement vol dir que no hi hagi guardat, i els navegadors i altres programes
fer això de vegades.
Així de control o de comandament s s ha de salvar.
Ara me n'aniré per davant i tornar a executar el programa.
Reconstruït localment.
Dret, per la qual cosa és un procés de múltiples passos.
Cap dels quals és particularment complex, però cada vegada que canviï l'arxiu,
hem de canviar la resultant zeros i uns, i slash dot hola.
Uau.
Així que això és molt decebedor que simplement imprimim això.
Anem a fer les coses una poc més dinàmic, ara.
>> Doncs resulta, que igual que Scratch, C suporta variables.
I resulta que si vols tenir una variable que emmagatzema,
no és un nombre com si típicament va fer amb Scratch,
però igual que una paraula, o un frase o un nom,
pot especificar una variable a l'ésser de tipus cadena.
Així que anem a veure més de aquests en un moment,
però resulta que C, i una gran quantitat de llenguatges com ell,
tenen tipus molt específics de variables.
No és just com àlgebra, on s'obté una x, a i, z
i aquests són només sempre nombres, en un llenguatge de programació
vostè pot emmagatzemar nombres, pot emmagatzemar caràcters individuals,
podria emmagatzemar paraules completes, podria emmagatzemar imatges sencers, arxius de so sencers,
i similars.
Així que hem d'especificar quin el tipus de la variable és.
I, per convenció, vaig a trucar al meu s variables només perquè és succinta,
i s significa cadena.
>> I després em vaig a guardar dins d'aquesta variable,
Igual que amb les ratllades quan s'utilitza el bloc conjunt,
Vaig a utilitzar el operador d'assignació en C,
que molt bé prou és la igualtat signar, però el signe igual fa això.
Es mou una mica de la dreta en la banda esquerra de l'expressió.
Així que el que he fet, per ser clars en línia de cinc, és que he declarat una variable.
Li he dit a l'ordinador, dóna'm memòria per a una variable, en diuen és,
i sé per endavant que vaig a posar una cadena en el mateix.
I una cadena és només un seqüència de caràcters.
És una paraula o una frase o paràgraf, però és una seqüència de caràcters.
No és nombres.
Què cadena seré posada en aquesta variable?
Bé, pel que sembla citar Ho van dir ells, "Hannah".
Ara noti el patró que està emergint.
Hi ha una expressió de l'esquerra.
Hi ha una expressió de la dreta, separats pel signe igual.
I acaba de prendre una conjectura, si desconegut, però,
de manera que el punt i coma que està fent.
El que és de suposar que fer per nosaltres?
Sí?
>> AUDIÈNCIA: [inaudible]
>> DAVID J. Malan: Sí.
És només que acaba la línia.
Oi?
Els equips volen estar sense embuts va dir, literalment, el que ha de fer.
Igual que la mantega de cacauet i exemple melmelada,
si no s'especifica exactament el que es proposa,
podria deixar-se a judici o error.
Els mitjans de punt i coma, això és tot per aquesta comanda.
Es tracta de ser molt precisa, i és una cosa molt fàcil de deixar fora.
Així que ara aquest programa no sembla es comporten de manera diferent fins que
fer-lo més dinàmic.
Així que en lloc de disc podia meva pròpia nomenar, deixa posar un valor de marcador de posició.
I resulta que, i ho sé d'haver llegit la documentació,
i s'utilitza la funció durant anys, que printf va ser dissenyat per ser dinàmic.
No ha de saber per endavant el que les paraules que vostè vol posar-hi.
Vostè pot tenir un lloc marcador de posició, com per cent s, que
que dirà la ordinador, va posar una cadena aquí.
>> Quina cadena de què volem posar-hi?
Will Resulta que entre aquests parèntesi, que recorden, demarquen
l'entrada a una funció, si vostè té coma llista de coses separat aquí,
que en realitat passa en múltiples entrades a una funció.
Així que igual que alguns Scratch blocs, pot ser que no
han jugat amb ells seus projectes encara o en tot,
alguns blocs d'Scratch tenen dues entrades.
Dues caixes blanques que puguis escriure nombres o paraules en.
Així que per no C té funcions com printf que pot prendre dues entrades.
I de nou, aquesta comes se separa.
Així que en anglès, de nou, fins i tot si mai has programat abans,
per que printf lògica és una funció, pren dues entrades, una de les quals
és un marcador de posició, quina esperança printf es va a fer amb aquesta entrada?
Va a dir hola Hannah, amb sort.
Així que per fer això hem de salvar-lo.
Me'n vaig a allunyar.
Vaig a tornar a baixar aquí i dir hola fan entrar.
Oh.
Alguna cosa està malament, i de fet això és bastant aclaparador.
Tinc sis línies de codi i igual que 12 línies d'errors.
Per tant, esperem que això.
Llavors, què està passant aquí?
Així que la millor regla d'or aquí, sobretot quan estàs començant,
no distreure per les coses a la part inferior.
De fet, molt deliberadament simplement desplaçat fins
perquè molt sovint, un ordinador és no tot el que brillant d'un dispositiu.
Es va a confondre.
Si veu una cosa que que no entén,
podria confondre una altra línies de codi com incorrectes,
encara que són perfectament bé.
Així que sempre vol treballar de dalt a baix a través dels errors.
I la veritat és que això és súper arcà en el moment.
>> Error, l'ús de no declarat cadena d'identificador.
Em refereixo estàndard?
No, em referia cadena.
I està apuntant a, potser és un error tipogràfic.
Una cosa així com, comprovació d'ortografia en un manera molt geek, però la raó aquí,
i sabràs això simplement per la pràctica, és
que resulta que la cadena no existeix en C. De fet, C
és un llenguatge particularment d'edat, i és molt baix nivell,
i no ho fa un munt de característiques que podria haver crescut
amb si vostè té, de fet, programada en Java, com alguns de vostès tenen,
però es pot ensenyar coses noves.
I, de fet, hem fet això CS50, tot i que al final del semestre,
totes aquestes rodes d'entrenament s'haurà tret,
el que fem en aquests primer parell de setmanes
inicialment és també tenim incloure CS50 punt h.
Què és un arxiu de capçalera.
Més sobre això en el futur.
>> És un arxiu que conté funcions que hem escrit per a tu.
I entre aquestes funcions és funcions, per treure d'entrada
per part de l'usuari, com cordes, i nombres i els nombres reals, i més.
Però també té algunes dreceres.
Defineix un booleà com un tipus de dades.
C no té veritables o falses.
Però podem donar-li la noció de veritable o fals a través d'aquesta biblioteca.
I també no té una cadena construïda en fins a incloem aquesta línia.
Així que aquesta línia de codi indica el compilador, hey, Clang, mira
en aquest arxiu per a un conjunt paquet de programes que CS50
ha escrit de manera que qualsevol persona que utilitzi aquest arxiu
pot donar per feta la característiques han afegit.
>> Així que ara em deixis anar per davant i esborrar la pantalla,
i si curiosa Només dic de control l cada vegada per esborrar la pantalla,
o pot escriure clar.
Jo només vaig a seguir endavant i ara Tipus fan hola, i tot està bé.
Tot i així una sortida arcà, però no és un missatge erroni.
I si faig punt slash hola, i com a un costat, slash dot és desconegut per a la majoria.
Només vol dir, mig punt el directori actual.
Així que si vostè ha utilitzat alguna vegada DOS o Linux o Unix
vostè podria haver fet alguna cosa com cd punt punt, on
punt punt vol dir anar cap enrere en el temps, o anar cap enrere, o més amunt
en el seu directori.
Dot només significa mirar el directori actual.
Vull saludar, que està just aquí.
I, de fet, ara es diu hola Hannah.
I si canvi de nou a Maria, recompilar
faria hola, slash dot hola, el programa segueix canviant.
>> Però això segueix sent una programa bastant estúpid.
Si vull enviar aquest programa, o donar-lo a un amic,
o donar-Maria o Anna per al cas, això està bé.
Puc personalitzar per a tots dos, però mai va a ser dinàmic.
No poden canviar un cop que es va compilar baix en aquests zeros i uns.
Així que el que vam fer alguna cosa més intel·ligent?
Què passaria si, en lloc de dur-codificació al programa el nom d'aquesta persona,
¿I si ens acaba d'arribar la cadena de la demanda?
>> En altres paraules, deixa fer això.
Vaig a tornar a compilar aquest programa.
I permetin-me el zoom a la part inferior ara.
Fer hola slash dot hola.
Ara no està passant res.
Podem obtenir un voluntari ràpida fer que alguna cosa succeeixi?
Anem cap amunt.
Com et dius?
>> PANCHO: Pancho.
>> DAVID J. Malan: Pacho?
Anem cap amunt.
Quan arribi aquí, això és serà molt decebedor,
però és més interessant que jo escrivint-lo.
Si vols seguir endavant i entreu la vostra nom, em va fer aquest programa només per a vostè.
Només has d'escriure el teu nom.
Retorn.
Meravellós.
Molt bé, moltes gràcies.
>> PANCHO: Moltes gràcies.
>> DAVID J. Malan: OK.
>> [Aplaudiments]
>> Això va ser molt amable.
Aquí tens.
Què vam fer?
Així que finalment, almenys, fet aquest programa dinàmic.
Ara segueix sent dubte per disseny decebedor,
però per fi tenim la capacitat ara que escriure codi per endavant, molt
de la mateixa manera que els autors de printf, i després dinàmicament
ADAPT basat en l'entrada som lliurat, ja sigui pel programador,
o per l'ésser humà que és en realitat interactuar amb el programa.
Així que anem a tractar en realitat ara fer algunes altres construccions
i veure si no podem fer que els programes a si mateixos més sofisticat.
Així que seguirem endavant i en lloc de escriure aquesta un des de zero,
Vaig a anar a avui codi font, i tot això
està disponible en el curs de lloc web, i vostè pot arrossegar
en el seu propi entorn arribat divendres vegada problema
conjunt 1 li dóna la instruccions, o vostè podria
fer-ho en la línia d'ordres bé, però més per venir en conjunt 1 p.
>> Anem a veure el que hi ha en aquest programa aquí es diu, punt sumador c.
Ara que ja he comentat , Però què hi ha de nou?
A primera vista, quina línia del codi és absolutament nou?
Probablement no, fonamentalment, familiaritzats ara.
>> AUDIÈNCIA: [inaudible]
DAVID J. Malan: Sí, així int x és igual a tenir n.
Mai hem vist una mica d'això abans, però int és probablement
el símbol de la classe de variables, [? d '?] un nombre sencer.
Així int del tot.
És només sent més succinta. x és només arbitrària.
x i y i z són encara bastant raonable per als nombres,
però en general utilitzarem paraules una vegada els nostres programes es tornen més complexes.
Obtenir int, per descomptat, de la mateixa manera que la cadena get,
és, probablement, aconseguirà 1 int l'usuari,
i després anem a fer el mateix amb i.
I pel que sembla, tot i que aquest última línia, de 24 anys, sembla més complexa,
que dirà la suma d'aquesta i és aquesta una altra cosa.
>> I fixin-cent i probablement denota què?
Quin paper fa cent i aparentment serveixo?
És només marcadors de posició.
Oi?
Percentatge s era per a corda, cent i és del tot.
No serà cent f per valor de punt, flotant que
és només un número amb un punt decimal.
En altres paraules, un nombre real.
Així que anem a compilar aquesta realitat programar molt ràpid i no fer escurçó.
Vaja.
Bona oportunitat.
Així que notar aquí, tot aquest temps el meu usuari nom per es jharvard aquest compte.
Estic en IDE CS50, àlies IDE50.
I ara en blau aquí, és una menció, però del medi ambient, d'on jo sóc.
I de fet, si el zoom fins al cim aquí, fixa't que tinc una IDE50
i veig aquesta paraula, si la classe de giri el cap cap a un costat, espai de treball.
En poques paraules, el fet que Estic veient espai de treball de tala accent
significa que en aquest text entorn d'ordres basada,
Sóc al text equivalent de aquesta gràfica carpeta aquí.
Així que quan ho faig slash dot escurçó, és a dir no la regla
fer parada sumador objectiu.
No sé el que això significa, però és dolent per alguna raó.
el fitxer o directori no existeix és encara més clara.
On és llavors?
Basat en on vaig fer clic per obrir el fitxer anterior.
On podria ser?
>> És probablement a la font un sol w, per al dimecres,
i puc veure que, en efecte, si obro això.
Hi ha sumador de punt c, però en aquest entorn basat en text,
de nou, he de ser molt explícit.
Si vull canviar de directori a font d'un dimecres, necessito escriure,
cd espai d'origen es Dimecres entrar i ara
meus prompt canvia a dóna'm un senyal visual que
Jo sóc, de fet, en altres llocs en el meu entorn,
però ara que puc fer fer escurçó, sembla que funciona,
punt slash escurçó, dóna'm un sencer.
Un.
Dos.
La suma d'un i dos és tres.
Però si jo no coopero, anem a veure el aconsegueix int fa.
Dóna'm un sencer.
No.
Torneu a intentar-ho.
D'ACORD.
Fine.
50.
Tot bé.
Per tant, finalment coopera.
I això és part de la funcionalitat que aquestes funcions
s'han incorporat per a vostè.
>> Per tant dins de la implementació d'aconseguir int, el que la programació
construir a partir de la setmana passada és probablement en no per obligar a aquest comportament altre intent,
tornar a intentar, torneu a intentar?
Sí, és probable que hi hagi algun tipus de bucle.
Es va a veure sintàcticament diferent de blocs de Scratch,
però això és de fet el que hi ha dins de l'arxiu.
I en unes setmanes anem a realment es veuen a la biblioteca CS50
pel que fa al que hi ha dins, però hi ha un bucle imposar exactament això.
>> Anem a jugar una mica ximple joc aquí amb aquest arxiu.
Condició del zero punt c.
Només anem a general començarà a comptar des de zero.
I segueixo desplaçament passat algunes de les coses a la part superior.
En blau aquí, demarcada amb tot d'aquestes estrelles i les barres,
aquells de vostès que programar abans, què és això?
Per què seguim saltant sobre ella?
Què?
>> AUDIÈNCIA: És un comentari.
>> DAVID J. Malan: Sí.
És només un comentari.
Aquest és un comentari per als éssers humans per llegir, que en el nostre cas,
ens diu el que el nom del fitxer és a dir, que la va escriure, i el que fa,
de manera que vostè no té per llegir el codi
saber el que aquest arxiu es tracta.
És només una descripció, però funcionalment és irrellevant.
I jo ni tan sols puc esborrar de meu arxiu i que no té cap impacte.
Les línies sucoses són aquests primer dos aquí, ara.
void main int és l'equivalent de la nostra bandera verda quan es fa clic,
així que deixarem que sigui per avui, i anem a tornar,
Finalment, pel que fa al int i sense efecte són, però ara,
compte del que he fet també en aquest cas, també pot,
si té una en línia comentar, si vostè té
Un pensament que voleu compartir sobre una determinada línia de codi,
convenció a C és fer slash retallar, i després unes paraules breus,
no una frase completa, generalment no un paràgraf,
que simplement explica a vostè, o el seu TF, o altres lectors o companys de treball,
el que el seu codi està fent.
Així que en lloc d'haver de mirar en aquest i inferir a partir de línies
09:00 i 10, el que és aquesta fent, en la línia de vuit
Acabo de fer un comentari al preguntar a l'usuari un nombre sencer,
llavors jo no he de pensar molt sobre el que les línies de nou i 10 són.
Només sé que això és el que col·lectivament que estan fent.
>> Com?
Bé, aquí hi ha el símbol.
Aquí hi ha el aconseguir l'int.
I sobre la base de l'anterior comportament, sembla que get int
és prou intel·ligent com per assegurar-se que l'humà coopera i l'hi dóna
un enter.
Però ara veiem això.
I això és una reminiscència d'Scratch.
Estic dient que estic l'anàlisi de la entrada de l'usuari,
però alguna cosa inexacta.
I això pel que sembla en C és com expressem un cas més, una branca,
una forquilla a la carretera, però jo dir alguna cosa imprecisa.
Quin és l'error en aquest programa?
Sobre recolzar encara més?
Sí.
>> AUDIÈNCIA: [inaudible] zero.
>> DAVID J. Malan: Sí.
Així que si jo escric en zero, considerarem exactament aquest cas cas, oa la cantonada,
si es vol.
Així que si jo escric en zero, el que l' blocs va aparentment per apoderar-se'n?
El cas o de l'altra persona?
L'altra persona, i que dirà, que va triar un nombre negatiu.
I, en efecte, no se suposa zero a ser positiu o negatiu,
i pel que seria erròniament.
Això seria un error.
Llavors, com podem solucionar aquest problema?
Algú que mai ha programat abans?
Vols--
>> AUDIÈNCIA: [inaudible]
>> DAVID J. Malan: Retracció?
>> AUDIÈNCIA: [inaudible]
>> DAVID J. Malan: Oh, vostè té?
Algú que mai ha programat abans.
Vols provar la seva sort en la això, a la camisa vermella?
Anem cap amunt.
Oh sí, anem cap amunt, si no us importa.
Així que mai haver programat abans, com et dius?
LAUREN: Lauren.
DAVID J. Malan: Lauren, d'acord.
Així que corregir aquest error per a nosaltres.
Vostè no ha vist C, presumiblement, i probablement cap altre idioma.
Així que arreglar aquest programa per a nosaltres.
Encantat de conèixer-te.
No hi ha pressió.
LAUREN: Sí.
>> DAVID J. Malan: Però, de nou, si això aposta va d'acord al pla,
el menjar per emportar aquí ho farà ser, simplement de nou, per iniciar
a notar patrons i inferir de sintaxi existent
com és possible expressar la resta vostè mateix, sense joc de paraules, per tal
capturar alguna cosa escenari addicional.
Així que estem dient else if.
printf, bo.
I compta amb CS50 IDE, i l'IDE frankly--
representa Integrat Entorn de desenvolupament.
És només una forma elegant de dir un programa que ajuda als programes.
Ho fa fàcils d'usar coses com quan s'escriu un sol parèntesi,
et dóna automàticament l'altre.
La presumpció és que ets finalment voldrà escriure que,
i també ho fa amb cometes.
>> Per això m'agrada la línia 23.
El 99% del camí.
Algú vol ficar la seva cullera amb una punta?
Vaig sentir un punt i coma de l'audiència.
Bé.
Així que completa això.
I ara, només tinc una mica consternació amb la línia 21.
Com volem expressar això?
Què pregunta què volem preguntar, què et sembla?
Així que anteriorment vam fer la pregunta, si n és més gran que zero, fer això.
Si no, fer això.
Així que hem de triar un pregunta que fer aquí.
AUDIÈNCIA: [inaudible]
DAVID J. Malan: Good.
Així que si n és igual a zero.
Excel·lent.
Així que farem una pausa aquí.
Moltes gràcies per desafiar això.
Deixeu-me donar-li una mica merescut bola de la tensió, potser no.
Així que estem gairebé allà.
De fet, Lauren, si no ho fa ment, permetin-me fer un sol pessigar aquí,
només per ser coherent, fins i tot amb el que vam veure en Scratch, el
faig el que vull fer amb línies 21 i 24, només es basa de nou
de com ho vam fer en Scratch, potser?
>> AUDIÈNCIA: Moveu cap amunt.
>> DAVID J. Malan: Sí, moure cap amunt.
Així la condició més, la tercera, o quarta, o cinquena, o branca final,
de fet havia de venir després, i això és només per convenció,
perquè si es vol.
Així que necessito per fer aquest truc.
I he de posar la meva clau de volta aquí.
I ara, aquest programa es compilarà.
Estem tan a prop, però hi ha un error molt, molt subtil.
Anem a veure què passa.
>> En primer lloc, deixa anar endavant i allunyar la imatge.
Vaig a seguir endavant i escrigui fer condició zero.
Oh, vaig mentir.
Ara és el compilador realment molt intel·ligent.
I jo no entenc molt bé és un missatge d'error.
Utilitzant el resultat d'una assignació com una condició sense parèntesis,
aparentment és dolent.
Però, què significa això?
>> Doncs de nou, a la recerca de patrons en el codi que hem vist abans,
el que és la línia 17 realment fer, tot i que Lauren pretén lleugerament
d'una altra manera?
Sí.
>> AUDIÈNCIA: [inaudible]
DAVID J. Malan: Sí.
Així que recorda el signe igual, pel que sembla, com hem fet servir abans, no és igual.
La seva missió, de dreta a esquerra.
Així que la línia 17 de moment és una condició, i és
l'execució de codi dins dels parèntesis, però quan aquest codi s'executa,
el que està succeint amb el valor de zero?
Què està passant amb el valor de n?
Convertir-se en zero.
Així que si n s'està convertint en zero, i una altra, com la setmana passada,
generalment diem que zero és fals i un és veritable,
o si és una sola i no és zero.
Així veritat i la falsedat, l'un i 0.
Si n com de la línia 17 ha estat donat el valor 0, és zero cert?
No.
Per definició, el zero és fals.
Aquesta és la convenció que estem va aferrar-se a seguir endavant.
El mateix passarà amb les línies 18, 19 i 20 cada vegada s'apliquen ara, lògicament?
No poden.
Així que li preguntem a la pregunta però no amb prou precisió,
i no vas a saber això a menys vostè ho ha vist, la solució en C
és quan es vol expressar la igualtat, dius iguals iguals.
Així signe igual ja estava esgotat mitjançant cessió, de dreta a esquerra.
És igual a igual als mitjans és igual.
I si realment vols que la teva ment a doblegar, en JavaScript i PHP,
no és igual a igual als iguals, que significa una cosa completament diferent,
però anem a arribar a que en poc temps.
>> Així que aquesta és una solució simple, però s'adonen super fàcil de fer d'aquest error,
i després es pregunten i la lluita per minut, si no una hora,
Per què és el meu codi no executar com tinc la intenció?
És perquè no l'hi vas dir és exactament el que volia dir.
Així que era gairebé perfecte, i va ser genial
que ens ensopeguem amb aquests dos petits coses perquè ara si les arreglem,
i ho faig fer condició de zero punt slash condició zero,
M'agradaria un enter per favor.
Anem a veure.
No.
Es va a obligar-me a fer-ho.
Així que 42.
Vaig triar un nombre positiu.
Així que ara Com demostro aquest programa correcte?
Si vostè és un matemàtic, no es pot realment provar això per assaig i error,
Oi?
Vostè pot impermeabilitzar no només per exemple, però almenys
com a programador no estem va a tractar de demostrar de moment
que aquest és en realitat correcte, però probablement hauria
provar alguns casos representatius.
>> He provat 42.
Vaig poder provar 43.
Vaig poder provar 44.
Prova 45.
Oi?
Però podria fer-ho un temps molt llarg.
Quin seria una mica més casos interessants per provar?
AUDIÈNCIA: [inaudible] zero.
DAVID J. Malan: Així que zero.
Certament.
I bé, el tenim en aquesta ocasió, gràcies al nou codi de Lauren.
Què hi ha un altre bon cas per tractar?
AUDIÈNCIA: Un punt negatiu.
>> DAVID J. Malan: un negatiu, i potser alguna cosa una mica més gran,
així que potser negatiu 42, però en general, quan
provar els programes seguir endavant, ets
voldrà pensar a si mateix, com ho
són els casos fonamentals diferents.
I m'atreveixo a dir un cas negatiu, un cas positiu, i un cas zero
gairebé arrodoneix a terme.
Fem una ullada a una variant d'aquest embargament.
Condicions un.
Aquesta és una solució correcta aquí, de manera que vostè veurà dos i en línia,
si vostè camina a través de la tutorials, generalment,
incrementar pas a pas fins que aquests obtenir exactament l'enfocament correcte.
El que si volíem demanar dues preguntes alhora?
>> Permetin-me obrir aquest lloc.
Non-switch, per raons anem a veure una altra vegada.
Què hi ha de nou sintàcticament aquí?
Actualment estic jugant un joc on l'equip està dient
jo, jo dono un sencer entre un i 10,
i després m'estic jutjant la entrada de l'usuari.
En Anglès, basat en el codi que veus aquí
en blau, el que fa aquest programa?
AUDIÈNCIA: [inaudible] recollit un nombre gran o petit.
DAVID J. Malan: Sí.
És només l'adjudicació si Vaig triar un gran, o mitjà,
o nombre petit basa en una molt definició arbitrària de petites, mitjanes,
i grans aquí, però avís la sintaxi que és nou és la següent.
Hi ha no menys de int o igual a signar, o més gran que o igual a signar,
on un és sobre l'altre, que pot expressar en com Microsoft Word.
Així que en un llenguatge de programació que normalment només fer dos personatges,
un després de l'altre.
¿I què té això probablement representar, signe ampersand.
AUDIÈNCIA: [inaudible]
DAVID J. Malan: Sí.
Només significa i perquè Resulta que els autors de C
utilitzat un sol signe, que es podria pensar
seria perfecte per a la noció i de, ja està esgotat,
signe tan ampersand realitat capta el cas que realment volem.
>> Així que ara anem a ensopegar a través de dues coses.
Déjame anar per davant i obrir un.
Una cosa que és una mica preocupant.
La imprecisió del punt c.
Permetin-me presentar a dues coses aquí.
Un, l'avís que podem fer matemàtiques, ja que igual que abans, quan
vam fer més de dos nombres, x i y.
Què és aquest programa, aparentment fent?
Jo no he comentat encara, i jo he introduït cent f,
però ràpidament he dit abans cent f significa punt flotant
valor, que és un nombre real.
Una cosa amb un decimal punt, que no és un enter.
Què creus que aquest programa és tractant de mostrar a la pantalla?
Sí?
AUDIÈNCIA: El resultat d'una sobre 10.
DAVID J. Malan: Sí.
Quin és el resultat d'un dividit per 10.
És clar, perquè tots vostès tenen probablement crescut sabent que un de més de 10
es que?
Sí, és només un dècima o 0.1.
Oi?
Així que anem a veure el que això realment és.
Així que permetin-me anar endavant i salvar això.
Déjame anar aquí.
Fer slash dot imprecisió imprecisió i avís, també,
en un entorn Linux, no ho fa haver d'escriure la imprecisió i prendre
durant tot el dia.
En general, si es colpeja Tab, es acabarà el seu pensament per a vostè,
basat en les paraules que estan disponible al directori actual.
D'ACORD.
Així que vostè tenia raó.
Un dividit per 10 és, de fet, 0,1.
Però jo sóc una mica curiós.
I resulta printf recolza algunes característiques
mitjançant el qual es pot especificar més d' el nombre predeterminat de punts decimals.
Així que si vull veure 10 decimal punts que puc fer per cent,
per al símbol de marcador de posició, punt 10 per a, dóna'm 10 punts decimals,
i després segueix en coma flotant valor, i, com un a part,
¿Què és aquesta barra invertida n pel que sembla seguim utilitzant?
Resulta que és un símbol d'una nova línia.
És la manera molt explícita de dir a l'ordinador,
moure el cursor a la següent línia després ja està.
I ja veurem què passa quan no fem això.
>> Permetin-me recompilar fer imprecisió.
Ara dot retallar imprecisió.
D'ACORD.
Encara dreta.
Un dividit per 10.
Ara m'estic posant un poc curiós, però.
Què passa si em veig 20 decimal assenyala, recompilar, torneu a executar,
i com una banda per velocitat, també pot utilitzar
les fletxes amunt i avall per desplaçar-se a través de la seva història,
per la qual cosa no ha de mantenir tornar a escriure aquestes comandes, introdueixi.
Eh.
No vaig aprendre que a l'escola primària.
Molt bé, així que em va deixar veure com 29 llocs fora.
Potser és només una casualitat.
Potser el meu ordinador està actuant estrany.
Això no és una cosa, oi?
S'està fent alguna cosa determinista.
Així que la imprecisió.
OK, res de bo.
Llavors, què està passant?
>> Així que pel que sembla la seva professor ha estat mentint
perquè tot aquest temps per raons que veurem en poc temps.
Però anem a acabar amb un altre programa.
Això és una mica dels programes algú va escriure fa alguns anys,
i és en realitat part d'un concurs.
En realitat, ningú escriu codi així, i si ho fa,
això és estilísticament un problema.
Però la gent fa això per exigir drets.
Per escriure el més confús programa que busca
però, fa alguna cosa interessant.
I la nota que pensem que ho deixem en avui, abans de Colton ens toca aquí,
és executar aquest programa, que, fins i tot en només usar
C en aquesta basat en text medi ambient, nosaltres això dóna.
Maleïda sigui.
>> [El]
>> Prepareu-vos.
[Inaudible] c tauler l m.
Vas a veure el màgic encantament que veurem en poc temps.
[Inaudible] Molt bé.
I ara vostè pot fins i tot fer coses com aquesta.
Això és.
Perquè nosaltres CS50, veurà que divendres.
>> [REPRODUCCIÓ DE MÚSICA]
>> [Aplaudiments]