[Reproducció de música] ZAMYLA CHAN: Prefereixes rebre $ 10 milions en aquest moment o rebre centaus tots els dies del mes, quan cada dia subsegüent, rebrà el doble de la quantitat de monedes que rebut el dia anterior? En penics, anem a demostrar per què vostè ha definitivament prendre les centaus. El seu treball és escriure pennies.c-- un programa que demana primer l'usuari com Hi ha molts dies al mes i li pregunta quants centaus a l'usuari rebran el primer dia. El programa ha de calcular el quantitat que l'usuari haurà acumulada al final del mes i mostrar-ho. Podem trencar aquest programa fins en un parell de tasques. Anem a necessitar per sol · licitar múltiples entrades d'usuari - dies i mesos, i d'un cèntim en el primer dia. Necessitem fer un seguiment de la quantitat de diners l'usuari té i actualitzar-lo cada dia, duplicant la quantitat de centaus que reben. I, finalment, imprimim la seva final total, en dòlars. Anem a la entrada de l'usuari tackle primer. Vaig a obrir apples.c, programa curt que tracta amb entrades i sortides. A la part superior aquí, he inclòs alguns de les biblioteques que necessito - Biblioteca CS50 i un estàndard I / O biblioteca. Puc imprimir un missatge mitjançant el funció printf de la biblioteca d'E / S estàndard. Però l'impuls real de l'usuari que passa a la següent línia amb aquesta Funció GetInt a la biblioteca CS50. GetInt obté la entrada de l'usuari i garanteix que l'entrada és un nombre enter. Així que guardo l'entrada de l'usuari en sencer I, restar 1 a I, i després imprimir el nou valor si i. Després de compilar apples.c utilitzant el comanda "make pomes," Tinc una pomes arxiu executable. Execució d'això, vaig a l'entrada 1. El programa em diu que Tinc 0 pomes a l'esquerra. I això va funcionar com s'esperava. Així que anem a córrer de nou i l'entrada negativa gener. Ara, amb un import negatiu de les illes no té gaire sentit, però el programa accepta, perquè la negativa 1, bé, és un nombre enter. I ara, el programa o el monstre dins del programa menja un negatiu poma, i ara tinc 2 illes negatius. Hm, així que això és una lliçó - tot i que la funció i GetInt funcions relacionades, com GetFlow o GetString obtenir el tipus de dades correcte, cal assegurar-se que l'entrada fa sentit per al seu programa. En penics, no va a fer un ràpid un nombre enter, s'haurà de fer Assegureu-vos que l'usuari introdueix un enter Això té sentit, donat el context. Mes només pot tenir 28, 29, 30 o 31 dies. Volem exigir contínuament un enter vàlid. Si s'introdueix un nombre enter fora de la nostra límits acceptats, anem a incitar una i altra vegada, fins que donar-nos un nombre enter vàlid. Recordem la "repetició fins que aparegui" bloquejar en el zero? Vostè pot fer una construcció similar en C usant un bucle "while" o "do-while" loop. L'estructura de bucle, mentre que té una condició que s'han de complir per a la cos del bucle per executar. Això s'hauria de veure una mica similars, perquè la condició és igual que el Blocs de zero amb els angles i entra en els suports del bucle "while". Així que la condició comprovarà si és el nombre enter dins d' dels límits adequats. Vostè pot sol · licitar al nombre enter GetInt utilitzant i després executar el seu "temps" bucle, repetint el missatge i la impressió instruccions, mentre que l'entrada no és vàlid. Una altra forma d'assegurar la correcta entrada de l'usuari és mitjançant l'ús d'un "do-while" loop, que és molt similar a un bucle while. El "do-while" bucle s'executa el codi dins dels cos i després els controls si la condició es compleix o no. Això és útil per a l'obtenció de l'entrada de l'usuari, perquè vostè sap que vostè necessita per sol · licitar almenys una vegada. Si la condició no es compleix, el programa s'executarà la línia després de el "do-while" loop. Si es compleix la condició, però, el bucle es repetirà Un bucle "do-while" per a la validació d'usuari d'entrada es veurà alguna cosa com això. Declaro una variable n, GetInt i repeteixi fins que n és vàlid. I aquest procés, li vaig explicar, estava usant el tipus de dades sencers, que que va a utilitzar per als dies del mes. Però sabem que el nombre de monedes d'un cèntim s'acumulen ràpidament, pel que amb la finalitat de emmagatzemar nombres més grans, utilitzeu el tipus de dades LongLong, però recordeu que la mateixa principi de validació s'aplica. Impressionant, així que una vegada que tenim dos vàlida les aportacions dels usuaris - dia del mes i les monedes d'un cèntim en el primer dia - podem passar a la següent part del programa. El primer dia, l'usuari comença amb però, moltes monedes que especifiquen i la quantitat de monedes que es rebrà l'endemà es duplica. Així que té sentit per portar un registre d'aquestes dues quantitats - la quantitat de diners que l'usuari té i com moltes monedes que seran donats. Ara, fer alguna cosa durant 28 a 31 dies és repetitiu, pel que farem servir un "per" bucle per iterar sobre els dies de la mes, l'actualització del total i penny quantitat cada vegada. "For" sintaxi bucle conté els següents - 01:00 inicialització, una condició, i una actualització. El bucle "for" s'inicialitzarà una variable, quan es primer entra en el bucle. Si es compleix la condició, el cos del bucle s'executarà. Posteriorment, l'actualització s'executarà. Si la condició es segueix complint el bucle s'executarà i actualitzar i repetir, sempre que la seva condició s'avalua en true. Aquí hi ha un bucle "for" que divideix 01:00 nombre enter p per 2 d'un total de 10 vegades. Tingueu en compte la forma en que vaig declarar l'enter p fora del meu bucle "per a", de manera que el sencer pot ser accessible fora del bucle "for". Un cop transcorregut el mes, és hora de per indicar a l'usuari la quantitat de diners que han aconseguit. Per les especificacions, cal avisar a l'usuari la quantitat de dòlars, no el nombre de monedes d'un cèntim, que tenen. Però fins ara, s'ha mantingut un seguiment de la total i els centaus que utilitzen LongLongs, que són nombres enters. Hi ha 100 centaus a $ 1, així que a menys el nombre de monedes d'un cèntim és un múltiple de 100, haurà de representar xifres decimals. El Autotype duplicat permet que facis això. Llavors, com ens convertim de representar centaus a dòlars? Anem a fer una ullada pi.c. Aquest programa té un big_pi LongLong i el divideix per 100 000, i imprimeix el resultat de cinc xifres decimals. Si volguéssim ha quatre decimals llocs, llavors només poden substituir aquest nombre aquí. Així que anem a guardar, compilar pi, i després veure el resultat, que es esperi ser 3,1415 - els cinc primers dígits de pi. No és però. ¿I per què? Bé, perquè és un big_pi LongLong, que és un nombre sencer, que no fer un seguiment dels decimals. La modificació que necessito fer és en la divisió. He de fer aquí per un doble abans de dividint, perquè dobles no pot mantenir seguiment de decimals. I vaig a afegir una nova línia aquí per un millor format. I aquí el tenim - 3.1416. Vostè pot notar que s'imprimeixi 3.1416 en lloc de 3,1415 com s'esperava. Això és perquè rounds durant el procés de divisió, en lloc de només truncant el valor. Ara vostè hauria de ser capaç d'imprimir el total definitiu correctament, que acaba el programa. Enhorabona. El meu nom és Zamyla. I això va ser penics. [Reproducció de música]