[Powered by Google Translate] ZAMYLA CHAN: Tot correcte tothom,.
Benvingut al Tutorial 1.
Aquest tutorial és el conjunt de processadors 1, que és C. Espero que els
tots es van divertir amb els seus projectes de Scratch.
Així que ara en aquest tutorial, estem en realitat serà
capaç d'entrar en C, entrar a escriure una mica de codi màquina.
Així que si no estaven en Tutorial 0, llavors aquests
tutorials realment - anem a caminar a través de la
conjunt de problemes, parlar a través d'alguns consells i tècniques comuns
que pot utilitzar.
Anem a trencar l'assignació fins a trossets manejables, de manera que
vostès poden començar i és d'esperar
entendre com fer-ho.
>> Bé.
Així conjunt de processadors 1.
Els conjunts de processadors d'enguany tindrà una estructura en què la primera -
que serà una secció de preguntes, una sèrie de
preguntes que realment també l'ajudaran a començar amb
el conjunt de processadors, ajudarà a practicar algunes tècniques que vostè necessita.
I així aquestes preguntes, jo no vaig a cobrir en el
pas a pas, perquè en la seva secció, el seu ensenyament assignat
company en realitat va a caminar a través dels
preguntes amb vostè.
Al final de la secció, a peu amb el
respostes a aquestes preguntes, però també amb la confiança que
vostè pot posar en pràctica algunes de les característiques que vostè necessita
per a l'última part de la conjunt de processadors.
>> Pset 1 constitueix Mario.
I això és un programa petit i divertit en el qual essencialment
escriure i imprimir una piràmide enmig de la típica escena de Mario.
I a continuació, la segona part de la conjunt de processadors s'anomena Greedy.
I així, en Greedy que actuen fonamentalment com un cobdiciós
caixer, en què si algú ens dóna una quantitat de diners
que volem, podem calcular la quantitat mínima de monedes que
podem tornar a ells encara els dóna aquesta quantitat.
>> Està bé.
Així que cada tutorial tindrà una caixa d'eines.
I de nou, no es pot utilitzar totes les eines d'aquesta
caixa d'eines o usar tots ells.
En qualsevol cas, és molt bo saber el que
que està equipat amb.
Així que tenim l'aparell CS50, que vaig a mostrar que vostès i
presentar-li a això.
A continuació, també en general, un bon estil és definitivament un dels nostres
eines més importants.
Estil essencialment es refereix a com és llegible el codi?
Quan algú se'n va i llegeix el codi, tenen
una vida fàcil?
Poden entendre?
És elegant?
Llavors parlarem sobre com baixar l'entrada de l'usuari vàlid en el seu
programa perquè tant Mario i cobdiciós, haurà de
demanar a l'usuari que introdueixi i donar-li algun tipus de nombre.
Així que volem assegurar-nos que el nombre és vàlid.
Llavors recordi en Scratch, vam tenir blocs com ara repetició,
Repetiu fins que, o esperar, o per sempre.
Així que anem a la classe de traduir això en C i ara
mirar com bucles for, while i do-while.
Després també tenim també haurà de mostrar els valors de nou a la
pantalla, ja sigui en Mario o en Greedy.
I el que anem a parlar sobre com imprimir coses de les cadenes a
sencers i carrosses.
I, finalment, parlarem de pseudocodi, una realitat
concepte important que cal recordar en aquest curs.
El que em sembla més m'ajuda amb els butlletins de problemes és pensar i
descriure el que vull fer abans de pensar en qualsevol C.
Però just descriure l'acció.
Així que és una mena de pseudo entre Anglès i C, tipus de
descrivint els processos sense la sintaxi correcta però
proporcionar una estructura prou bo.
I així tindré alguns exemples de pseudocodi per a vostè també
en aquest tutorial.
>> Bé.
Llavors, què treballarem amb l'aparell CS50.
Bàsicament es tracta d'una màquina virtual que executa una mena de
ordinador dins del seu propi equip.
I això té un munt de beneficis.
Una d'elles és que es tracta d'un preset amb moltes de les eines que vostè va a
necessita per CS50.
Al seu torn, això significa que tothom està en el mateix terreny,
ja sigui Mac o PC o un altre sistema operatiu.
Tots podem executar la màquina virtual.
I així, hi ha instruccions en manual.cs50.net/appliance.
Així que si vostè va a aquest enllaç i segueix les instruccions,
llavors espero que vostè serà capaç d'instal · lar l'aparell.
>> Així que primer, haurà de instal · lar una aplicació, una
aplicació real a ser capaç d'executar la màquina virtual.
I després de descarregar l'aparell.
Però, de nou, hi ha instruccions en
manual.cs50.net/appliance.
Així que ja he descarregat el meu equip i jo hem instal · lat
en VMware Fusion.
I així, una vegada que he descarregat l'aparell, em vaig anar a arxiu.
Vaig anar a obrir i després trobar on jo
emmagatzema l'aparell CS50.
I a partir d'aquí, el córrer aquí.
Però jo el tingui instal · lat ja és aquí, així que anem a fer una ullada més de prop.
>> Està bé.
Així que ara estem dins CS50 Appliance.
Ho vaig fer de pantalla completa.
Vostè pot optar per fer-ho si així ho desitja o simplement com un
petita finestra a l'escriptori.
Aquí tenim un escriptori simple amb
una casa i un pot d'escombraries.
Però si vas a Menú i després a la programació, a continuació, veure
que tenim una cosa anomenada Terminal.
I aquí, podem navegar pel nostre equip.
Podem escriure codi.
Però, en realitat, estarem usant un programa anomenat gedit, o "g
editar ", el que és.
Així que anem a utilitzar que un que escriure codi.
Així que vostè té aquestes dues eines que utilitzarà principalment
d'escriure codi.
Després, en un altre lloc, és com un ordinador normal.
Comptem amb un navegador.
Triem Google Chrome.
El que hem fet és que hem creat un Dropbox per contenir tots els
els documents.
I això és una cosa que està molt animat.
Dropbox utilitza la sincronització de núvol i si és així -
Així, per exemple, alguna cosa per casualitat - esperem que no -
succeeix al seu aparell, llavors tot haurà
sincronitzat en el núvol.
>> Està bé.
Així que aquestes són les aplicacions que utilitzarà en la
CS50 Appliance.
Ara, per navegar al voltant de la línia de comandes.
El terminal pot actuar com una espècie d'una manera realment
escriure ordres en -
com, si vostè és un Mac, un Finder.
O si estàs en Windows, crec que això és "explorar el meu
ordinador "o alguna cosa per l'estil.
Així que si ens remuntem a l'aparell, anem a obrir un
finestra de terminal.
Així que té aquest sistema, jharvard @ aparell.
Anem a fer-ho més gran.
Bé.
Així que si escrivim la comanda ls, a continuació, que mostra tots els
arxius al nostre ordinador, en el nostre directori actual.
Els directoris són com si fossin carpetes.
Utilitzem aquests termes indistintament.
D'acord, hem fet una llista dels arxius
que estan en aquest directori.
Ara bé, si volem accedir, per exemple, el nostre Dropbox, aleshores podem
canviar de directori.
Així cd i després Dropbox.
Ens ls altra vegada, i llavors veiem la llista d'arxius que es troben en
aquesta carpeta.
Això és anàleg a em vaig a casa meva, a continuació, fer clic a
Dropbox, i després veure la llista aquí.
>> Està bé.
Així que anem a dir -
quan vostès faran que el seu conjunt de processadors 1, farem una
directori anomenat pset1.
Així que estem en Dropbox en aquest moment, com es pot veure en aquesta
sol · licitarà aquí.
Així que farem un directori.
Així mkdir, anem a dir-pset1.
I ara si nosaltres ls de nou, llavors
veure que pset1 apareix.
I així, si volem entrar pset1, llavors podem entrar
aquesta carpeta amb la comanda cd.
Està bé.
Així que de nou, anem a veure si podem -
dir, anem a fer-ho d'una altra manera.
Això és anàleg a dir "Crear
una nova carpeta, pset1.
Però a mesura que trobis, podràs estar en contacte amb
el terminal molt.
Així que de vegades és molt més fàcil, més ràpid perd un sol
treballar a la terminal per fer aquest tipus de coses.
Bé.
I llavors aquests altres ordres.
Hi ha un rm per eliminar un arxiu.
Així que poseu rm i després el nom de la
arxiu per eliminar-lo.
Anem a entrar en alguns exemples d'això més endavant.
I després tenim una cosa que es diu la comanda man, que
porta un manual per a un tipus de funció.
Un cop més, vaig a portar a col · lació un exemple real d'això més endavant.
>> Així que una altra eina molt important, com he esmentat breument
abans, és l'estil.
Per tant, bàsicament, l'estil té a veure amb la lectura.
Hi haurà algú més sigui capaç de llegir, seguir i
entendre el seu codi?
Això és especialment important per a vostè, vostè mateix, en realitat.
Si et quedaràs fins a finals de codificació, i més tard li
tornar enrere i vostè és com, què vol dir això variable?
Diguem que estem treballant en un projecte de grup amb algú, i et
ambdós tenen a veure l'un a l'altre de codi.
És molt important que vostè nom a les variables correctament
i fer que es vegi bé, perquè això fa tota la diferència.
Però per sobre de tot, estem en un curs en aquests moments.
Així que per l'interès de CS50 i especialment per a la seva
Teaching Fellows i anivelladores que buscaran en la seva
conjunts de processadors, si us plau, utilitzeu l'estil correcte.
I els seus companys d'ensenyament serà molt feliç.
Així que de nou, l'estil de sagnat inclou les coses correctament,
especialment l'ús dels seus aparells i sangria aquests.
Nomenar variables d'alguna cosa que té sentit.
En aquests moments seguim la convenció quan es té
diverses paraules en el nom de la variable, llavors
connectar amb un guió baix, com es veu en el fet que
nomenar exemple allà.
>> Llavors, finalment, una cosa que es diu nombres màgics.
Essencialment, quan vostè està llegint a través de codi i dir
té una variable -
dir, no té una variable però només dir que està bé, fins al
i tal és menys de 10.
A continuació, la seva filla anirà bé, espera,
D'on provenen d'aquest 10?
Així que en realitat explica vostè importa molt.
Per ajudar a explicar són els comentaris.
Els comentaris són probablement la cosa més important incloure en
seus programes.
I no només l'ajuda a explicar en realitat -
l'ajuda a explicar el seu tipus de raonament
vas al llarg.
I si ho fa, de nou, serà molt més fàcil
tornar al codi i el tipus d'entendre el que està
fent allà.
Un cop més, els estudiants de m'agrada comentaris.
Així que un comentari així i -
una mena punts de regal.
I qui no li agraden els punts gratis?
Vostè també pot tenir múltiples línies de comentaris.
I per això he inclòs una mena de plantilla aquí.
Essencialment, en general aquests s'utilitzen en la part superior del teu
programa a la classe d'explicar, en general, el que
el conjunt de problemes té.
Inclogui el seu nom, la data, etc.
I per això, com vaig dir en el comentari de diverses línies
manual.cs50.net/style_guide té més consells i regles sobre
estil de bucles, etc.
>> Bé.
Així que ara que t'ho he dit un poc d'estil, veurem
aquesta acció a.
Està bé.
Així que aquí, Tommy ens ha escrit una deliciosament horrible,
exemple d'estil en un programa.
Així que vostè veu aquí, tot bé.
Això és realment bé.
Ja veus el comentari de diverses línies aquí.
El començar amb una barra inclinada i després dos asteriscs.
Es prossegueix per, alineant els asteriscs al llarg de la línia
i després acabar amb un asterisc i una barra.
Està bé.
Així que això està bé.
Això aquí està bé.
Ha incloent les seves biblioteques.
Però llavors aquí té comentaris abasten diverses línies.
Hi ha un munt de coses malament amb això.
Comentaris abasten diverses línies, aquí ell està usant
la sintaxi de les línies de comentari només individuals.
També està fusionant tot en el mateix comentari.
Així que volem evitar això.
Llavors aquí veiem que aquestes claus, per exemple, són tots
el lloc.
La sagnia és erroni.
En realitat, no li mostri on definitivament alguna cosa
Comença i acaba una altra cosa.
Llavors, així, veiem que té una variable definida i = 5 aquí.
Però aquest quatre ve del no-res, i no hi ha
comentaris per explicar realment on ve.
>> Bé.
Així que ara anem a veure una cosa que en realitat és el mateix
codi excepte amb millor estil.
Així que de nou, aquest és l'exemple de bon estil,
l'exemple de diverses línies.
I llavors aquí és molt net.
Veiem que comença una sentència if aquí, entra en una nova
línia, té una clau oberta.
Llavors ell té una osca.
Es manté aquesta sagnia -
manté aquesta indicació uniforme a tot el territori
programa i realment es nota quan un bloc de codi s'inicia, quan
un bloc de codi acaba.
Això pot semblar una mica primmirada de la nostra part per començar
amb, però ja veuràs com estàs escrivint codi.
És molt útil poder separar això.
I un cop més, els seus alumnes realment així.
I pel que veig, en lloc de limitar-se a posar un nombre a
allà, en realitat el nom de les iteracions variables.
I el que no estem realment mirant aquest codi en aquest moment
però només una mica de veure un exemple de
estil bé contra el mal.
I si ens fixem en ells banda a banda aquí, oi
definitivament prefereixen llegir l'un a la dreta.
>> Està bé.
Així que una última cosa abans de submergir-se en la veritable substància de la
conjunt de processadors és com compilar i executar el codi.
I així, essencialment quan s'escriu C, que en realitat no és
traduït en el codi màquina real, els zeros i
els que la màquina pot llegir i interpretar.
Així que tenim alguna cosa -
Clang és un compilador que fem servir per C.
Hi ha molts compiladors.
Però en CS50, utilitzarem Clang.
I així Clang bàsicament es tradueix de C a màquina
codi per a vostè.
Així que anem a veure un exemple - Baptisme en l'aparell aquí.
Està bé.
Així que ara mateix estem en el nostre directori home.
En realitat no hi ha cap codi on està.
Així que anem a canviar el nostre directori per Dropbox/walkthrough1, on
He guardat una mica de codi.
Així que si premem ls, llavors veiem que tinc una
parell d'arxius d'aquí.
>> Està bé.
Així que ja he escrit hello.c, així que anem a compilar
i després veure el que fa.
Així que una ordre de compilació bàsica seria llavors clang hello.c,
essencialment dient bé, compilar hello.c per a mi.
Faig clic a Enter, sembla haver anat bé.
Anem a ls clic de nou.
Aquest arxiu a.out ara ha demostrat.
I així a.out és un arxiu executable.
Així que per córrer, fer un. / A.out.
I així veiem que aquest programa hello.c aparentment
imprimeix hola cinc vegades.
Està bé.
Però dir que no voleu utilitzar el nom a.out.
Per exemple, volem executar el programa hola ja que
fa que sigui més fàcil d'entendre.
Així que diguem que hello.c clang, i llavors essencialment el que necessita
per passar en algunes coses que es diuen les banderes.
I dient això està bé, així que vull anomenar aquesta altra cosa.
També es pot passar en un munt de banderes diferents,
que veuràs.
Per tant la bandera per nomenar un programa alguna cosa que
volem és-o.
Després-o, s'escriu el nom del programa.
Anem a cridar hola.
>> Així que ara veiem que en realitat tenim un arxiu executable hola.
Així que podem córrer, i fa el mateix que abans.
Així que ara que tenim hola, també podem eliminar, per
exemple, el nostre a.out.
Així que rm per eliminar, a.out, el seu telèfon li demanarà, pregunti
perquè confirmi si realment desitja
esborrar o no.
Diem i per a si.
I aquí anem.
A.out s'ha anat.
Està bé.
Però de vegades és confús per recordar tota la
banderes que hem d'incloure i teclejar so metàl · lic.
I com veiem quan estem fent servir programes més complexos, anem a
ser incloses les biblioteques diferents.
I així, els nostres comandaments a Clang obtindrà més i més.
Per tant inclòs en l'aparell CS50 és la comanda make.
Així que simplement escriure make hello.
Oops.
Ja hem fet l'arxiu executable.
Així que m'acaba de treure.
Ara anem a escriure make hello.
I vostè veu aquí en aquesta línia que diu essencialment fer
hola involucra tots els comandaments que
entrar-hi per a vostè.
>> Per tant inclòs en l'aparell CS50 és l'arxiu make.
Així que, simplement, quan vostè té un name.c arxiu, llavors tot el que fan
és a dir fer que el nom de l'arxiu.
I llavors tindràs un arxiu executable
arxiu amb aquest nom.
Sí?
>> Ponència 1: Per el meu ordinador, en lloc de Clang diu GCC.
És com -
ZAMYLA CHAN: Si.
Així que l'equip podria dir GCC en lloc de Clang perquè
GCC és un altre tipus de compilador.
Si vostè està en el Appliance CS50 encara, llavors aquest
d'utilitzar Clang.
Si no és així, llavors potser venir a parlar amb mi després o enviar
sobre CS50 Comenta i podem resoldre això.
>> Està bé.
Així que ara que tenim el nostre tipus d'eines bàsiques cap avall, llavors
pot submergir-se en Mario.
Bé.
Així que Mario és un programa en què bàsicament serem
fer que la nostra pròpia espècie de versió primitiva del Mario
joc de fons.
Ja saps, Mario té generalment un tub i una
arbre i alguns blocs.
I després hi ha una espècie de piràmide meitat.
Així que només anem a centrar en la piràmide de la meitat,
fer que el codi tal que imprimeix els valors hash per a la classe
de blocs en aquest format.
Llavors, ¿què passarà és que l'usuari va a introduir una certa
altura de la piràmide, i llavors vostè imprimir que fos
de tal manera que la part inferior esquerra de hash -
pel que en la part inferior dreta aquí - que un s'alinearan
amb la part inferior esquerra de la terminal.
Bé.
>> Així que la primera cosa que vostè necessita -
el primer problema petit mini que hem d'abordar és com
per obtenir l'entrada de l'usuari.
Així que hem d'estar bregant amb el que l'usuari introdueix i després
tipus de coses hi ha sortida.
Així que donem una ullada a buscar un arxiu anomenat apples.c que vaig escriure
que té a veure amb les entrades i sortides.
Bé.
Així que aquí a la part superior, he inclòs algunes de les biblioteques
el que necessito.
El que realment importa aquí és stdio (estàndard I / O). Que s'ocupa de
amb entrades i sortides estàndard, perquè anem a
es tracta d'entrades d'usuari.
Està bé.
Així que començo la meva funció principal.
I llavors li demano a l'usuari bé, quantes pomes té?
Llavors aquí, el que fa aquesta línia -
Assigno la variable i amb el valor de getInt.
>> Així getint és una funció que s'inclou en stdio.
I així, en essència, que s'ocuparà d'ell per a vostè.
Se li demanarà a l'usuari per a un int.
El que tornen, que s'assignarà a la
la variable i.
I així, llavors és només un petit programa que disminueix la
valor de R per 1 i després s'imprimeix el valor nou.
Una cosa bona de gedit és en realitat que hi ha un mini
terminal de la dreta aquí.
Així, en lloc d'haver de canviar cap endavant i cap enrere entre
gedit i el terminal, en realitat es pot
el executes des d'aquí.
Així que primer anem a entrar al directori correcte.
Així que anem a canviar els nostres directoris per
Dropbox/walkthrough1.
Està bé.
Així que ara farem les pomes, compila per nosaltres.
Així que ara anem a executar les pomes.
Quantes pomes tenim?
Em diuen que tinc 3.
I diu "mwahaha vaig a menjar a un d'ells", i diu
"Ara té 2 pomes".
>> Està bé.
Així que anem a córrer de nou.
I diguem que tinc una poma.
Ara tinc 0 pomes.
Bé.
Així que aquest programa sembla funcionar com s'espera.
Ens entrada a un nombre, que disminueix en 1 i, a continuació
imprimeix un altre cop.
Però el que si, per exemple, tinc -1 pomes?
Això no acaba de tenir sentit.
Però tot i així és un nombre enter, de manera que el programa ho accepta.
I així li retorna un nombre encara més negatiu.
Així que aquesta és una lliçó per a nosaltres que tot i la getInt
funció i els altres associats, com ara
GetFloat o GetString -
tot i que aquells ens portarà el tipus de dades correcte, per
exemple, si jo acabava de dir [escrivint],
llavors em deia que torni a intentar-ho.
Així que això va a fer front a qualsevol tipus de dades de la seva entrada
és però no es comprovi en realitat, així, en realitat és un tipus de
valor que jo vull?
Llavors una part de Mario és que l'usuari ha de introduir un
nombre que representa l'altura de la piràmide 1/2
que vostè està fent.
I llavors, si estem provocant en aquest usuari per l'altura, llavors
ha d'haver dos límits sobre això.
¿És cert?
En l'especificació, que diu que no hi ha més de 23
personatges perquè això és una mica de la norma
alçada de la terminal.
Però llavors, què enquadernat, potser una cota més baixa, podria
volem incloure?
>> Si estem realment dibuixar una piràmide, forma de pensar de nou
a dalt d'una piràmide pot ser, pot mai ser inferiors a un
nombre determinat?
ALTAVEU 2: Per sobre del tres.
ZAMYLA CHAN: Hmm?
ALTAVEU 2: Per sobre del tres.
ZAMYLA CHAN: Aquest és un bon punt.
Podria ser -
podríem voler limitar a només una piràmide de tres nivells.
Però anem a pensar -
diguem com una taula hash es compta com una piràmide també.
Llavors, ¿quina ha de ser la nostra actual límit inferior serà?
Pensant en les illes, no volem un
piràmide alçada negativa.
¿És cert?
Bé.
Així que quan vostè demana l'entrada de l'usuari, llavors vostè haurà de
incloure alguna manera d'assegurar-se que el nombre sencer que
que li proporcionen no és negatiu perquè no es pot
dibuixar una piràmide negativa.
>> Bé.
Així que hi ha un parell de maneres de fer això.
Bàsicament, un cop de demanar l'entrada de l'usuari, que vol demanar
que et donen amb l'entrada correcta.
Així que vostè vol exigir que se li donarà un número
que no és negatiu, sinó també menys de 24.
Així que ens enfrontem a zero al 23, ambdós inclosos.
Està bé.
Per això volem demanar contínuament -
si no ens han donat un enter vàlid, volen
contínuament demanen no.
Dóna'm una entrada vàlida.
Dóna'm una alçada vàlida.
Així recordar de nou en Scratch, vam tenir la repetició fins que el bloc o
Sempre Si el bloc.
Aquests són els bucles que són molt similars al bucle mentre i
acord el bucle while, que ens ficarem en només en un segon.
De manera que el bucle while té essencialment una condició que comprovi
això és un valor booleà que vostè col · loca dins d'allí, com el
blocs en zero amb els angles.
Això és el que passa dins dels claudàtors del bucle while.
Així que hauràs de tenir algun tipus de condició allà.
I com ja hem comentat anteriorment, aquesta condició
tenen a veure amb els límits del sencer que s'introdueix.
Així que l'estat tindria alguna cosa a veure amb el fet
el nombre sencer està dins dels límits adequats.
>> Així que això és un bucle while.
Per exemple, vostè pot sol · licitar el nombre sencer i després
comprovar contínuament mentre que aquesta entrada no és vàlida.
Per exemple, tingui en tornar a preguntar, segueix demanant
l'usuari d'un nombre enter.
Així que això podria ser una manera.
Una altra manera podria ser un document while, que és molt
similar a un bucle while, excepte el que és un fer, mentre que fa és -
pots tipus de veure la sintaxi -
és que té el fer i després el cos del cicle actual en primer lloc.
Llavors té les condicions while.
Llavors, què while -
el que són útils perquè, efectivament, és executar el
codi almenys una vegada i després comprovar si la condició és
complert o no.
Així que si vostè anés a fer un do while, llavors dins del seu
declaració que vostè pot sol · licitar un nombre enter perquè vas a
per la qual cosa demanar a l'usuari una vegada.
I després, després que els del sistema, llavors es pot dir molt bé,
bé una vegada que he fet això, és vàlid?
Si és així, llavors vostè pot seguir endavant.
Però si no és així, llavors només vaig a actuar com un regular mentre
bucle i després seguir preguntant.
>> Bé.
Així que tornem a Mario.
Així que sabem com s'ha de sol · licitar la intervenció de l'usuari és correcta
dins dels límits adequats.
Així que ara que realment es necessita per dibuixar la piràmide meitat.
Sembla que els caràcters de text simples.
Així que en realitat obert -
anem a obrir una finestra i dir molt bé, així que si jo fos
en realitat va a fer-ho manualment, escriviu una sola?
Bé.
Així que anem a veure.
Diguem, per exemple, volem fer una piràmide que és
alineats al llarg del costat esquerre, a continuació, només faria -
en Mario, el nivell superior té dos blocs en lloc d'un.
Així que vam començar amb dos.
Fem clic a D'acord.
Ho fem tres, i després quatre, Enter, cinc.
Bé.
Per tant és simple.
Excepte en aquest conjunt de problemes, ho volem realment per alinear-se amb
la part dreta de la nostra pantalla.
Està bé.
Llavors, com pot un de vosaltres en realitat aquest tipus de manera que
està alineat al llarg de la dreta?
En lloc de posar la picada en primer lloc, com vostè pot ser de tipus
moure al llarg?
ALTAVEU 3: Escriu una línia?
ZAMYLA CHAN: Hmm?
ALTAVEU 3: Escriu una línia?
ZAMYLA CHAN: Si.
Si.
Es pot escriure com un guió o alguna cosa així
això, sinó que es pot dir simplement utilitzar un espai.
Posem com en tres espais aquí.
A continuació, la següent línia, bé, hauríem de posar dos espais.
La següent línia, que només cal posar un espai.
I per a la nostra última línia, que no posaria cap espai.
I aquí tenim la nostra piràmide.
>> Així que és una mena de -
Recordo aquest tipus de lògica.
I tractar d'esbrinar algun tipus de patró que podem
després traduir a C i involucren en algun tipus de bucle.
Està bé.
Així que diguem que tenim una alçada vuit, llavors la nostra primera filera tindrà
02:00 hashes.
No obstant això, per obtenir els hashes, vostè hauria d'escriure alguna cosa
espais per endavant.
¿És cert?
El que vaig fer és que jo vaig passar.
El vaig dibuixar jo mateix, una piràmide al meu editor de text, un
piràmide, amb una alçada de vuit anys i s'ha calculat el nombre de
espais que necessitava per fer.
Així que li vaig dir que sí, bé la primera fila és
tindrà dos hashes.
Però abans d'això, ha d'introduir set espais.
El següent té sis espais i després
03:00 hashes, etcètera.
>> Així que anem a tractar de portar això a un altre nivell de
abstracció.
Què passaria si tinguéssim la enèsima fila, com hashes i quants
molts espais que necessitem?
Algú veu el patró?
Així que la primera fila té dues hashes.
La segona té tres.
El tercer té quatre.
Així que l'enèsima fila tindria -
ALTAVEU 4 N + 1?
ZAMYLA CHAN: Si.
N més 1.
Exactament.
Així veiem que el nombre de hashes serà -
si estem comptant la primera fila per ser un, llavors el nombre
de hashes és només serà un més que això.
Bé.
Llavors què passa amb el nombre de places?
Així que anem a tractar d'expressar això en termes de l'altura.
Si l'alçada és de vuit, a continuació, la primera
fila té set espais.
Així que aquest tipus de 8 correspon a menys 1.
¿És cert?
Així que la segona fila tindrà sis espais,
que és menys 8 2.
Així que vaig a deixar a vostè a la classe de figura fora
el patró perquè.
>> Bé.
Però en la programació, de vegades realment índex en zero.
Així que vam començar de zero en comptes d'un.
Així, en lloc de la primera fila es diu la primera fila,
estarem trucant a la fila 0-th.
Així que depenent de la manera desitjada per aplicar, es
molt de compte si vostè comença a zero, si vostè comença a
un, el seu patró serà compensat per una.
Bé.
Així que ara que tipus de descobert el programa,
he de dir bé.
Així, per cada tipus de nivell de l'escala, em vaig a imprimir
tal i tal nombre d'espais i, a continuació tal
tal nombre de hashes.
Això depèn del model que hem creat abans.
Bé.
Així que una manera de iterar i amable d'anar
a través d'un nombre establert de les coses és un bucle, una espècie de
la repetició del bloc 10 o repetició similar i ha introduït un
nombre d'Scratch.
Per tant, bàsicament, per a cada nivell d'escales, anem a voler
imprimir els espais primer.
A continuació, imprimiu el nombre de hashes.
I llavors voldrem entrar en una nova línia i després repetir
de nou per al següent bloc.
Bé.
>> Així que donem una ullada als bucles for per un segon per veure un tipus de forma
perquè puguem anar a través d'un nombre determinat, aneu a través del número
de passos d'aquesta piràmide meitat.
Així que per bucles es compon de tres parts.
En primer lloc, vostè té una inicialització.
Per tant, bàsicament, s'estableix una variable.
Estarà en aquest valor cada vegada
que l'arrancada en bucle.
A continuació, tindrem una condició.
El bucle for s'executarà només en tant que
condició s'avalua com a veritable.
I llavors vostè té un problema d'actualització.
Així que té a veure amb la variable que s'inicialitza.
Així que, bàsicament, una forma d'assegurar que puguem sortir
del bucle, que no mantenim en l'execució de
per sempre i per sempre.
Perquè a diferència de Scratch, que en realitat no tenen un
llaç pla Forever.
En C, el programa ha d'acabar amb el temps.
Així que hem d'assegurar que d'alguna manera hem detenir.
>> Bé.
Així, un exemple d'un bucle for que és possible que vulgueu utilitzar per
Mario és això.
Així que tens un enter i que comencen en 0.
Mentre que és menor que l'alçada, s'executa el cos
del bucle interior aquí.
Després que el cos del bucle s'ha executat, llavors ho faria
incrementar i en 1.
Després, el programa pots tornar a intentar - està bé, bé, i és menor que
l'alçada?
Si és així, llavors vostè podria continuar.
Així que aquí està un exemple de zero indexació, on vam començar a
zero i després -
compte que la nostra condició és menor que l'altura.
Així que dir que la nostra alçada és de quatre, per exemple, i
començarà a 0.
Serà 1.
Serà 2.
Serà 3.
I després, un cop que s'actualitza, quan el bucle per les actualitzacions, ho faré
a continuació, s'estableix en 4.
Però 4 no és menor de 4, i així que fèiem
continuar amb la resta del nostre bucle.
>> Bé.
Així que comença a zero.
Però també podríem començar a la una, per exemple.
Però des que vam començar a un, quin tipus d'haver d'anar a una més
temps al final.
Així que per això li sumem el menor o igual a.
Així que una de les grans coses que m'agraden d'ordinador
programació és que no és tan
moltes maneres de fer les coses.
Així que vostè pot decidir si vol començar de zero, ja sigui que
començar a la una.
A més, si volia, es podia utilitzar un
mentre que el bucle, per exemple.
Així que vostè podria -
anem a hello.c realment obert.
Així que tenim un bucle aquí.
S'inicia a i = 0, i <5.
Tinc un comentari aquí ens diu el que fa.
Imprimeix saludar cinc vegades usant un bucle for.
Però també podria fer que l'ús d'un bucle while també.
>> Així que donem una ullada a com podem fer això.
Així que si anem a simular un bucle for, també volem
imitar la inicialització, la condició, i l'actualització.
Així que la condició ha de ser bastant simple ja que en el
mentre que la sintaxi, quan es miri, diu while (condició).
Així que anem a introduir la condició allà.
i <5.
Bé.
Així que sabem que volem imprimir adéu.
Sabem que aquest és el cos del nostre bucle.
Però ens falta la inicialització
i l'actualització, no?
Com que no pot tenir un bucle infinit.
S'ha d'acabar.
Així que anem a afegir algun tipus d'inicialització aquí amb el
mateixa que hem utilitzat en el nostre bucle per, int i = 0.
Bé.
Així que vam començar amb un int i.
Repetim aquest bucle while, sempre i quan i és menor que 5.
Així que ens falta una cosa, que és l'actualització.
Llavors, què seria d'actualització que hem d'utilitzar si eren essencialment
recreant el bucle for de dalt?
Tenim la inicialització i és igual a 0.
Tenim la condició i és menor que 5.
I llavors aquí és una actualització, no?
Així que volem copiar això.
Volem dir molt bé, i + +.
Això és el mateix que dir i = i + 1.
Però ja que s'usa tan sovint, forma abreujada que és només
dient i + +.
>> Gran.
Bé.
Aquí realment no ha sortit del meu programa de pomes.
Així que només vaig a premeu Control-C i així que
botes em fora del meu programa i porta
de tornada a la terminal.
Així que, per exemple, si et trobes amb un error en el qual vostè
es va oblidar d'actualitzar el seu bucle while de manera que ho faria
acabar i entrar en un bucle infinit, llavors es pot
utilitzar Control-C per sortir d'això.
Està bé.
Així que estem al directori correcte.
Així que farem hello.
I després, si correm hola, veiem que el bucle adéu fa
exactament el mateix que el nostre bucle for fa.
Així que això és només un suggeriment.
Ja sigui que vostè està més còmode amb bucles for o
amb cicles while, poden ser intercanviables.
Així que qualsevol que voleu utilitzar per iterar a través de -
en aquest cas -
l'altura de la piràmide Mario.
I així, una vegada més, això és només un recordatori, si s'inicia en zero
per a la variable, llavors vostè voldrà tenir una diferent
condicions que si vostè va començar a la una.
Així que aquesta taula només tipus de mostra un recordatori.
Per repetir 10 vegades, per exemple, llavors vostè
Podeu iniciar la variable en zero.
I la seva condició pot ser inferior a 10.
Així que amable de la seva part mostra la matriu d'això.
>> Bé.
Així que hem passat per Mario.
Hem dit acord, bé hem de comprovar per l'entrada correcta,
zero i inclusiva 23.
Ens trobarem algun tipus de patró, algun tipus de forma
d'expressar la n-èsima fila o la fila i-èsima.
I anem a decidir, Val, anem a imprimir aquest
molts espais, això hashes molts, línia nova.
Està bé.
Així que hem de.
Així que ara podem passar a Greedy.
Greedy és un programa on un usuari li dóna una quantitat de
efectiu que essencialment vostè com el caixer de tornar.
Però vostè vol utilitzar monedes tan poc com sigui possible.
I aquí és on un algorisme cobejós arriba, on
anem a voler utilitzar la mínima quantitat de monedes possible
fer aquesta quantitat de canvi.
>> Bé.
Així, un exemple d'això en la seva solució podria ser
alguna cosa com això.
Executa. / Cobdiciós.
Se li demanarà que dir bé, bé quant canvi es deu?
Aquest valor es serà un valor en dòlars.
Així que serà un flotador.
El programa calcularà la suma mínim
de monedes requerides per fer, en aquest exemple, $ 0,32.
I així, el nombre mínim és de quatre.
Així que abans de decidir què fer, anem a classe de passeig
a través del procés que vostè pot anar sobre.
Així que si l'entrada és de 32, llavors essencialment que utilitzaré
el mínim de monedes si ús com molts
monedes grans com sigui possible.
¿És cert?
Així que és molt més fàcil d'usar com a quart
comparació amb cinc monedes de cinc centaus.
Així que anem a dir, ha de tornar 0,32 $.
Bé, puc fer servir una quarta part en això?
Sí, es pot.
I llavors es reduiria a $ 0,07.
A veure si puc utilitzar un altre trimestre de reemborsament.
Bé, no.
No pot cabre una quarta part en això.
Així que vaig a passar a la moneda més gran següent.
Puc utilitzar una moneda de deu centaus?
0,07 $, no vostè no pot utilitzar una moneda de deu centaus de pagar $ 0,07.
Així que dir que no.
Mou a la següent, que és un níquel.
Es pot utilitzar una moneda?
Sí
Set és major de $ 0,05, de manera que podem utilitzar una moneda.
I després tenim dos centaus sobre l'esquerra.
Podem utilitzar un cèntim?
Sí que es pot.
Podem utilitzar un cèntim?
Sí
Podem utilitzar un cèntim?
No, perquè ara tenim èxit
pagat la part posterior de l'usuari.
Així que en total té quatre monedes utilitzades.
>> Així que pensant en aquest procés, cada
moment decidir bé,
Quina és la moneda més gran que podem utilitzar?
Quan fem servir, quin tipus de mantenir una nota mental de quant
més diners que necessitem per tornar l'usuari, així com el nombre de
monedes que han estat utilitzant.
Bé.
Així que de nou, el primer pas - igual que Mario - és preguntar
l'usuari una quantitat monetària.
I així, aquesta quantitat serà -
que tindrà un valor decimal, perquè anem a
demanar-los dòlars.
Així que tipus de dades no serà un nombre enter.
Però serà un -
sí, un flotador.
Però igual que les pomes, els flotadors poden ser positius o negatius.
Així que quan et registres per als valors, vostè va a voler
per assegurar que el seu flotador -
l'entrada de l'usuari - és no negatiu.
Bé.
Podríem tractar amb flotadors al nostre programa conjunt, representen
quarts de 0,25, un 0,1 dimes, et cetera.
Però em resulta molt més fàcil de tractar en només centaus purs.
També -
i parlarem d'això una mica més tard -
al carrer, punts flotants tenen alguna cosa que es diu la imprecisió.
Així que quan vostè entra en 0,12, per exemple, l'ordinador
emmagatzema realment com com 0.1111119 o
alguna cosa per l'estil.
>> Així que és molt més fàcil convertir centaus.
Llavors, com convertir un valor en dòlars a centaus?
ALTAVEU 5: Times per 100?
ZAMYLA CHAN: Si.
Si.
Així que ho faríem vegades per 100.
Però una cosa difícil sobre els punts flotants és que hi ha
és una certa imprecisió.
Així que anem a veure un exemple.
Així que vaig a obrir imprecision.c.
Bé.
Aquest és un programa molt simple.
Es demana un flotador, i s'imprimeix de nou.
Un bon consell a la terminal és que pot simplement escriure clar i
llavors vostè té una pantalla clara.
I el que no cal buscar en qualsevol sortida anterior o qualsevol
errors o bugs informes, alguna cosa així.
Bé.
Així que farem imprecisió.
Anem a executar-lo.
Així que haven't -
en el meu codi, no s'imprimeix cap missatge ni res d'això.
Per tant, només té un cursor parpellejant.
Així que només m'espera a l'entrada d'un flotador.
Així let 's -
un flotador aleatori.
I es veu que s'imprimeix de nou, però té alguna cosa extra
nombres que definitivament no va acceptar.
Així que volem assegurar-nos que això no ho fa
succeir en el nostre programa.
>> Així que el que volem fer és assegurar-nos que realment
tipus d'arrodonir al valor adequat.
¿És cert?
I així, per sort, tenim una funció anomenada ronda inclòs
en l'aparell.
Està a la biblioteca matemàtica.
Si vols saber com utilitzar tot l'any, llavors vostè realment utilitzar
el manual.
Podeu fer clic en rodó home.
Llavors aquí es planteja -
pot ser una mica difícil de desxifrar, però amb el temps
vostè aconseguirà la caiguda d'ella.
En certa manera li mostra el que fa la funció i una mica més
possibles usos que.
Així que quan vostè finalment aconsegueix una entrada correcta, vàlida a partir de la
usuari, llavors vostè vol convertir centaus.
Comproveu arrodonir el valor per evitar aquesta
surant imprecisió punt.
>> Bé.
Per això hem demanarà a l'usuari una quantitat monetària.
Ara el que vull fer és comprovar essencialment, oi?
Bé, així que puc utilitzar la moneda més gran possible?
Si pot, llavors que l'utilitzi.
Vostè manté un registre de quantes monedes que ha utilitzat fins ara i
també la quantitat decreixent.
¿És cert?
I llavors vostè va a comprovar.
Quan hagi esgotat mena de quarts de final, vol anar
al següent possible.
>> Així classe quin tipus d'estructura de bucle o el que podríem
voleu utilitzar per comprovar contínuament si encara podem utilitzar
una quarta part, per exemple?
ALTAVEU 6: Mentre major valor de?
ZAMYLA Chandler: Sí, perfecte.
Exactament.
Així, mentre que el valor és més gran que.
Així, mentre que el valor que hem de donar l'esquena és encara
més gran que una quarta part, mentre que encara podem utilitzar una quarta part,
utilitzar trimestres.
Porteu un registre d'això.
I després seguir endavant.
Perfecte.
Bé.
Oh, aquí acabo incloure només alguns consells sobre com imprimir
valors fora.
Així que en la seva funció printf, hem estat en general només
tractant amb cadenes.
Però quan es vol imprimir un int o qualsevol tipus de
dígits, vostè ha d'escriure una classe de tipus de marcador de posició.
Així que està representat pel percentatge,% d per sencers.
Vostè escriu que, a continuació, després vostè realment -
després d'una coma -
posar en valor el que realment passa allà.
Dreta.
>> Bé.
Així que hem decidit que volem comprovar si -
com fer-ho seria la de comprovar constantment la
encara podem utilitzar quarts, i useu els quarts, mantingui
seguir, i després passar a la següent gran valor.
Ara, un altre tipus de forma elegant que vostè pot fer això és
utilitzant el mòdul operador.
Així que ja tenim el més, menys, multiplicar i dividir
disponible.
No obstant això, l'operador de mòdul és molt guai.
El que fa és que en realitat li retorna la resta de
dividir dos nombres.
Així que si vostè recorda a la divisió llarga quan ho faria, per exemple,
fa 74 dividit per 3, l'escriuria, pròrroga,
restar, i després, al final és el número a la part inferior
la resta.
Bé, què mòdul és el que realment et dóna això.
Així mòdul 3 74 li posaries a 2.
De la mateixa manera, 10 modul 2 et dóna 0 perquè no hi ha cap
resta en dividir 10 per 2.
6 mòdul 5, 5 va bé en un 6 vegades i després
que hi hagi un sobrant.
Llavors, si vostè té 7 mòdul 9, i 9 és major que 7.
Per tant, no pot anar cap altre moment.
Així que és lògic que el valor de retorn és de 7.
Així que si vostè pensa en mòdul, com se li dóna la resta
després de dividir una cosa, pots tipus de veure com
podria ser capaç d'utilitzar en Greedy, oi?
Així que si vostè combinar el tipus de mòdul potser amb la divisió
operador, o alguna cosa així, llavors vostè podria tenir un lloc fresc
tipus de forma mathy abordar el conjunt de problemes.
>> Així que ara que sabem que hi ha un parell de diferents
formes en què podem fer això - hi ha sens dubte un munt de
diferents maneres d'escriure, fins i tot els bucles while.
Així que he escrit algunes pseudocodi aquí.
Potser no és idèntica a l'espècie d'esquelet del seu
codi que s'escriu.
Però essencialment, el procés i la manera de pensar és
just com ho discutim.
Així que, primer, la primera línia està dient a obtenir una determinada quantitat
en dòlars.
I després hi ha implícit convertir-lo en centaus.
Llavors, mentre quartes parts es pot utilitzar, volem
augmentar el compte.
I després volem disminuir la quantitat, el valor que
estem tornant enrere.
Com es veu aquí, no és prou C. Però també he
sagnia coses, vaig posar les meves condicions dins
parèntesi.
>> Així que aquest tipus de em aconsegueix començat.
I més tard, puc mirar cap amunt la sintaxi.
Sovint, la part més difícil realment d'un problema és
entendre què és exactament el que heu de fer.
Així que una vegada que s'escrigui això, llavors és molt més fàcil llavors
es tradueixen en pseudocodi.
I després de pseudocodi, la sintaxi ve bastant fàcil.
Veiem, doncs, mentre trimestres, es pot utilitzar, augmentar el recompte,
disminuir la quantitat.
Si bé es pot utilitzar monedes de deu centaus, llavors vostè ho faci així successivament i així
successivament, fins que hagi esgotat totes les seves monedes.
De imprimir el nombre de monedes utilitzat, que serà el
quantitat mínima per fer que l'usuari introdueix el valor.
I allà té el seu algorisme cobdiciós.
I després, un cop que hagi acabat, vostè també ha acabat conjunt de processadors 0.
>> Algú té alguna pregunta sobre alguna cosa?
Està bé.
Bé, em quedaré una mica després si té
qualsevol pregunta.
Això va ser tutorial 1.
Gràcies per venir.