>> [Reproducció de música]
>> DAVID Malan: Molt bé.
Benvingut de nou.
Aquesta és CS50, i això és Setmana Un, Continuació.
Així que una de les raons per les quals hem estat passant al voltant de tecnologies com
Google Glass és que vénen amb una cosa que es coneix com una API, un
Interfície de programació d'aplicacions.
I el que això significa és que amb la arxius adequats i elegibles
documentació, en realitat es pot escriure programari per a dispositius fins i tot com aquests.
>> I així, el que tenim en ment cap semestres final és, si un projecte
que implica, per exemple, Google Glass podria apel · lació, ja veurem el que podem fer a
termes d'enganxar cap amunt amb una mica de maquinari de préstec, així com la
API d'accés públic, perquè pugui realment començar a crear programari
que s'executa en el mateix Google Glass.
>> Un altre dispositiu que hem estat jugant en els últims temps que pensem que podria ser
diversió al final del semestre és aquesta petita cosa aquí.
Es diu Leap Motion, i el que estem a punt de veure és tècnicament un
anunci per al dispositiu, però no parlar del que aquest particular,
dispositiu és capaç de fer.
I és, també, ve amb un API a través d' que es pot escriure programari per
controlar la seva pròpia ordinador de manera bastant com aquesta pel · lícula d'un minut aquí.
>> [REPRODUIR VIDEO]
>> [FI REPRODUCCIÓ DE VÍDEO]
>> Així que ara mateix, aquest dispositiu passa a ser implementat com un petit USB
connector que es pot connectar al seu ordinador, però no em sorprendria
si al poc temps que tenim aquest tipus de tecnologies en el següent lot de PC
o Mac, perquè pugui, de fet, interactuar amb ell en
una manera així.
De fet, el que vaig pensar que ho faria, també, és Vaig acostar una petita demostració
programa que ve amb aquest programari.
Així que m'he posat el petit sensor davant meu portàtil.
>> I com es pot veure, ja s'adona que la meva mà està aquí
controlar-la.
I tot el que fa l'aplicació és meravelles petites coses com aquesta.
Però es pot veure que, en efecte, Tinc cinc dits allà.
Si podem aconseguir que faci en els 10, es pot imaginar un piano net
aplicació o similar.
Així que si voleu arribar a partir de les classes avui i jugar amb el qual, com
així, vostè és agradable.
Per tant més que cap a fins del semestre.
>> Així que un parell dels procediments administratius anuncis.
Un d'ells, fan part d'aquest divendres al migdia a cs60.net/section.
Això URL està en el curs de pàgina d'inici també.
En l'interval, però, supersections s'estrenarà aquest diumenge.
Supersections són una cosa d'una sola vegada, perquè ens porta una mica de temps per treballar
qui està en quina secció i on.
>> Així que diumenge que ve, hi haurà una secció per als menys còmode,
una secció per als més còmoda.
I aquells de vostès en algun lloc entre els convidem a anar a
qualsevol o tots dos o cap.
Tots dos seran filmats.
Van a estar en un auditori més gran que una secció normalment seria polz
Però l'objectiu aquí és per equipar-lo amb una mica de consol amb el problema d'establir una,
amb C, amb l'aparell CS50, aquest cap de setmana, fins i tot abans de saber que el seu
assignació de la secció oficial.
Així coneixeràs la TF i la més petita grup de sectionmates en al voltant
temps d'una setmana.
>> Les hores d'oficina, per la seva banda, han estat passant.
No prendre avantatge d'ells aquesta nit o demà a la nit si vols.
Problema setembre 0 venç el divendres.
Aquest és un dia més tard de l' regularment programada dijous.
Però amb el conjunt de problemes 1, veurà que inclou algunes d'escalfament
exercicis amb els que tu mateix pot ampliar la seva
Data límit dijous a divendres.
Butlletí de problemes 1, per la seva banda, farà el seu debut a la pàgina web de l'assignatura el proper
Divendres, si desitja arraulir amb com ho vaig fer alguna vegada tard
Divendres a la nit a la seva habitació.
>> Així cs50.net/appliance és el lloc on vostè pot aconseguir l'aparell CS50
que vam començar a fer servir el dilluns.
Utilitzarem una mica més avui.
Però tingui la seguretat que el problema 1 setembre especificació us guiarà a través d'
exactament els passos que ha de per aconseguir que la marxa i funcionant.
Així que no es preocupi per fer-ho abans PSET 1 si vostè preferiria no fer-ho.
>> Està bé.
Així que busquem el dilluns al codi font, però en el context d'un nou
llenguatge de programació, és a dir, C i C, a diferència d'Scratch, no és gràfica.
No és Trencaclosques Pieces.
És més Anglès-com sintaxi.
I hi ha un parell de passos a seguir en realitat, l'escriptura i l'execució d'un
programar en C, ja que a més de font codi com aquest, necessita alguna cosa
anomenat un compilador.
I en termes simples, el que Què fa un compilador per a nosaltres?
Si.
>> Estudiant: Converteix el codi que s'escriu en 0s i 1s.
>> DAVID Malan: Good.
Per tant, converteix el codi que ens dirigim a 0s i 1s.
Es converteix així anomenat codi font a codi objecte, l'últim dels quals es veu
una mica d'alguna cosa com això.
I és que la seva CPU, els cervells dins l'equip, que a causa de la
persones que van crear aquests equips, saber quines són aquestes seqüències
de mitjana 0 i 1.
>> Potser signifiqui impressió.
Potser signifiqui addició.
Potser signifiqui restar.
Potser vol dir mostrar un gràfic.
Hi ha patrons predefinits de bits que el món ha decidit dir
certes coses.
Però en la seva major part en aquest curs, anem a treballar en un nivell superior, i
donarem per fet que hi ha coses com els compiladors que poden
fer la nostra funció de codi font en la forma en què pretenem.
>> Així que el programa que escrivim primer la setmana passada i després va començar a port, per així
parlar, de C, el passat Dilluns, era això.
Quan la bandera verda es fa clic, dir hola.
Això va ser, per descomptat, escrit en zero.
I va afirmar que l'equivalent programa en C es veia una mica
alguna cosa com això.
>> Així que el que vaig pensar que ho faríem en un primer moment és, anem a esmicolar el que sembla, en un primer moment
vista, sens dubte, la forma més justa arcana sintaxi, però vostè començarà a notar
patrons molt ràpidament.
El que també farem avui és proporcionar que amb un model mental per a alguns
canònica, algunes construccions estàndard en la programació.
I després anem a realment a les nostres mans bruta amb alguns exemples, així.
>> Així que per a aquells de vostès més còmode, adonar-se que aquesta setmana i després la següent
setmana molt bé pot ser una mica d'opinió.
Però, sobretot quan l'edició pirata del conjunt de problemes 1 surt a la
Pàgina del curs el divendres, jo crec trobareu que fins i tot quan vostè completa
alguns espais en blanc durant la propera setmana o dues, vostè començarà a apropar-se més
desafiat i trobada nous i més recents les coses.
>> Així que anem a burlen d'aquest programa, a banda unes poques línies alhora.
A la part superior, tenim el que és tècnicament anomenat
directiva de preprocessador.
Això és només una línia de codi que diu per incloure el contingut d'un arxiu,
anomenada I standard / N, entrada estàndard - o, ho sento, E / S estàndard, estàndard
d'entrada / sortida,. h, a l'interior del meu propi programa.
>> En altres paraules, si jo vaig escriure aquest programa amb un simple editor de text com
gedit, l'equivalent més simple de alguna cosa així com Microsoft Word, que
instrucció # include stdio.h, és només vaig a dir que el compilador, pren la
contingut d'aquest altre arxiu, stdio.h, i enganxar-los aquí.
>> Ara, per què m'importa?
Què va ser el que diem que hi ha dins d'aquest arxiu anomenat stdio.h, que s'emmagatzema
en algun lloc del meu disc dur, o en aquest cas, en l'aparell CS50 en algun lloc?
Algú el va posar allà per a mi.
Però, ¿què hi ha dins?
>> Sí, pel que és una declaració de una funció anomenada printf.
Així printf recorda la funció que mostra paraules i caràcters i
nombres a la pantalla a les meves ordres.
Però jo no el vaig escriure.
CS50 no el va escriure.
Fa anys algú va escriure, i que bàsicament ens va donar la recepta perquè
en un arxiu anomenat stdio.h.
Així que la primera línia just em dóna accés a les funcions que una altra persona
va escriure fa anys, entre que són printf.
>> Ara, la línia següent que vaig a moure el meu mà, almenys fins la setmana vinent.
Però per ara, saber que int main (void) és essencialment l'equivalent d'aquesta
peça del trencaclosques groc quan bandera verda clic.
El món, fa anys, va decidir que si vostè està escrivint un programa en
llenguatge anomenat C, s'inicia el seu programa amb una línia
que s'assembla a això.
En gairebé una setmana, que farà sentit del que és int, el que és nul · la.
Però per ara, només pensar-hi ja que aquesta peça del trencaclosques groc.
>> Ara banda, tenim un claudàtor seguit per l'altra clau de tancament,
per dir-ho.
I veurem al llarg d'aquests programes en C, així com
JavaScript i PHP.
I aquests només encapsulen línies relacionades de codi.
La clau d'obertura essencialment diu, aquí ve una mica de codi.
I la clau de tancament tancat, que és en angle en l'altra direcció, només
mitjans, això és tot per el codi corresponent.
>> Així que la sucosa en aquesta primera programa és l'últim, printf,
entre cometes, hola món.
I vaig trucar a la que hi ha entre cita el que l'última vegada?
Així que és una cadena.
I una cadena és només l'aficionat a la tecnologia termini per a una seqüència de
personatges, una paraula, una frase.
Fins i tot una sola carta podria ser el doble de cometes.
Però és una seqüència de zero o més caràcters.
>> Backslash-n, però, es veu una mica estrany.
Però simplement significava alguna cosa senzilla a l'ordinador.
Què hi ha barra invertida-n?
Nova línia.
Així que això és només la seqüència especial d' personatges que el món ha decidit
significa posar un salt de línia just aquí, perquè el compilador aconseguir realment
confús, en general, si, molt és comprensible, però de forma incorrecta, tal
comença a colpejar Enter per posar noves línies en el seu codi.
Has de ser una mica més explícita amb barra invertida-n.
>> I veurem que hi ha alguns altres tals patrons de caràcters especials.
Per exemple, si vostè vol que el seu ment vagar a un cas de la cantonada,
Suposo que volia imprimir un cometes dobles a la pantalla durant
motiu que sigui, això semblaria ser una mica problemàtic, no?
Perquè si em poso les cometes en el mitjà de "hola, món", per al que
raó, per què sembla que potencialment problemàtic?
Es trenca la cadena.
>> El compilador és un programa.
Un programa com un compilador només va per llegir el seu codi de dalt a baix,
esquerra a dreta.
I si veu tres cometes dobles en lloc de dos, no sabrà
si et refereixes a que el més a l'esquerra ha de ser la cadena, o el que cal
la dreta, o la cosa sencera.
És ambigu, per la qual cosa que és un típic compilador fer és s'espanti,
i li donarà algun missatge d'error, i fa a bregar amb el problema.
>> Llavors, atès que barra invertida-n significa un nou línia, el que faria amb els seus instints ara
començar a ser si volia incloure alguna cosa anòmala com una doble
Interior de la cita d'aquesta altra manera esmentat corda?
Barra invertida-cometa doble.
Així que anem a veure aquest tipus de patró també.
>> Si vols fer alguna cosa una mica estrany, trobareu que la
solucions sovint segueixen un patró, i la barra invertida
denota una seqüència d'escapament.
I només significa una cosa especial que hem de representar en un
diferent manera.
Pel que fa a com es representa una barra invertida, bé, anem a
tornar a això.
Però la resposta, també, és en realitat una mica obvi.
>> Així que ara anem a introduir un altre construccions de programació
que va veure en zero.
Vostè probablement ha pres per fet ja de per si ja has bussejat en
problema d'establir 0.
Però ara anem a introduir la sintaxi de C per a aquests la resta bastant intuïtiva
idees, almenys alguns d'ells.
>> Així que aquesta noció d'una condició o una branca, mentre que anteriorment es
representat amb el codi que es veia com aquesta a l'esquerra en Scratch -
si x és menor que i, llavors digues -
en canvi ara en C - m'ho dius esmolar en en el cas més senzill -
estem simplement dirà, si, obriu parèntesi, alguna cosa és cert - 01:00
Expressió booleana es va a anar on he dit estat -
parèntesi de tancament, a continuació, fer el que és dins d'aquestes claus.
>> Així que aquí, també, per les claus són una espècie de Scratch
Peces d'un trencaclosques en forma de U.
Fes el que hi ha dins d'aquestes claus.
En aquest cas, Slash Slash.
I noti això és un avanç retallar, no una barra invertida.
Barra inclinada, barra diagonal, per a aquells que han programat
abans, només significa -
és només un comentari.
Un comentari no és una línia de codi, per se.
És una línia d'anglès que vostè, el humana, han escrit a vostè per
potser li recordi a fer alguna cosa, explicar a tu mateix, per explicar als
altra persona, el que el seu codi està fent.
És només un comentari descriptiu.
>> Bé, és clar, podem tenir una de dues vies bifurcació en el camí només per fer això, una
tres vies forquilla a la carretera fent això, i si continua aquesta
patró, vostè pot tenir quatre vies, cinc vies, forquilles sis bandes a la carretera, si
vostè necessita per manejar, de fet, que moltes condicions.
I a continuació, observeu el paral · lelisme aquí -
if (condició), else if (condició), i l'únic que és una mica
rar és l'últim, que És només que més.
Però de nou, això és idèntic, conceptualment, al que hem fet
ja, tot i que la sintaxi es prendre una mica acostumar.
>> Ara, en aquest exemple, hi ha alguna altra sintaxi estranya.
Veiem printf nou parèntesi d'obertura, i parèntesi de tancament.
I dins de no una cadena entre cometes.
Els parèntesis, en el context de printf, aneu a l'esquerra
i el dret de què?
Què és el que descrivim citat cadena com més en general?
>> Així que és un argument.
Cada vegada que té una funció, com printf, i després un parèntesi obert i un
prop parin i alguna cosa dins que, si es tracta d'una cadena, o un
sencer o qualsevol altra cosa, la cosa en entre els parèntesis, es diu
una discussió.
>> I un argument només influeix El comportament de la funció.
En aquest cas, està molt clar com.
x <i és el que està passant a, per dir-ho, com un argument.
I printf va a imprimir exactament això.
Perquè sens dubte, fa anys persona qui implementat printf no tenia idea de
el que successors humans érem va a usar printf per.
Per això és que hi ha arguments per influir en el comportament després d'una funció de
ha escrit.
>> Ara, l'expressió booleana.
Hem vist això abans en zero.
Resulta que en C, també pot "o" junts, per dir-ho.
Dues barres verticals significa que aquest bloc del codi, això fa això, es
executar si la primera condició és vertadera o la segona condició és vertadera.
I tot i que no podria haver fet això en Scratch, podeu de fet
fer-ho en Scratch, i també es pot expressar-se de manera diferent -
si la primera condició i la segona condicions són veritables, llavors no ho és
dins de les claus.
>> I així com un a part, la raó per la qual és un signe doble i un doble
barra vertical, ja veurem amb el temps que una sola barra vertical i un
sol caràcter & en realitat tenen diferents significat en C. Així que per ara,
que la duplicació de símbols és intencional.
>> Així que anem a introduir, en poques paraules, aquest una mica de sintaxi.
Això no acaba de dur a Scratch, però jo sostinc que puc
posar en pràctica la idea d'un cas més, si una altra cosa, si bé, si else usant
cosa que es diu una sentència switch.
I l'única raó de que això realment existeix és que vostè acaba de donar, el programador, 1
lleugerament diferent manera de resoldre alguns problema, tot i que lògicament
no et dóna noves capacitats.
>> Amb això vull dir això.
Quan l'interruptor, i després un espai, diu i després un parell de parèntesis, dins
dels quals passa una expressió -
i això podria ser una mica no evident en el primer, però això no és un argument,
tècnicament, perquè commutador no és una funció.
Així que per ara, només suposem que estem utilitzant parèntesi en diferents llocs
per diferents raons.
>> Així interruptor en l'expressió vol dir que puc posar una variable dins dels
parèntesi on diu l'expressió.
I llavors, si aquesta variable -
suposem que es diu x, i és només un nombre sencer -
Llavors puc enumerar en el meu diapositiva aquí alguna cosa com això.
Si x és variable de mi, i jo voler fer alguna cosa si x
és igual a 1, no puc fer això.
>> Si en canvi vull fer alguna cosa si x és 2, no puc fer això.
Si no, si vull fer alguna cosa més tot, puc tenir un cas per defecte en
aquest cas ho faig una altra cosa.
Així que en aquest sentit, és equivalent a una si x és igual a és igual a 1, en cas contrari, si bé,
però ho esmento ara perquè anem a veure de nou.
Però per ara, només sé que existeix.
>> Està bé.
Així que aquests últims són una mica més complex a primera vista, però sí
alguna cosa bastant senzill.
Un bucle en C és un fragment de codi que simplement fa alguna cosa nova i
una i altra vegada.
I l'única cosa molesta d'això és que és que és una mica críptic
d'expressar-se en aquest cíclica patró, però el món estandarditzat
de la següent manera.
>> Quan s'utilitza un bucle for, tens un parell de parèntesis més.
I noti els dos punts i comes en aquest país.
Aquests dos punts i coma separats 03:00 diferents expressions dins del
parèntesi.
Un d'ells és dels anomenats inicialitzacions.
Un d'ells és la condició trucada.
I és un dels anomenats canvis.
>> Mirat en abstracte, és completament no-obvi, així que anem a veure
un exemple concret.
En esgarrapades que tenia un bloc de repetició.
I aquest bloc va dir repeteixi 10 vegades, per exemple "Hola, món". Permetin-me reclamació per
ara, i anem a tornar a això, i això també obtindrà més familiar per
que en poc temps, l'equivalent C codi es podria dir que aquesta -
una instrucció i un espai, un parell de parèntesi, tingueu present el punt i coma en
cal separar tres diferents coses, la inicialització, els
condició i l'actualització.
>> I tenir una pista sobre el que el primer està fent.
Int i = 0.
En termes senzills brut, el que és de fer per a nosaltres, probablement?
Així que si.
Es declara una variable anomenada i, i que està donant el que de valor?
0.
Així que està creant una variable anomenada I, emmagatzemar el valor 0 en ella.
Aquesta és l'anomenada d'inicialització.
>> Bé, ara em va reclamar abans que el mitjà, i
<10, és la condició.
Llavors, què està fent?
Bé, el que fa el llaç per quan un programa amb un bucle s'executa, és
cada vegada que l'equip s'executa a través de aquest bucle, de dalt a baix, de dalt a
baix, igual que vostès van fer quan comptant a si mateixos i es va asseure,
una i altra vegada i una altra, l'equip va
per comprovar aquesta condició.
I si i és menor que 10, que va a fer de nou.
Si i és menor que 10, que va a fer de nou.
Així que sembla suggerir que espere i està canviant.
En cas contrari, tindríem un bucle infinit.
I, de fet, i està canviant, perquè la L'últim que després de la coma no
és la sintaxi una mica críptica d'i + +.
Però aquells de vostès que han fet això abans, això només significa
senzillament, què?
>> ESTUDIANTS: [interrompent VEUS].
>> DAVID Malan: Afegir 1 a i.
Incrementar i.
Així que vam veure un trencaclosques esgarrapades peça perquè, en realitat.
No es veia com i + +, però això només significa, simplement, augmentar el
Valoro ia 1 cada vegada que ho faci.
Així que, literalment, es comença per Iniciació d'I a 0.
A continuació, comproveu el seu estat.
És 0, menys de 10?
Sí
Anem a través del bucle.
>> El següent que reclam l'equip de farem és que va
per incrementar i.
Així que ara és d'1.
Es comprova l'estat.
És 1 menys que 10?
Per descomptat.
Així ho fa de nou.
Després s'incrementa i + + a 2.
És 2 de menys de 10?
Sí
I una vegada i una altra i una altra.
I finalment, a causa de la plus-plussing, arribem a i és igual a 10.
És 10 menys de 10?
Bé, òbviament no.
I aquest és el punt en què el bucle només s'atura.
I si té més codi al a sota, l'equip
procedeix a executar el codi en lloc.
>> Així que de nou, tot i que això va a veure i sentir una mica estrany al
primer, sens dubte per a aquells de vostès que mai han programat abans,
literalment redueix conceptualment al que és d'altra banda un molt
trencaclosques senzills peça en zero.
>> Bé, em vaig prometre que no hi havia haver altres anàlegs en zero.
Hi ha aquesta també.
I vam veure breument aquesta última vegada.
Però recordeu sempre el bloquejar en el zero?
Simplement faci alguna cosa per sempre?
Vaig afirmar que vostè podria aplicar aquesta d'aquesta manera.
I en realitat es pot posar en pràctica aquesta en un munt de diferents maneres.
>> Però el bucle while és només una diferent forma en C d'expressar.
Al final del dia, no es pot fer qualsevol cosa amb un bucle while que
no pot amb un bucle for.
Així que estan al final de la dia funcionalment la mateixa.
No obstant això, permet que vostè s'expressi una mica diferent a
de la següent manera.
>> Amb el bucle while, és el que està en parèntesi que comproven una i altra
una i altra vegada.
I tan aviat com l'expressió és falsa, a continuació, el bucle deixa d'executar,
i l'ordinador procedeix a executi qualsevol altre codi que
tenir en el seu arxiu.
>> Però l'interessant aquí és que jo vaig escriure literalment cert.
I fidel és un tipus de valor booleà, un valor vertader o fals.
Així que podria esdevenir realitat mai false si tinc literalment
codificades en el meu programa?
Així que no.
És una mica estrany que jo vaig fer això.
Però cert és cert.
No hi ha més-plussing.
No hi ha ús de variables a aquí.
Així que perquè no modificable, mentre que és veritat, això bucle sempre va a avaluar
una i altra vegada i una altra.
>> Quantes vegades és hola món la impressió a la pantalla?
Forever.
Un nombre infinit de vegades fins que el mor la bateria o alguna altra externs
esdeveniment ocorre.
Així que això no és probablement el millor programa per escriure, perquè si l'usuari
mai no pot sortir del programa, és Probablement no és el que vostè pretén.
>> Però de vegades, els programes haurien tenir un bucle infinit.
Per exemple, si l'equip té un rellotge en ell, sens dubte seria
bo si el rellotge que no mantenir l'actualització en si per sempre, encara que una vegada al
segons o un cop per minut o alguna cosa així.
Així que fins i tot bucles infinits tenen el seu lloc.
>> Està bé.
Finalment, aquest un.
I aquest és una mica diferent funcionalment, i ens tornarem a
això probablement a PSET 1.
Però hi ha un altre tipus de bucle anomenat do while.
I l'única diferència aquí entre un fer mentre bucle i, diguem, un bucle while,
és que la condició es comprova no abans d'executar el codi, però després
s'executa el codi.
Així que a la part superior, mentre que per al llaç, mentre que el fer mentre
comprova que en la part inferior.
>> I això vol dir simplement que el bucle while se solen executar més vegades
o menor nombre de vegades que un bucle while?
Potencialment més vegades, perquè fer-ho while està dient clarament fer-ho,
només després que el punt que comprova si la condició interior de la
parèntesi, és cert.
>> Així que anem a veure això de nou probablement en PSET 1.
Si mai vols fer alguna cosa en menys una vegada i després potser una mica més
vegades, aquest és un bon construir a utilitzar.
Però un bucle mentre que, per contra, es comprovar el seu estat primer.
I això és tot per bucles en C, què mentre que, mentrestant, i per als bucles.
I de nou, s'assignen bastant bé enrere a l'alçada, llevat que aquest no
bastant tenir el mateix analògica a zero.
>> Bé, què, ara, les variables?
Així és com he declarat una variable sintàcticament l'altre dia.
Vaig tenir un int, que vaig afirmar és un nombre enter.
Llavors vaig tenir una trucada variable comptador, i després un punt i coma.
Llavors, què és aquesta línia de codi que fa?
Això és, simplement, que declara una variable -
és a dir, demanar a l'ordinador, dóna'm part de la memòria, dóna'm alguns bits - en
que puc emmagatzemar el que?
Un int.
I el punt i coma només significa final de línia de codi.
>> Ara, la segona línia és probablement bastant fàcil d'endevinar.
Què és el comptador = 0; fent?
S'assigna 0 al marcador.
I això és el altre això és una mica molest
en comparació amb, diguem, l'àlgebra.
Mentre que en l'àlgebra, el signe igual significa iguals, aquí en C, la igualtat de
signe significa assignació.
Per tant, vol dir posar el que està a la dreta en el que està a l'esquerra.
I veurem un altre símbol, és igual a iguals, quan volem provar en realitat
per la qualitat, una mica molest.
>> Però això és una mica ineficient.
És una mica molest que tinc per declarar una variable i
i després donar-li un valor.
Així que en realitat C ens permet simplificar aquest i acaba de fer-ho tot alhora.
Vostè pot declarar la variable a l'esquerra.
Vostè encara pot fer el treball en la dret posant que el signe igual en
el medi.
Així que al final del dia, aquests dos són equivalent, però aquest, francament,
és probablement el millor hàbit per entrar només perquè és una mica menys
codi, és una mica més fàcil de llegir, i que només es contreu
el seu codi, per dir-ho.
>> Qualsevol pregunta fins ara en els circuits, en les variables, de les condicions, en
Booleans, ja sigui tècnicament o conceptualment?
Està bé.
Així que ara aquesta propera aconsegueix 01:00 mica més interessant.
I aquest és l'exemple que vaig posar en marxa el passat temps que s'acaba s'assigna un exemple esgarrapades
a C.
>> Per tant una funció.
En termes senzills, què és una funció?
He de ser més audaços amb la seva resposta.
Què és una funció?
>> ESTUDIANT: Té alguna cosa.
>> DAVID Malan: Què és això?
>> ESTUDIANT: Té alguna cosa.
>> DAVID Malan: Té alguna cosa.
D'acord.
Anem a començar per aquí.
Així que una funció fa alguna cosa.
Així que és un tros de codi que és essencialment implementat en altres llocs que
En efecte, diu alguna cosa.
Ara, l'interessant d'una funció és que es pot obtenir informació,
i es pot produir una sortida.
I siguem realment prendre una ullada a això.
>> Així que l'home darrere de la cortina va ser deliberada fa un moment.
Aquí tenim una taula.
Però suposem que aquesta realitat representa una gran caixa.
Així que aquest és un quadre negre anomenat.
I, en general, en el disseny, a l'ordinador ciència, caixes negres només es refereixen a
peces de funcionalitat que algú ha posat en marxa, i no fer
necessàriament sap ni li importa com és implementat per sota de la caputxa.
Només importa que aquest quadre negre, que ara anem a començar a trucar a un
funció, fa alguna cosa.
>> Així, per exemple, si aquest quadre negre a l'etapa d'aquí representa printf, un
funció, que sé d'exemples anteriors printf que porta un o més
arguments, i el primer dels arguments han de ser una cadena, com
"Hola, món". Bé, si jo sóc la persona escriure el programa, i vull
utilitzar printf, que, per exemple, podria prengui un tros de paper en blanc aquí i una
marcador negre i escriu en ell -
Jo escric malament "món" -
H-I-L-L-O.
>> Així que vaig a prendre el meu marcador negre i vaig a escriure, tan gran i llegible com pugui en
aquest tros de paper, "hola, món", i Ara afirmo que aquesta és la meva argument.
Aquesta és una cadena representada amb un full de paper blanc.
I la meva entrada ara a la funció printf serà això.
Així que estic trucant printf, passant aquest argument com a entrada a la mateixa.
>> I ara, no sé com la persona que escriure printf ho va fer fa anys, però
Jo sé de la seva documentació el seu propòsit a la vida és imprimir el que
proporcionar la mateixa com a entrada.
I així, tot i que aquesta implementació És sense jo saber
sota de la capella, ara Ja veig, oh, es fa.
S'ha imprès alguna cosa a la pantalla.
I ara el control del programa, si hi ha eren més línies de codi, es
Ara han tornat a mi.
I així, el fet que Colton -
beneït sigui, s'amaga aquí sota una taula davant de tots vostès -
és deliberada perquè no sé i no m'importa el printf és
implementat.
Només sé que, de nou, a partir del seu documentació, el que fa i com ho
Se suposa que he de fer-lo servir.
>> Ara, recordem que printf podria aconseguir una mica més sofisticat.
Un cop més, estem parlant de la equivalent del bloc Say d'esgarrapades.
Però també ho vaig fer l'última vegada.
Jo volia fer el meu programa hola 01:00 poc més dinàmica i no només difícil
codi d'una cosa així com "món", i definitivament no codificar alguna cosa
arbitrària com D-A-V-I-D en el programa.
Volia preguntar a l'usuari per a la seva nom i, a continuació, fer alguna cosa amb
aquesta cadena que proporcionen.
>> Així que hi ha alguna cosa una mica diferent aquí. printf, fa un moment,
, En efecte, fer alguna cosa, però no va llançar res.
Cert?
Colton no em lliurarà res esquena, cap tros de paper.
Hi va haver només un efecte secundari.
La meva proporcionar "hola, món" com un argument per Colton resultar en la
efecte secundari d'una paraula, algunes paraules, que apareix a la pantalla.
>> getString, però, és una mica diferent. getString també és un
funciona, però retorna un valor.
No només tenen un efecte secundari estètica.
En realitat, em dóna, la persona trucant o utilitzant la funció,
alguna cosa a canvi.
Així que en aquest cas, és getString trucada amb getString obert
parin, parin a prop.
Té getString, per tant, prendre qualsevol argument o l'entrada?
No, no ho sembla.
El seu propòsit a la vida és només per obtenir una cadena.
No necessita més detalls que això.
Així que permetin-me anar endavant i pretendre que, una altra vegada, aquest quadre negre no és printf,
però getString, i em va deixar, la persona redacció d'aquest programa, truqueu o utilitzar
GetString amb només escriure G-I-T-S-T-I-I-N-G, obert parin, prop
parin, getString.
>> Ara, no tinc ni idea de com el personal CS50 implementat getString, però sé que
si espero prou, es farà tot el alguna cosa sota el capó, potser amb
algunes variables, potser l'ús d'alguns condicions, potser amb alguns bucles,
potser l'ús d'algunes funcions, potser utilitzant -
simplement tractant de guanyar - potser amb algunes altres característiques de programació.
Però si esperem prou - en realitat, en l'equip, això succeeix
super ràpid -
si espero prou, aquesta funció getString es posarà una cadena
per part de l'usuari, que està presumiblement escrivint fora del seu teclat i
llavors, quan getString està fet arribar els personatges de l'usuari
i emmagatzemar-los en una cadena, que funció, getString, tindrà
llest per a mi alguna sortida que sóc va a recuperar a través de la
operador d'assignació.
>> I si em fos, de fet, a la sortida aquí, Obosi té generosament
participat, sense saber això en avançar, escrivint el seu nom en aquesta
variable, que està representant una cadena.
Ara, l'operador d'assignació vol dir que, fins i tot encara que això podria sentir una mica
redundant, que realment fan necessari per fer la meva pròpia còpia d'aquest.
Perquè a la mà esquerra banda - Vaja -
notar que bàsicament tinc corda nom a la banda esquerra.
Així que jo també faré meva pròpia còpia d'aquest.
I això és una mica d'una mentida piadosa, perquè veurem en una setmana o dues de
temps que les cadenes no són en realitat el que semblen ser.
>> Però per ara, aquest és el valor de retorn.
Aquí està la meva pròpia còpia d'ella després d' utilitzant l'operador d'assignació.
I ara, ¿què és el que vull fer a continuació?
Ara tenim la segona de dues línies de codi.
Així que ara vull trucar a printf.
Imaginem ara que el negre quadre està de tornada altra vegada a ser
printf i no getString.
>> Printf aquest temps es va a prendre quants arguments?
Així que mira, és com dues.
Hi ha dues comes en aquest país, però un d'aquests comes, és
dins de les cometes.
Així que el primer argument és, literalment, serà això.
H-I-L-L-O, coma, cent s, la barra invertida-n.
I ara estic oferint no un argument, però dos arguments de printf.
>> I què printf suposa que veure amb aquestes dues entrades després que els passi a
com a arguments?
Se suposa que ha de prendre la segona de ells, que vaig trucar nom, de manera que el
segon tros de paper vaig escriure fa un moment se li diu nom.
Va a endoll del valor a l'interior d'aquesta variable en l'espai,
% S, pel que, de nou, en un moment de temps, anem a veure un efecte secundari de
havent anomenats printf, pel que ara ens no veuen "hola, món", sinó "hola,
Obosi ".
>> Així, un gran aplaudiment per als dos nostres voluntaris, només un dels quals sabien
això estaria passant.
Està bé.
Així que, potser, tan simple com això era, Certament, si vostè ja està familiaritzat
amb tal, espero que mai ho farà oblidar que visual particular de com
funcions de treball.
>> Així que hi ha alguna cosa més que getString.
A l'interior de la biblioteca CS50, hi ha una manat sencer de funcions, tots els quals
es capitalitzen només per deixar en clar que escrivim aquestes funcions.
En general, en C, gairebé tots els altres funció que farem servir és minúscula.
Però deliberadament utilitzem majúscules només per deixar en clar que aquests
són les rodes d'entrenament de classe que anem a utilitzar per tot just un parell de setmanes que
simplificar el procés d'obtenció de entrada de l'usuari.
>> La biblioteca CS50 no fa res que vostès mateixos no es podia fer per
només amb el codi C a partir d'una llibres de text oldschool.
Però, de nou, els utilitzem com a entrenament rodes de les classes per a només un parell de
setmanes perquè puguem desfer-nos de la complexitat que aviat entendrà
mateix de fer una cosa tan relativament senzill com aconseguir
entrada d'un usuari.
>> Així que saber que vostè tindrà accés a getchar, GetDouble -
duplicar.
Com es digui - i després GetFloat.
Què és un flotador?
Anem a començar per aquí.
>> ESTUDIANT: [inaudible].
>> DAVID Malan: Si.
És un número amb un decimal.
Així que mentre que un int és un enter, que és només un número de 0 a 9,
un nombre de repeticions dels mateixos, un flotador és una cosa
amb un punt decimal.
I una doble, per la seva banda, també és un número amb un decimal, però més
números després de la coma decimal punt, potencialment.
>> Així que ens posarem en contacte amb aquest poc temps.
Però en general, cada un d'aquests tipus de de dades, cadascun d'aquests tipus de variables
que una biblioteca com la nostra pot tornar a vostè, utilitzeu un nombre diferent de bits a
emmagatzemar informació.
Típicament, un Char, que només significa un caràcter, utilitza 8 bits.
I això és realment consistent amb la nostra byte de voluntaris la setmana passada que
es va acostar i representat una Caràcter ASCII alhora.
Així que un Char és de 8 bits.
>> Un flotador passa a ser 32 bits, en general.
I un matrimoni, com ja hauràs endevinat, és en realitat 64 bits, que és simplement més,
el que significa que pot tenir més nombres o més de precisió.
Però, de nou, més sobre això en un altre moment.
GetLongLong, per la seva banda, tot i que estúpidament nom, és en realitat un
sencer que és el doble de gran, el doble de llarg, potencialment, com regular
sencer de 64 bits en lloc de 32.
I GetString que hem estat usant.
>> Però resulta que, a la biblioteca CS50, que s'implementa, com veurem, en
la forma dels dos arxius, un dels quals es diu cs50.h, té dos
tipus de dades en el mateix.
Booleans no existeixen en C. Pot ells simular simplement utilitzant 0s i 1s
a través dels seus programes.
Però a la biblioteca CS50 hem creat els símbols "veritable" i "fals"
per representar 1 i 0 perquè no et que el codi una mica dur
literalment com 1 i 0.
Però anem a veure els de nou.
>> Cadena, també, no existeix.
I és per això que he esmentat és una mica d'una mentida piadosa per ara.
Però anem a pelar que capa de poc.
Però, per ara, una cadena és un seqüència de caràcters.
>> Mentrestant, en C, que de fet tenir diferents tipus de dades.
Observeu aquests són minúscules.
Així que les funcions que es va veure fa un moment són funcions escrites per CS50 que
tornarà a vostè un valor que cau en una d'aquestes categories.
>> Un parell de fulles de trucs només per plantar la llavor aquí. printf fa no només
prengui% s com a marcadors de posició.
Es necessita% d per sencers decimals, o% i funcionaria també.
% F està surant valors de punt. % C és per un char, si voleu connectar només un
caràcter en una cadena amb format previ com ho hem estat fent, podeu utilitzar% c.
>> I després, una mica molest,% LLD és per un llarg, llarg sencer decimal,
que simplement vol dir que si vostè necessita una molt gran nombre i que estàs fent servir alguna cosa
anomenat molt de temps, el que farem arribar de nou a un conjunt de processadors, pot utilitzar% LLD de
dir printf, connecteu un molt gran nombre enter aquí per mitjà de la seva segona o
algun altre argument.
>> I finalment, em vaig prometre que hi ha alguns altres d'escapament
seqüències que dóna suport printf.
Hem vist barra invertida-n.
Backslash-r pot veure.
És una espècie d'una cosa de la vella escola.
Si ha utilitzat alguna vegada un veritable any de màquines d'escriure enrere i va tirar de la maneta
que no només la roda girada a moure la formació, també es va traslladar la
Tot això tot el camí de tornada a l'esquerra, així, la barra invertida-r simplement
essencialment mou el cursor de nou l'inici de la línia
sense moure-la cap avall.
Però, de nou, més sobre això, potser, en el futur.
>> Backslash-cita, la barra invertida-cometa doble, barra invertida-barra invertida és el
solució per al petit petit endevinalla He al · ludit abans.
I barra invertida-0 és en realitat molt interessant.
Però anem a tornar a que en poc temps.
>> Així que permetin-me entrar, ara, el CS50 aparell, i farem una realitat
escalfament ràpid amb un dels exemples que ens vam moure ja i després a
una cosa una mica més complex.
Així que si obro el meu programa anomenat gedit -
aquest és el meu editor gràfic.
I jo puc fer això -
permetin-me tancar aquesta finestra -
a través d'aquesta icona d'aquí baix, gedit, a la part inferior esquerra
cantonada al costat del menú.
>> Vaig a seguir endavant i avançar, i guardar aquest exemple en, per exemple, John
Carpeta de Harvard.
Carpeta de John Harvard és casa directori en el qual tots els seus arxius de viure
per defecte.
I jo vaig a guardar això com un fitxer anomenat hola-0.C.
I jo he triat aquest nom només pel que s'alinea amb el codi d'exemple a la
Pàgina del curs i en el Vídeos de YouTube en línia.
>> Així que ara vaig a començar a escriure el primer programa.
Permetin-me ampliar la imatge durant la llegibilitat.
I seguiré endavant i dir int principal buit, que és igual que
peça del trencaclosques de color groc que comença un programa.
He caigut en l'hàbit durant el anys de l'obertura del meu clau de tancament, llavors
També tancar i després tornar a on vull posar el meu codi, només
perquè m'ajuda a mantenir tot equilibrada, especialment com el meu
programa es fa llarga.
>> I ara, aquí, seguiré endavant i dir: printf, citar cometes,
hola món, la barra invertida-n, prop de cotització, parèntesi de tancament, punt i coma.
Així que només estic repetint tot el que hem estat prenent per fet fins ara.
Ara em vaig a allunyar el zoom.
>> I aquesta finestra de terminal fins aquí, el que ¿Puc fer en aquest negre
i finestra en blanc?
Què puc fer servir?
Així que aquí és on em quedo ordres i on puc compilar coses.
I jo vaig a mantenir la senzillesa.
Vaig a utilitzar un programa de Fer flama, que no és
tècnicament un compilador.
Anomenat Clang del compilador, però anem a tornar a això en un
setmana o el temps de dos.
>> Per ara, només vaig a escriure make hola-0, però els que van ser
comparant en les seves ments el que acabo de escrit del que hauria d'haver escrit pot
Ja sé que vaig fer alguna cosa malament aquí.
Ara, hi ha clarament alguns errors.
Fins i tot abans de mirar al que són, qualsevol pensaments sobre el que vaig fer malament?
>> ESTUDIANTS: [interrompent VEUS].
>> DAVID Malan: Si.
Em falta el fitxer de capçalera de la biblioteca.
Qualsevol d'aquests fitxers. H s'anomenen encapçalat arxius, i col · lectivament
pertanyen a coses anomenades biblioteques.
Les biblioteques són simplement trossos de codi que altres persones van escriure.
Així que la [estàndard? Biblioteca i?] És un col · lecció de fitxers que contenen codi
que altres persones van escriure.
>> Així que em falta això.
Per què rebo un error?
Bé, deixa retrocedir en la meva finestra de terminal aquí.
I, per desgràcia, en C, com en una gran quantitat de llenguatges de programació, especialment
si tot és nou, l'error missatges són necessàries, però també són
bastant críptic.
I l'error aquí, en vermell, és "Funció de biblioteca declarant implícitament
printf amb el tipus ", i després es desplaça a la següent línia, "int const char *,
... "Només es posa molt aclaparadora ràpidament.
>> Però el que ha de començar a fer, si, nou, nou en tot això, és només per
començar a buscar paraules clau.
És clar que jo no podria entendre mitjà de les paraules que estic veient de moment.
Vostè, però, en el temps d'una setmana.
Però veig printf.
I això hauria de començar, en poc temps, a refrescar la memòria, d'acord, printf.
Alguna cosa li passa a printf.
¿Vaig escriure malament?
No, no es veu com - oh.
No puc usar a menys que ensenyo el compilador que existeix.
I així, un cop més, segueix els teus instints, encara que en realitat no entén
els missatges d'error reals.
>> I, en efecte, la solució en aquest cas és simplement incloure-ho en la part superior de l'arxiu
així, tornar a guardar el meu arxiu amb Control-S o al menú Arxiu.
I si ara torno aquí, Vaig a aclarir això.
Control-L és una bona manera per esborrar la pantalla.
I després vaig a escriure "hola fer 0 "Enter, i ara segueixo veient un
seqüència de símbols críptics, però tornarem a això.
Això és el que fem és fer per vostè.
Es automatitzar el procés de prendre una ordre bastant molest que implica
Clang, el compilador real.
Però el fet que em van donar cap error significa que això hauria de funcionar.
>> Així que ara vaig a fer - permetin-me acostar un nou -
./hello-0 Enter, i de fet, veig "Hola, món". Així que ara anem a millorar
aquesta molt lleugerament només per replicar els passos que preteníem.
Vaig a canviar el nom d'aquesta amb Desa per hello1.c.
I ara em vaig a declarar una variable nom, el nom de la cadena així,
i jo vaig a posar-hi la valor entre cometes
D-A-V-I-D coma close-quote.
I ara vaig a substituir "món" amb el que marcador de posició per a una cadena?
% S.
>> I ara, quants arguments han printf aprofitar aquest moment?
Així que dos.
Així que em vaig fora de les cometes.
Escric "nom" després d'una coma.
Però jo he fet alguna cosa cosa malament aquesta vegada.
Però suposem que no ho vaig adonar-se que encara.
Déjame anar aquí.
>> I noti també, m'estic posant una mica avorrit d'escriure "make hola 0" tots els
temps, "fer" i tot això.
Així, resulta que, en Linus pot solen colpejar la fletxa cap amunt en l'
teclat, i vostè pot desplaçar a través de tots els comandaments que he
executat abans d'aquest moment.
Així que si ho faig, dalt, dalt, no fer hola 0.
No vull això.
Només vull canviar això a hola 1 aquesta vegada, Enter.
Amb el temps, aquesta voluntat estalviar una mica de temps.
>> Està bé.
Desafortunadament, no és un error.
Així que em desplaço cap amunt.
Això sembla realment massacrat aquest programa.
Vull dir, per Déu, són dues línies de codi, i els seus 10 línies d'errors.
Però mira a la part superior en primer lloc.
L'ús de cadena d'identificador no declarat.
Em refereixo estàndard i n?
No, no ho vaig fer.
Em referia cadena.
>> Però on és la variable de cadena tipus declarat, DD diem?
Així que és al CS50 la biblioteca.
Per tant, no és suficient, en aquests primers parell de setmanes, només per utilitzar
el que C ens dóna.
També vaig a pujar aquí, i jo va entrar per sobre o per sota, però ho faré
si prefereixes alguna cosa alfabètic per mantenir les coses ordenades.
Vaig a incloure cs50.h, que pre-instal lat per
que l'aparell CS50.
I és de codi obert, de manera que fins i tot les persones a Internet pot usar-lo en la seva
ordinadors propis.
Però ve amb l'aparell CS50.
>> Així que ara m'ho dius tornar i tornar a compilar això amb fer hola gener.
Maledicció.
Encara un altre error.
Permetin-me desplaço fins a la primera, però.
Aquest és una mica complexa.
Multi-caràcter constant de caràcters.
Això no m'ajuda.
Però avís, Clang és almenys una mica poc decent, pel que amb una mica de
verd, símbol d'intercalació, és a dir aquí és on vaig ficar la pota.
Per què s'apunta, amb aquesta petita fletxa verda, l'única oferta següent
al meu nom?
>> Així que aquesta és una de les coses que només acostumar, especialment si vostè ha estat
programació en Python o JavaScript, o altres idiomes en aquest detall
no importa.
En C, sí que importa.
Si declara una cadena, que és una seqüència de 0 o més caràcters,
en realitat s'ha d'utilitzar cometes dobles.
Així que en realitat necessito canviar això de nou obrir cotització, tanca cita, amb
cometes dobles.
Les cometes simples tenen el seu lloc, però només quan s'està utilitzant individu
caràcters, però més d'això en un altre moment.
Per ara, les cometes dobles són necessaris.
>> Així que ara, deixa tornar al meu terminal finestra, feu hola gener.
I qui confia?
És aquest programa ara va per compilar correctament?
D'acord.
Així que tres de nosaltres pensa que això.
Està bé.
Intro.
I el que realment va fer.
Així que no hi ha cap error aquest cop, fins i tot encara que aquest programa ha tornat una mica
més complex.
Si ara ho faig punt slash hola 1, Enter, que dirà "hola, David."
>> Però farem la tercera iteració d'aquest, on el
programa és veritablement dinàmica.
Deixin-me seguir endavant i canviar l'arxiu nom, només per coherència amb el
arxius que vostè té disponible per a després en línia.
Intro.
I ara em vaig a anar i no emmagatzemar "David" codificat aquí.
Què podia fer per molt simple millorar aquest programa?
>> Podria trucar a getString.
Pot ser que sigui una mica el que no és evident és a punt de succeir, així que vaig
per afegir realment una altra línia, printf, i digui el nom, còlon, prop de cotització, igual
per donar a l'usuari un missatge a la pantalla.
I ara em vaig a anar aquí, i estic va a utilitzar el meu drecera de teclat.
Vaig a anar cap amunt, cap amunt, i canviar hola hola 1 a 2, Enter.
I gràcies a Déu, estic progressant.
>> I ara vaig a pujar al punt slash hola i
canviar això a 2, Enter.
I ara el meu programa -
Vaig a apropar una - és cada vegada una mica més bonic.
Nom serà, diguem Rob aquesta vegada, Enter, hola, Rob.
Podem fer-ho de nou.
Nom, Lauren, Enter.
Nom, Joseph, Enter.
Nom, anem a tractar de ser difícil, Retorn.
Eh.
En realitat no és un error.
Així que és una mica lleig.
Així que potser podríem resoldre aquest en el futur, no ara.
>> Però, com ho faries instintivament anar sobre la direcció de
aquest repte particular?
Només es veu estúpid.
Com evitar les coses semblar estúpid?
Així que podríem fer, OK, he sentit un parell de les coses, una condició i un bucle.
Ens vindria bé, un, una condició, per comprovar el que és la longitud de la cadena
l'usuari ens va donar?
I si és 0, és només citar final de la cita, simplement premeu Enter, i després
potser hauria cridar i li demanarà de nou.
Però, com un missatge nou?
Bé, jo també sentit llaç, i jo vaig poder fer-ho una i altra vegada i una altra
preguntar a l'usuari per la mateixa cosa.
>> Bé, anem a veure un altre exemple utilitzant una diferent
en funció de la biblioteca CS50.
Permetin-me concloure aquest fitxer.
Déjame crear un de nou.
I el trucaré adder.c, només perquè és fàcil de fer aritmètica simple,
tot i que aquesta serà completament decebedor, amb el que podria fer
amb qualsevol ordinador modern.
>> Però me n'aniré endavant ara i -
He après la lliçó l'última vegada - incloure cs50.h, include stdio.h, int
que, per ara, jo només, el principal buit agafem amb fe cega, però anem a suposar
entendre el que això significa que en poc temps.
I diré una cosa com "dóna'm un int."
>> I ara, com puc obtenir un int?
Vull declarar en última instància, una variable anomenada x de tipus int i
emmagatzemar-hi un nombre enter de l'usuari.
Així que va ser un mos.
Però si algú vol proposar, com Com em declaro un enter anomenat x?
X int.
>> Així que realment és així de simple.
Dóna'm un int.
Crida x.
Ara ús l'operador d'assignació.
I com puc emmagatzemar a la a l'esquerra d'un valor a l'usuari?
No vull trucar a getString, òbviament, sinó més aviat getint.
Qualsevol argument?
No
Així que és obert parin, parin prop immediatament, i després una
coma acaba la línia.
>> Ara m'ho dius fer això una altra vegada.
Dóna'm una altra int.
Aquesta vegada faré int, anem a criden a, és igual getint.
I ara m'ho dius fer alguna cosa súper senzill com una mica de matemàtica.
Així printf, la suma de% d és la marcador de posició per a un int.
I% d, punt, barra invertida-n.
>> Està bé.
Així que això no és realment matemàtiques.
Però si vull dir que la suma d'aquesta valor més aquest valor és igual a la
altre valor, el nombre d'arguments en total ha de d'estar donant printf,
en última instància?
Així que quatre, no?
Aquesta cadena i després els tres valors.
Així que x és el primer que vull ser endollar primer el% d.
i serà el pròxim.
>> I ara com que vull dir z, z, però no existeix.
Però això no és un gran problema.
Perquè, ¿què faries per instint, especialment si has tingut una
calculadora gràfica, quin tipus?
Què hi ha de x més i?
Així que no és una variable real.
És només la suma de dues altres variables.
I això és perfectament legítim.
C entén molt senzilla aritmètica així.
>> Punt i coma, estalviar.
Ara me n'aniré aquí i escriure make escurçó, Enter.
No hi ha error, pel que és progrés també.
Escriu escurçó.
I un altre drecera de teclat, si vostè comença a avorrir
amb tots els ordres -
si comença a escriure una ordre, com a punt reduir anunci, i aquí és on el seu
avorriment entra en acció, en general, pot colpejar Tab per tenir l'equip va acabar la
resta de la frase per a vostè si no és l'ambigu ha de venir després de l'anunci.
>> Així que permetin-me anar endavant ara i fa clic a Enter.
Dóna'm un int, 1, 2, i gràcies a Déu, que és 3.
Però com sempre, els programes de prova no ha de reduir al
tractant una vegada.
Vaig a tractar d'un cas de la cantonada, com negatiu 1, dóna'm 1, i que una
comprova cap a fora també.
I probablement jo vull fer alguna cosa més rigoroses proves, però estic bastant
còmode amb el lloc on això és a.
>> Bé, ara anem a tractar d'un altre programa que aquesta vegada utilitza un
poc d'una altra sintaxi.
Déjame crear un nou arxiu.
Vaig a trucar a la línia d'aquest conditions0.c amb un codi d'exemple en línia.
I m'ho dius a mi seguir endavant i fer incloure cs50.h, incloure
stdio.h, en void main -
D'acord.
Això és.
Tenim el nostre text model estàndard.
>> I aquesta vegada ho diré printf, "M'agradaria una int, si us plau," només per
fer que el sistema una mica més amigable.
I ara vull tenir una int des de l'usuari.
Vaig a dir-n aquest cop, només n perquè sona com a número.
getint, i ara, què fer El que vull fer amb ell?
Bé, si n és - i vaig a fer un zoom -
si n és més gran que 0, vull fer el següent -
printf "Vas triar un nombre positiu." Si no, escriuré printf "Vostè
triat un negatiu
nombre. "Molt bé.
Així que aquest programa, tot i que ho vaig fer ràpid, es veu bé sintàcticament.
Vaig a tractar això.
Fer condició 0.
Sembla córrer.
Estat 0, entrar.
Anem a donar-li un int de 50.
Vaig agafar un nombre positiu.
Anem a intentar-ho de nou.
Condició 0.
Negatiu 50.
Vaig agafar un nombre negatiu.
>> Però ara, anem a escollir el que seguirem trucar a un cas de la cantonada, que és més
un cas interessant que vostè pensa podria donar-li una mica de problemes, 0.
Ara, estic bastant segur que aquest és un aquells casos de cantonada on és zero
ni positiu ni negatiu, pel que el meu programa, tot i que en sintàcticament
corregir - es compila, s'executa - no és lògicament correcte.
Així que quin és la solució simple aquí si vull per detectar, si vull gestionar n
és igual a 0 per separat?
>> Així que si n és igual a 0, llavors vull dir alguna cosa així com printf "Vostè va agafar 0".
Vaig a tractar ara.
Déjame tornar aquí, desactiveu la meva finestra, i recompilar.
Hm.
Generar Un error.
Però jo t'estimo comprovar si n és igual a 0.
>> Així que de nou, una altra estupidesa acostumar-se a, signe igual és
l'operador d'assignació.
Així que aquest és en realitat error en què, tècnicament, tot i que el compilador
em va protegir de mi mateix, que havia tècnicament ser copiat 0 en n, que
No és el que vull.
Vull comprovar la igualtat amb iguals iguals.
I perquè sigui ara el meu millor solució.
>> Permetin-me tornar a guardar això com a realitat, dic, condiciones1, ser nova i millorada.
Així que ara si a compilar aquest, tindria condicions -
crits - fer condiciones1 dot slash condiciones1, Enter, "M'agradaria una int,
per favor. "Vaig a anar endavant i escriviu 50.
Segueix sent bo.
Negatiu 50, segueix sent bona.
0, i que, de fet, detecta que vaig recollir 0.
>> Llavors, què més puc ara faré amb això?
Bé, sens dubte podem fer cada vegada més coses complexes.
Però el que m'agradaria proposar és que vam acabar en aquesta nota aquí.
Si ens aturem això, veuràs, potser, una caricatura favorite seva
fins avui en dia es podria mai han entès.
I això és per la qualitat del riure vostè ha d'aconseguir amb acudits CS.
Així que això és correcte.
>> Però el més convincent, vaig pensar que havia donar-nos una mica bromista per dilluns.
Així que hem començat a utilitzar els nombres enters.
Ens hem referit a la flota.
Fins i tot ens hem referit dobles, que, de nou, es donarà un nombre
després dels punts decimals.
>> Però resulta que els flotadors i dobles, i, en definitiva, la informàtica,
fonamentalment, no es pot expressar alguns valors de precisió.
Sabem per les classes de matemàtiques que es pot tenir qualsevol nombre de números després de la
punt decimal.
I fins i tot es pot posar una barra vertical dir que aquests van per sempre.
>> Desafortunadament, vostè no pot realment fer-ho en un ordinador.
I així sorgeixen casos de cantonada.
Per exemple, suposem que vostè és fer alguna cosa financera.
Ho estàs fent matemàtiques amb percentatges, i
amb dòlars i centaus.
I aquests centaus no necessàriament del seu equip.
Bé, resulta que les fraccions de centaus poden començar a sumar quan
modelada amb un sistema informàtic de tal manera que intel · ligent
els éssers humans poden aprofitar.
>> I aquells de vostès que no han vist, m'havia agradaria donar-li a 30 segons teaser
una pel · lícula meravellosa coneguda com Office Space, de pintar un quadre d'un
problema farem front a primera hora de dilluns.
Si poguéssim augmentar el volum una mica, et dono 30
segons d'espai d'oficines.
>> [REPRODUIR VIDEO]
>> -Vull dir que, no has estat mostrant i vostè ha de mantenir el seu treball.
>> -En realitat, estic sent promogut.
>> -Podria programar un virus que havia esquinçar aquest lloc en gran.
>> -Bé, com funciona?
>> -Cada vegada que hi ha una transacció bancària on es calcula interès, i hi ha
són milers al dia, acaba l'ordinador amb aquestes fraccions d'un cèntim.
>> -Però jo no vaig a fer res il · legal.
>> -Il · legal?
Samir, això és Estats Units.
>> -Hem de juro per Déu.
>> -Si ningú sap d'això però nosaltres, d'acord?
No hi ha membres de la família, sense núvies, ningú.
>> -Per descomptat.
>> -D'acord.
>> -No et preocupis, home.
No li diré a ningú.
>> [FI REPRODUCCIÓ DE VÍDEO]
>> DAVID Malan: Això és, llavors, CS50, que era l'espai d'oficina, i ho farà tot
sentit dilluns.
Ens veiem llavors.
>> NARRADOR: En la següent CS50, Rob s'ajusta a estar fora de la
Pla de menjars Harvard.