LUCAS FREITAS: OK, credo ora siamo in diretta. Benvenuti a CS50 Supersection. Siamo meno confortevole. Il mio nome è Lucas Freitas. Sono uno CS50 Testa TF. Questo è Lauren. LAUREN CARVALHO: Ciao, io sono Lauren. Sono anche TF Testa per CS50. LUCAS FREITAS: Oggi stiamo solo andando per dare una panoramica di quello che tutti voi i ragazzi hanno imparato in una settimana, si spera per dare a voi ragazzi una buona senso a ciò che si deve sapere per il problema di impostare uno. Solo un paio di annunci. Prima di tutto, le ore di ufficio. Orario di ricevimento stanno accadendo da Lunedi a Giovedi in case diverse in Annenberg ogni giorno. Sono una risorsa molto buona per voi ragazzi a venire e fare domande, e parlare TF, e anche lo scambio idee con altri studenti. Quindi, essere sicuri di utilizzare tale risorsa a tuo favore. La seconda cosa è l' CS50 Appliance. Per l'ultima [incomprensibile] voi ragazzi non hanno dovuto effettivamente avere un elettrodomestico. Hai appena fatto tutto in il vostro personal computer. Ma per questo problema, in realtà hanno avere una macchina virtuale, in modo da essere Assicurarsi di scaricare il CS50 Appliance e configurarlo. E la terza cosa è essere sicuri di avviare il problema posto ASAP solo perché è molto più facile trovare aiutare quando sei in inizio della settimana. Poiché le persone tendono ad aspettare fino a quando il ultimo secondo per avviare il problema insieme, e poi si va a ore d'ufficio, e c'è un sacco di gente. Dove se si va il Lunedi, si sta andando per vedere che si può parlare di TF praticamente per tutta la notte, e stanno andando più che felice di aiutarvi. LAUREN CARVALHO: posso semplicemente smettere te per un solo secondo? Tutti sono stati in grado di scaricare il CS50 Appliance? Hanno cercato di persone? LUCAS FREITAS: Per scaricare, dal modo, è possibile ottenere istruzioni alla cs50.net/appliance. LAUREN CARVALHO: Giusto. E lo fa prendere un po 'di tempo per la nostra amministratori di sistema per ottenere una licenza chiave, in modo da firmare per il prova gratuita prima. In questo modo avrai per 30 giorni, e quindi attendere che la chiave di licenza che dovrebbe dare a voi per un anno. LUCAS FREITAS: Prima di tutto, parliamo un po ' sulla CS50 Appliance. Il CS50 Appliance è in realtà un virtuale macchina che si sta andando a eseguire nel proprio computer, che è fondamentalmente in esecuzione su un altro computer all'interno del proprio computer. Che è piuttosto fresco. E in realtà è usato ovunque. Le persone che di tecnologia saprebbero che questo è usato per tutto il tempo. voi? Può avere più computer in un unico dispositivo. Facciamo in realtà uno sguardo al Appliance. Quando si va al Appliance dopo la registrazione, si sta andando ad avere per mettere il vostro nome e accedere a Harvard così possiamo ottenere tutto registrato. Si andando a vedere fondamentalmente solo un carta da parati, e poi a casa e Trash, e poi queste piccole icone. Queste tre icone sono in realtà il più cose importanti che si possono avere in il vostro Appliance. Il primo è gedit, che è un testo montaggio, proprio come Notepad o simili qualsiasi tipo di editor di testo. E 'solo qualcosa che usiamo per scrivere codice e poi fare cose con esso. La seconda cosa che abbiamo avere qui è Chrome. Quindi se avete bisogno di usare internet nella Appliance, che è quello che è possibile utilizzare. E la terza cosa è il terminale, che in realtà è molto dolce. La gente di solito vengono sorta di paura di il terminale perché è questo vecchia applicazione stile in cui si appena fondamentalmente di tipo tutto con la tastiera. Non c'è un sacco di interazione con il mouse. Ma in realtà il terminale fa cose molto buone. Prima di tutto, facciamo solo passare attraverso alcuni comandi che si possono utilizzare nel terminale. LAUREN CARVALHO: E sentitevi liberi di fermarsi noi se avete domande. LUCAS FREITAS: Già. Così il primo comando che abbiamo per il terminale è LS. ls pratica significa la lista di tutto, tutti i file e tutti gli amministratori, che ho al posto che io sono a. Quindi se faccio ls qui, vado a vedere che ho alcune directory. Ho il desktop, i download, i registri e le vhost. Coloro che sono in azzurro, perché sono tutte le directory. Allora avete altri file. Avete come ciao e ciao.c, che sono solo file, e sono in diversi colori. Quindi questo è un comando molto importante, proprio potete vedere quali sono i file e le directory che avete nella directory che sei in nel terminale. Quando vedete jharvard @ apparecchio e poi il piccolo simbolo lì, l' tilde, questo significa solo che questo è il directory che siete in questo momento. LAUREN CARVALHO: Quindi ls è quasi come cliccando sulla cartella che è elencato proprio lì, in mostra si tutti i contenuti che sono all'interno di tale cartella. AUDIENCE: C'è testo dopo la ciao.c? LAUREN CARVALHO: Oh, non è possibile vedere che, perché è blu. LUCAS FREITAS: Si dice registri e vhosts. LAUREN CARVALHO: Quelli sono solo altre cartelle. Mi dispiace, è davvero difficile da vedere. Forse se abbiamo spento le luci? Colton, vuoi per cercare di trovare l'interruttore della luce? Mi dispiace. Io non penso. LUCAS FREITAS: Ma è fondamentalmente - sì, se si potesse - LAUREN CARVALHO: Zoom nella schermata. LUCAS FREITAS: non lo faccio avere quella caratteristica. LAUREN CARVALHO: [incomprensibile]. OK. Beh, c'è solo un sacco di naturale luce in questa camera. LUCAS FREITAS: Diciamo solo supporre che ci sono altre due cartelle lì. LAUREN CARVALHO: Basta tenere con noi. Questa è l'unica parte che non avrai essere alla ricerca presso il terminale. LUCAS FREITAS: Il comando successivo è fondamentalmente forse si vuole organizzare i tuoi file - per esempio, tutti i file C in un directory, ma non si dispone di un Elenco solo per file C ancora. Si può sostanzialmente creare una directory utilizzando il terminale pure, che è la stessa cosa di clic destro e dicendo Nuova cartella. Il comando si fanno directory, che è mkdir, quindi sostanzialmente "make" e "Directory". E poi si può mettere l' il nome della directory. Diciamo che ho voluto essere chiamato, Non lo so, diciamo pset1 Doing questo, ho appena creato una directory. Diciamo solo verificare che è lì. Quindi se faccio ls, ora vedo i log, e poi pset1, e poi vhosts. Così ho la nuova directory lì. E poi, dopo hai una nuova directory, forse si vuole navigare in esso, in modo che il comando successivo questo cd, il che significa che appena fondamentalmente andare in un directory specifica. Quindi, se voglio andare a pset1, Posso solo fare cd pset1. LAUREN CARVALHO: cd sta per cambiare directory, [incomprensibile] in grado di ricordare che. LUCAS FREITAS: E ora si vede che invece di avere jharvard apparecchio, ho jharvard apparecchio, e poi pset1, perché sta mostrando me dove sono io in questo computer. Ora, se voglio tornare al directory che era prima di questo, ho può fare un punto cd dot, il che significa che basta andare la directory che ero prima, come il padre di questo directory, in fondo. E ora vedo che sono torna a jharvard. La prossima cosa che posso farlo è rm, che è rimuovere un file. Ad esempio, si deve prima fare ls per vedere quello che ho qui. Ho ciao e ciao.c. Diciamo che voglio rimuoverli. Posso fare rm ciao. E 'intenzione di dire "rimuovere file regolare ciao? "E io dico" sì ". Ed ora se io fare LS, vedo che è non c'è più. Se provo ad usare rm per una directory, però, non sta andando per farti fare nulla. Sta andando a dire, ehi, voi non è possibile rimuovere una directory. Così abbiamo questa altra venire chiamato rmdir, il che significa che appena fondamentalmente rimuovere la directory. Posso, per esempio, rimuovere pset1. E se lo faccio ls, non lo faccio hanno più. Hai domande su questo? No? Sì? PUBBLICO: E 'importante che si lascia uno spazio dopo - ogni volta che si iniziare a digitare qualcosa? LUCAS FREITAS: Già. Se faccio come CD e la directory, Devo mettere uno spazio. Che spazio stai parlando? LAUREN CARVALHO: lo spazio tra cd e [incomprensibile]. LUCAS FREITAS: Sì, dovrete mettere gli spazi perché cd è l' comando e quindi la stringa successiva che si tipo è fondamentalmente la directory. Quindi è come un argomento. Sì? AUDIENCE: Quando si elencano tutti coloro sono diverse directory, giusto? LUCAS FREITAS: Sì, sono nella directory. AUDIENCE: Qual è la differenza tra le directory? LUCAS FREITAS: Sono appena diverse cartelle. Directory è una cartella nel vostro computer. AUDIENCE: Apri cartella. LUCAS FREITAS: Sì, è solo una cartella aperta. LAUREN CARVALHO: qui, quelli che sono in blu sono reali directory che si possono ottenere in e poi vedere un mucchio di cose che sono all'interno di questo, che è un peccato perché non si può effettivamente leggere il quelli in blu. E quelli in nero sono solo i file che sono all'interno della directory corrente. LUCAS FREITAS: Quindi directory sono cartelle. Gli altri sono file. AUDIENCE: Qual è il comando per ripristinare o per cancellarlo? LUCAS FREITAS: Per cancellare? LAUREN CARVALHO: Per cancellare? LUCAS FREITAS: Penso che è "chiaro". Già. Quindi si digita solo chiaro se lo schermo è troppo disordinato. Tutte le altre domande? E si impara un sacco di altre comandi solo naturalmente durante la semestre perché sono molto utili. Così ora parliamo di compilazione. Abbiamo parlato di pseudocodice e codice sorgente e codice oggetto. E c'è un sacco di codici, e forse voi siete confusi su quello. Parliamo un po 'di quello succede quando si sta scrivendo un programma, e si compila, e diventa un file eseguibile. Queste sono tutte parole che voi ragazzi probabilmente sentito parlare, e forse non sei veramente sicuro di quello che sta succedendo. Diciamo, per esempio, che voglio scrivere un programma che dice "ciao". Il prima cosa che viene in mente è è sorta di prova a pensare a come sei intenzione di farlo nella vostra mente, e probabilmente stai pensando in inglese o qualche altra lingua, come naturale lingua, probabilmente. E allora pensi, bene, se voglio, per esempio, scrivere un programma che dice "ciao," Vorrei avviare un programma, Io stampare ciao, e poi lo farò chiudere il programma. Questo è pseudocodice. Questo è solo fondamentalmente si sta cercando di venire con una sequenza di eventi che hai intenzione di fare per essere in grado di scrivere un programma. Allora avete il codice sorgente, e il codice sorgente non deve in particolare essere in C. Stiamo parlando sul codice sorgente in C perché è la lingua che stiamo imparando, ma ovviamente codice può essere praticamente qualsiasi linguaggio di programmazione che si ha. Più tardi, nel semestre, si sta andando di imparare altre lingue. Questo è anche il codice sorgente. Per esempio, ecco, questa è la mia fonte codice e quindi sto tra cui un biblioteca, e poi comincio principale, e poi stampo. E Laura sta per parlare un po ' po 'di tutto questo. Quindi questo è il codice sorgente. E qual è il codice oggetto? L'oggetto è un mucchio di zeri e quelli, in fondo. Quello che succede è che hai inizialmente pseudocodice, che è tutto in inglese. E voglio dire, hai capito bene. Probabilmente i tuoi amici capiscono , e la maggior parte delle persone sarebbe comprendere l'idea. Ma i computer sono veramente stupido, e non capisco l'inglese, in modo da hanno tradurlo in qualcosa, di solito tradotto in qualche linguaggio di programmazione. E si può pensare ad una programmazione il linguaggio come un po 'come una lingua che dite al vostro modo di computer di parlare e di capire. Tu sei fondamentalmente scrivendo qualcosa in un linguaggio che entrambi voi ed il vostro computer di capire. Questo è il codice sorgente. Così andando forma pseudocodice per fonte codice, tocca a voi. E 'fondamentalmente stai facendo il programma. Ma il problema è che l' Il computer non ancora comprendere il linguaggio di programmazione. Essa non capisce codice sorgente affatto. In realtà capisce solo zero e uno. Così abbiamo questa cosa molto magico chiamato un compilatore, che è fondamentalmente andando per ottenere la fonte che si chiama ha scritto in una lingua che sia lei e il computer parla, e ora sei intenzione di trasformarla in zero e uno. Quindi, in pratica quello che il compilatore non è diventa codice sorgente, in questo caso C, che sta per trasformarla in zeri e quelli che il computer capisce e può fare un file eseguibile fuori di esso. Ritiene che senso? Si può solo pensare al compilatore come qualche tipo di un traduttore aiuta a spiegare al computer esattamente quello che dovrebbe fare. Ma come faccio a compilare. Torniamo alla Appliance, e diciamo che sto facendo quel programma. In primo luogo ho intenzione di creare una directory qui, e ho intenzione di chiamarlo "Pratica". Ora ho intenzione di spostarsi alla directory, così la pratica cd. Ora sono dentro la pratica. Ora voglio iniziare a gedit, così come posso fare? Posso fare clic qui, o posso semplicemente letteralmente tipo "gedit", e sta andando di aprire per me. Ora ho intenzione di scrivere il mio programma, così esattamente quello che ho scritto nella presentazione. Sto dichiarando una biblioteca. Sto facendo int main, vuoto. E ora sto facendo printf, ciao. Ora sto andando a salvare questo. Mettiamola in pratica, e Io vado a chiamare questo hello.c. Così ora è salvato. Se voglio compilarlo, in realtà ho può farlo in due luoghi diversi. Posso fare sia in una finestra di terminale, così questo grande, oppure si può utilizzare gedit che in realtà ha un finestra di terminale proprio qui. Così si può molto convenientemente solo fare il codice, e quindi si può semplicemente digitare qualunque sia qui, e provare a compilarlo. Allora, come faccio a compilare il codice? Il modo più semplice che abbiamo è utilizzando fare, che è una funzione che è fondamentalmente sta per compilare il codice. Devi solo dire fare ciao, così "Fare" e il nome del programma. Oops. Questo è imbarazzante. LAUREN CARVALHO: Puoi [incomprensibile]? LUCAS FREITAS: Mi dispiace. Non ho salvato nel directory giusta. Venite a praticare, e ora salvarlo come ciao.c. Mi dispiace. Ora è salvato. Vorrei solo fare ls ed essere Assicurarsi che sia qui. OK, ora è qui. Così ora se faccio fare ciao, sputa un sacco di roba, ma poi dà solo me un'altra linea per il terminale, che significa che era successo. Così ora se faccio di nuovo un ls, io in realtà vedere questo file in verde, che è la file eseguibile. E poi se voglio correre, tutto ciò che Che devo fare è barra dot ciao. E 'intenzione di dire ciao proprio qui, in modo è esattamente quello che sto chiedendo a. C'è un altro modo di compilazione, che sta usando clang. Clang è solo un compilatore che abbiamo, ed è un po 'più dettagliato per compilarlo. Ma funziona altrettanto bene. Quindi se faccio clang, e poi-o, e quindi il nome che voglio dare a il file eseguibile, quindi diciamo "Ciao". E poi il file che voglio per compilare, hello.c. E 'anche andando per la compilazione. E tu hai il file qui, e Posso solo eseguirlo pure. Così entrambi lavorano. Ritiene che senso? Tutte le domande? AUDIENCE: Potete ingrandire in un po '? LUCAS FREITAS: Sorry? PUBBLICO: Zoom in? LAUREN CARVALHO: penso che tu può solo comandare più. LUCAS FREITAS: Comanda cosa? LAUREN CARVALHO: Comando plus. LUCAS FREITAS: No. LAUREN CARVALHO: Oh, non è andare a lavorare perché - è perché abbiamo impostato la risoluzione per questa cosa. LUCAS FREITAS: non lo faccio Pensiamo di poter zoom dentro Sì, non possiamo zoom. Avete un'altra domanda? Scusi. AUDIENCE: Puoi ripetere clang? LUCAS FREITAS: The clang? Clang è la stessa cosa come marca, ma la differenza è che prima ho intenzione scrivere clang, che è il comando, poi ho intenzione di fare -0, tutti, che è proprio quello che stiamo andando a più avanti come una bandiera. Quindi basta pensare che hai sempre mettere la-o. E allora prima, si sta andando a mettere il nome del file eseguibile, in pratica il file che si sta andando a creare. Quindi posso dire, per esempio, Hello2 e quindi il file che voglio compilare, che è il file c.. Ecco, questo è ciao.c. Ritiene che senso? AUDIENCE: Ciao cosa? Che cosa è questo? LUCAS FREITAS: Hello.c. E se compilo, e se Io LS, ho anche un Hello2 che ho appena compilato. E se provo a farlo funzionare, sta andando a fare esattamente la stessa cosa ciao, basta stampare ciao. AUDIENCE: Come mai per il make si può mettere ciao.c dopo? LUCAS FREITAS: In make, si non c'è bisogno di mettere l'. c. In make, basta dire il il nome del programma. Non hai da dire. C. Ma per clang, si dovrebbe. AUDIENCE: Con clang ti anche deve aggiungere il [incomprensibile] LAUREN CARVALHO: Già. Così si hanno anche per biblioteca. LUCAS FREITAS: Sì, questo è qualcosa abbiamo intenzione di utilizzare in seguito. Questo si chiama collegamento, e penso che siamo andando a parlare più tardi. Un'altra domanda? AUDIENCE: Mettete un clang dot barra? LUCAS FREITAS: No. La barra punto è solo per aprire il file eseguibile. Quindi clang, basta scrivere "clang", e poi il se si desidera aprire il file eseguibile che hai appena compilato, allora non dot slash il nome. Ritiene che senso? AUDIENCE: Se si dovesse solo cambiamento [Incomprensibile] al mondo ciao, ti ricompilare esso? LUCAS FREITAS: Già. se voglio dire, per esempio, "ciao lì, "posso solo salvare adesso, e mi basta compilare di nuovo. Quindi, mi permetta di fare un make ciao. E se lo faccio ciao, sta andando a dire "ciao là". Ha senso? Tutte le altre domande? AUDIENCE: Avete includere il I / O standard per coordinare il lavoro? LUCAS FREITAS: Già. L'I / O standard è sostanzialmente la libreria che ha un implementazione per printf. Così che cosa giusta sul top include stdio. Ciò include una libreria che ha fondamentalmente un gruppo di diversa strumenti che è possibile utilizzare. uno? Di loro è printf che è una funzione che, in fondo stampa messaggi a schermo. Tutte le altre domande? No? OK. Così ora parliamo di - LAUREN CARVALHO: Diciamo solo vai alla guida di stile. Vuoi trovare solo qui dentro? LUCAS FREITAS: Così stiamo andando per parlare di stile. LAUREN CARVALHO: Oh, David non ha finito. OK. Perché non tornare a stile alla fine? E 'stato effettivamente aggiornato mentre parliamo. LUCAS FREITAS: Già. Diamo modo per David per finire questo. LAUREN CARVALHO: Can passiamo in realtà? Quindi spero che è stato a tutti godendo di Scratch. Purtroppo, è il momento di allontanarsi da questa - purtroppo è il momento di allontanarsi da questi blocchi di programmazione belle a C. Ma per fortuna, tutte le costrutti di programmazione che hai lavorato con in Scratch sono direttamente traducibile in C, e siamo intenzione di iniziare a conoscere alcuni di loro in questo momento. Parliamo prima sulle condizioni nelle espressioni booleane. Questo è in esecuzione su riserva carica della batteria. LUCAS FREITAS: Come è che non funziona? OK. Tu vai lì, ho intenzione di ottenere il - LAUREN CARVALHO: So condizioni sono importanti perché ci permettono di introdurre la logica nei nostri programmi. Ecco un esempio di una condizione all'interno di un programma C. Notiamo come questo - Quindi questo blocco condizione giusta qui, questo printf non verrà eseguito a meno che la condizione all'interno del parentesi, n maggiore di 0, restituisce true. Ora, tutte le condizioni all'interno f affermazioni sono espressioni booleane, il che significa che non vi sono solo due opzioni. Potrebbero sia valutata come true, oppure possono restituire false. Ecco, quindi questo ha un senso, giusto? n maggiore di 0, significa che è un positivo numero, il che significa che stamperà fuori "hai scelto un numero positivo." Ci sono un sacco di espressioni booleane che possono formare la condizione con un dichiarazione init. Abbiamo il meno. Questo è inferiore o uguale a. Questo è solo un divertente [incomprensibile]. Se si desidera che il printf si verifichi se è maggiore o uguale a 0, allora si dovrebbe scegliere questo. Così la parità accoda giusto dopo il segno di maggiore. Uguale uguale, che è diverso dal solo un segno di uguale, uguale uguale in realtà significa che tutto ciò che di sul sinistra di questo è lo stesso cosa c'è sul lato destro di questa in cui un segno di uguale è ciò? Che è solo un segno di uguale? Assegnazione. LUCAS FREITAS: Chi l'ha detto? È che le caramelle? Oh, no. Scusi. Scusi. Entrambi ottiene caramelle. Oh, OK! Tre persone ottenere caramelle! LAUREN CARVALHO: Quindi questo qui è l'operatore botto precedente il segno di uguale, in modo che sia non uguale. Quindi, se questo era dentro la mia condizione, il corpo della condizione sarebbe eseguire solo se qualunque di a sinistra non è la stessa ciò che è sulla destra. Posso anche avere solo l' punto esclamativo. In realtà vedremo in una caratteristica scorrere come questo possa essere utilizzato. LUCAS FREITAS: Tutte le domande? No? LAUREN CARVALHO: Possiamo combinare queste Espressioni booleane per costruire più istruzioni condizionali intricati. Quindi qui, se qualunque di sinistra lato delle doppie barre o ciò che è sul lato destro della le doppie barre restituisce TRUE, poi ci stampiamo valido. E poi giù qui, se qualunque di sul lato sinistro dei due e commerciali e qualunque di a destra lato dei due e commerciali restituisce true, allora ci stampiamo valido. Le doppie barre sono chiamati logico Operatore OR doppie e commerciali sono chiamato l'operatore logico AND. Sì? AUDIENCE: Sono quelli appena minuscola l's? LAUREN CARVALHO: No. Sono in realtà - si conosce il gioco, come sopra il vostro tasto Invio? Vedete questo? LUCAS FREITAS: In realtà è un bar. LAUREN CARVALHO: In realtà è solo due bar. PUBBLICO: Si può utilizzare il uguale uguale per le stringhe? LUCAS FREITAS: No. Stiamo per imparare più tardi qualcosa. LAUREN CARVALHO: C'è una funzione che è possibile utilizzare. Ma non c'è bisogno di preoccupare che appena ancora. Che cosa se io do questo programma il numero 5? Quale sarà stampare? AUDIENCE: [incomprensibile] valido. LAUREN CARVALHO: valido? Già. Non so che ha ottenuto questo. [Risate] LAUREN CARVALHO: Questo è il tipo di paura [incomprensibile]. AUDIENCE: Così il doppio e, questo significa solo e? LAUREN CARVALHO: Già. Così il numero 5 sia maggiore di 0 e minore di 100. AUDIENCE: Perché sarebbe uno? LAUREN CARVALHO: One commerciale è in realtà qualcosa di diverso, ed è un operatore bit per bit, che avrete conoscere più tardi. Ma è qualcosa che funziona davvero con i bit di un dato numero. LUCAS FREITAS: basti pensare che non lo fanno si deve preoccupare per ora. LAUREN CARVALHO: Penso che sia probabilmente in arrivo la prossima settimana. LUCAS FREITAS: Tutte le altre domande? No? LAUREN CARVALHO: Così abbiamo visto che un essa blocco può stare da solo, ma può anche essere accoppiato con e altro blocco. Quindi, in questo caso, se n è maggiore di 0, stiamo andando a stampare "Tu scelto un numero positivo. "else, che significa se è 0 o se è meno di 0, stiamo andando a stampare fuori, «Hai scelto un numero negativo." La cosa interessante è che questi sono esclusivo l'uno dall'altro. Non c'è mai sarà un caso in cui questo e questo può sia stampare. Sono sicuro che hai lavorato con l'if / else box in Scratch, quindi questo dovrebbe essere piuttosto familiare. Sì? AUDIENCE: Abbiamo bisogno di spazio tra int n uguale a GetInt poi spazio nella if? Come si usa una linea [incomprensibile] LAUREN CARVALHO: Oh, lo spazio qui? AUDIENCE: Come quella, ma il doppio dello spazio. No, salire. Salite. LUCAS FREITAS: Solo la linea? AUDIENCE: Già. LUCAS FREITAS: Solo riga vuota? AUDIENCE: Già. LAUREN CARVALHO: Riga vuota? No. Questo è solo una cosa stilistico. LUCAS FREITAS: E 'proprio come a volte basta saltare alcune linee così che il codice non sembra un enorme blocco di testo. LAUREN CARVALHO: Penso che quello che è successo era che avevamo un commento qui, ma io lo portò fuori in modo che voi ragazzi sarebbe pensare al codice piuttosto che basta leggere il mio commento. In generale, la spaziatura non sarà davvero influenzare il modo in cui il programma viene eseguito. E 'più di una cosa stilistico. E quando abbiamo la guida di stile aggiornato e pronto a partire dalla fine supersection, parleremo a tale proposito più. C'è qualcosa di sbagliato con questo programma, giusto? Poiché 0 non è realmente un numero negativo. Quindi vediamo se possiamo rimediare. Probabilmente si può immaginare con questo, dice, giusto? Se n è maggiore di 0, stampiamo, "Tu scelto un numero positivo. "Allora cosa se n è minore di 0, "Hai scelto un numero negativo. "altro" Hai raccolto 0 ". Ora la cosa interessante è che questo potrebbe andare avanti all'infinito. Si può avere un blocco if, un altro caso blocco, un altro blocco else if, else if, else if, else if, else, in fondo come il tempo che vuoi. E quando costruito come questo, questi sono tutti per essere esclusivo l'uno dall'altro. Sì? AUDIENCE: Allora perché non si può utilizzare semplicemente un altro se invece di [incomprensibile]? LAUREN CARVALHO: In questo caso, sì, ho potrebbe utilizzare un altro se, e sarebbe assolutamente bene perché l' condizioni stesse sono esclusivo l'uno dall'altro. Ma se le condizioni non erano esclusiva di ogni altro, questo sarebbe costringerli a non entrambi valutare, se questo ha un senso. AUDIENCE: In tal caso, potremmo nido la seconda se nel primo caso? LAUREN CARVALHO: se - cosa vuoi dire? AUDIENCE: Se le due condizioni non si escludono a vicenda? LAUREN CARVALHO: Se le condizioni non si escludono a vicenda? Ma si vuole solo uno di loro a correre? AUDIENCE: Volete solo se invece di altro. LAUREN CARVALHO: Già. Ci sono sempre sarà molto di modi che si può fare questo. Si può sicuramente nido di loro. E vedrete in un futuro diapositiva è possibile avere più IFS, solo uno dopo l'altro. Ma questo è un modo logicamente organizzare il flusso del programma. LUCAS FREITAS: E c'è un altro cosa, è che lei ha chiesto di mettere se e poi un altro caso. Che avrebbe funzionato alla perfezione, ma è male disegno perché in fondo se si controllare prima se, e si nota che il numero è maggiore di 0, può solo finire il programma. Non è necessario verificare se è meno di 0, giusto? Ma se, se, se, sta andando a controllare entrambi, mentre se lo faccio se il resto è, sta andando a verificare se è maggiore di 0. Se lo è, non sta andando a guardare anche le altre righe del codice. Quindi stai praticamente controllando piace due volte inutilmente, ecco perché abbiamo fare se else if. Tutte le altre domande? AUDIENCE: Così la funzionalità del resto se è lo stesso se fosse solo se? LAUREN CARVALHO: No. Si sta effettivamente andando a vedere nel mio prossimo scorrere un esempio in cui può essere diverso. In questo caso, è quasi la stessa. Quindi qui abbiamo un esempio di molteplici se le dichiarazioni e la funzionalità non è la stessa come se avessi appena detto, se altro, se altro, se altro. Basti pensare a quello che sarebbe stampare se inserisco il numero 95 in questo programma. AUDIENCE: [incomprensibile] LAUREN CARVALHO: E poi? AUDIENCE: [incomprensibile] LAUREN CARVALHO: Già. Quindi, in questo caso, queste condizioni sono non si escludono a vicenda. E perché non c'è niente di arresto questa condizione da valutare se questa uno ha già, sono solo tutti di andare a stampare. Così come potrei risolvere questo problema? AUDIENCE: else if? LAUREN CARVALHO: È possibile utilizzare else if. Potrei cambiare l'ordine di questi, giusto? Se ho fatto questo un primo? Beh, in realtà, no. Che non avrebbe funzionato per 95. LUCAS FREITAS: No, solo i IFS altro. LAUREN CARVALHO: Il else if avrebbe risolto questo. Vuol chiarire la confusione tra IFS e altro IFS? PUBBLICO: Volevo solo chiederti, se è stata utilizzata else if, si sarebbe fermata? LAUREN CARVALHO: Giusto. Quindi solo questo primo. Se ho inserito il numero 95, solo in questo avrebbe stampato, e non è mai avrebbe progredito al resto. LUCAS FREITAS: Basta tipo di pensare come se questo accade, fare questo. Il resto è come se non, assegno per questo, e poi farlo. Così come sono tutti reciprocamente esclusiva. Non è possibile ottenere in due su quelli. PUBBLICO: Si può utilizzare un logico E per quella situazione? LAUREN CARVALHO: Già. Questo è un altro modo in cui potremmo hanno risolto questo problema. Stiamo potuto definita gamme, giusto? Così ho potuto dire se n è maggiore di 90 e inferiore a - bene, credo che questo non si fa davvero importa, ma qui ho potuto dire se n è maggiore di 80 e minore di 90. Maggiore di 70, a meno di 80. Ciò avrebbe anche lavorato. [Risate] LUCAS FREITAS: Lei è spaventata. LAUREN CARVALHO: Non abbiate paura. LUCAS FREITAS: Non è che sarà sbagliato. E 'solo che è inutilmente verbose. Come in informatica, si dovrebbe essere il più semplice possibile finché si ha la funzionalità. Vuoi la caramella? AUDIENCE: non ne hanno bisogno. LAUREN CARVALHO: Stai spaventando tutti, Lucas. LUCAS FREITAS: Mi dispiace. LAUREN CARVALHO: David anche detto Questi passare affermazione in classe. Fondamentalmente quello che sta succedendo è l'interruttore dichiarazione prende una variabile. In questo caso, stiamo prendendo un numero intero. Se il numero intero è 1, stiamo andando a stampare, «Hai scelto un piccolo numero. "Se l'intero è 1," Tu scegliere un numero medio. "Se l' intero è 3, "Hai scelto un alto numero. «E ho anche avuto un caso di default quaggiù, ma non sta mostrando up, che è troppo male. Fondamentalmente, questo è solo un'altra sintassi. Avremmo potuto implementato questa esatta stessa cosa con se e else if dichiarazioni. Ma quando ci sono un sacco di diversi condizioni e un sacco di diversi variazioni su ciò che si vuole fare per ogni ingresso, questa è un'opzione. Quindi è solo una buona sintassi di sapere. Sì? AUDIENCE: Perché non c'è una barra rovesciata n nella prima? LAUREN CARVALHO: Per lassù? Non c'è backslash n lassù perché il GetInt - se si tenta questo, sarà dare questo prompt. Dammi un intero compreso tra 1 e 3. E se metto il contraccolpo n, sarebbe portami alla riga successiva, ma ho appena volevano loro di digitare il numero intero subito dopo i due punti. Avresti potuto mettere il contraccolpo n. Non è un grosso problema. Sì? PUBBLICO: Per questo codice, è questo caso, è che a causa è il primo caso? Perché - LAUREN CARVALHO: No, no, no. Quindi questo mi dà un numero intero tra 1 e 3. Se n è 1, a stampare questo. Se avevo chiesto per le lettere, ho potuto detto dammi una lettera compresa tra A e C. Quindi questo sarebbe il caso A. AUDIENCE: [incomprensibile]. Il caso sarebbe solo [incomprensibile] LAUREN CARVALHO: Sì, giusto. Sì? AUDIENCE: cosa succede se si voleva avere più di una espressione relazionale? Così, invece di dire n uguale a 1, [incomprensibile] n è maggiore di 1 nel primo caso? LAUREN CARVALHO: In realtà, se non lo faccio definire alcuni di questi casi, ciò da portare giù. Quindi, in realtà, forse questo non è quello che stai chiedendo. LUCAS FREITAS: Penso che lei sta chiedendo se il caso è stato n maggiore di 0, caso meno di 0. LAUREN CARVALHO: Forse l'interruttore dichiarazione non è davvero quello che vuoi da utilizzare in questo caso. LUCAS FREITAS: L'istruzione switch è solo per il valore, in modo che stai controllando di il valore è simile a questo o quello. Quindi non si può effettivamente porre condizioni. AUDIENCE: cosa succede se la persona tipi di [incomprensibile]? LAUREN CARVALHO: Che sarebbe stato il mio caso di default, che purtroppo non si può vedere. LUCAS FREITAS: [incomprensibile] far loro vedere. LAUREN CARVALHO: In realtà, sai una cosa? Diciamo solo andare a studiare a 50, e lo farò solo ingrandire i vetrini su studio 50, perché questo è solo fastidioso. Quindi lasciatemi in realtà vado a condizione. Questo è solo andare a prendere un po 'di tempo. Bene. Quindi, mi dispiace. Almeno ora saremo in grado di vedere tutto ciò senza tagliare. Bene. Quindi, se hanno messo in 10, avremmo difetto qui per il mio caso di default, e io sarebbe solo stampare valido perché io chiesto loro di immettere un numero intero tra 1 e 3. Tutte le altre domande? Sì? AUDIENCE: Diciamo che per caso uno, caso tre, che tu volevi che fosse tutto il stessa cosa, così si scelse un numero che non è un numero medio. In questo caso, sarebbe ridondante? Vuoi basta cambiare il testo in entrambe le di loro, o ci sarebbe qualche ridondanza? C'è un modo per combinare [Incomprensibile]? LAUREN CARVALHO: Ci sono modi per combinarle, ma io credo che si possa solo combinare quelli adiacenti. Quindi, se io non definisco nulla per il caso di due, questo sarebbe applicano a entrambi i casi. Oh, se non ho messo nulla per caso uno, questo si applica a entrambi caso uno e due. Se questo ha un senso. AUDIENCE: Puoi ripetere quello? LUCAS FREITAS: OK. Se avete fatto fondamentalmente, come, avete la stessa cosa, ma non metti niente qui, saresti sia per caso in cui uno o due casi, fare questo. Giusto? E questa pausa significa che se si ottiene in questo caso, basta lasciare. Ecco che cosa significa il freno. Quindi, se ho fatto questo, si guardi, è caso uno, e si sarebbe solo fare questo. Se era caso due, sarebbe anche basta venire qui e fare quello. AUDIENCE: Ma si può fare? Se c'è qualcosa per caso due [incomprensibile] LAUREN CARVALHO: io non ci credo si può fare. Non credo che si può saltare in giro. Puoi farlo, Rob? Non ci penso. AUDIENCE: Quindi un solo numero può andare dopo un caso, giusto? Non ci può essere un caso, virgola, due? LUCAS FREITAS: No, non puoi. Non puoi assolutamente. LAUREN CARVALHO: Voglio dire, il punto è questa è un'opzione, e questo non potrebbe misura il vostro caso d'uso, così allora si il se le condizioni userebbe. AUDIENCE: Allora perché fare questo? L'interruttore? LAUREN CARVALHO: Vorrei usare questa se è stato ben definito - in realtà, Lucas, è che stai bloccando. LUCAS FREITAS: Oh, mi dispiace. LAUREN CARVALHO: Se si dispone di molto comportamenti definiti che si desidera per ogni ingresso, questo potrebbe essere un poco più conciso che scrivere su un'istruzione if per ciascuno di essi. AUDIENCE: Cosa fa il hanno infranto dire ancora? LAUREN CARVALHO: La rottura significa fermarsi. Ricordate, se non ho avuto questa rottura qui, avremmo appena caduto nel caso successivo. LUCAS FREITAS: Rottura significa per ottenere fuori l'istruzione switch. Perché se è 1, che voglio per stampare questa e lasciare. Non voglio controllare qualcos'altro. AUDIENCE: Tu non vuoi per stampare qualsiasi altra cosa. LUCAS FREITAS: Già. Perché è mutuamente esclusive. PUBBLICO: E vuol procedere solo al caso successivo se il primo caso non è vero? Oppure è testare tutti i casi Allo stesso tempo? LUCAS FREITAS: No, controlli in sequenza. In sequenza, sì. Ancora una domanda, allora dobbiamo passa così possiamo coprire tutto. Sì? AUDIENCE: Quindi per il caso, potrebbe avere fatto qualcosa oltre solo quello? Potresti dare un intervallo? LUCAS FREITAS: No. LAUREN CARVALHO: Non credo si può dare un intervallo. LUCAS FREITAS: Tu non puoi non può dare un intervallo. PUBBLICO: Il caso è specifico [Incomprensibile]. LUCAS FREITAS: Interruttore è una sorta di valori. È facendo cose diverse a seconda su un valore, un valore specifico. Non si può fare intervallo, non è possibile fare qualsiasi altra cosa. E 'solo un altro strumento per vedere. LAUREN CARVALHO: La maggior parte delle persone non usano passare dichiarazioni molto in CS50, ma è lì. Bene. Così la prossima cosa che andremo a parlare circa è l'operatore ternario. Questo è solo un altro tipo di di condizionale. Fondamentalmente quello che sta succedendo qui è che io sono chiedendo un intero, e se n è superiore a 100, ho intenzione di stampare "Alto". Se non lo è, ho intenzione di stampare "basso". Quindi quello che sta facendo è la condizione viene proprio qui, fra parentesi, e si può tipo di pensare alla questione come mi sto chiedendo se questo è vero o no. Se è vero, ho intenzione di fare questo primo cosa, e se non è vero, io sono intenzione di fare questa seconda cosa. Tutte le domande circa l' operatore ternario? LUCAS FREITAS: Voglio solo osservare da David è che ogni volta che si dispone di un condizione - LAUREN CARVALHO: Credo che David guardare attraverso la diretta streaming. LUCAS FREITAS: Sta facendo vita torrente adesso. Così ogni volta che avete una condizione, sei dovrebbe mettere tra parentesi graffe, proprio come abbiamo in un interruttore dichiarazione qui. Abbiamo parentesi graffe qui. Per qualsiasi condizioni, sei dovrebbe mettere anche questo. LAUREN CARVALHO: Vedrai questo nella guida di stile. Noi in realtà non abbiamo il guida di stile in questo momento. Penso che David ancora lavorando. LUCAS FREITAS: Ha detto che è solo ora di lavoro. LAUREN CARVALHO: Oh, è ora di lavoro? OK. Quindi, a quanto pare quest'anno in stile guida, anche se vi è solo una linea, hai avuto modo di mettere quelle parentesi graffe dentro Non dovete necessariamente per l' funzionalità del programma. E forse dovremmo solo prendere una pausa dopo che le condizioni e proseguire dritto alla guida di stile per cancellare un po 'di queste cose? LUCAS FREITAS: Già. Avete una domanda? PUBBLICO: No, io aspetterò fino alla guida di stile. AUDIENCE: Potrebbe tornare indietro all'operatore ternario? LAUREN CARVALHO: Ternario, sì. LUCAS FREITAS: operatore ternario è fondamentalmente un'istruzione if else, ma invece di dover avere le due linee di verificare se una e poi l' altro, basta avere una linea. Quindi, in pratica, se voglio dare una stringa un valore alto o basso, e vuole fare un alto se n è maggiore di 100 o bassa, se è di meno, cosa posso fare è questo [incomprensibile] la corda sta per essere, e poi ho chiedere al programma è n maggiore di 100? Ecco perché ho questa espressione tra parentesi e poi il punto interrogativo. Mi chiedo è maggiore di 100? Se lo è, sta andando ad essere elevato. Se non lo è, sta andando ad essere bassa. Quindi, in pratica ciò che si pensa è fare una domanda, così si mette in parentesi la condizione. Poi si mette il punto interrogativo perché si sta chiedendo. E se questo è vero, sta per essere il primo valore [incomprensibile] qui. Se non lo è, ho intenzione di mettere il valore che è dopo i due punti. Ha senso? E 'anche qualcosa che è come un strumento in C ma non c'è bisogno di specificamente usarlo. Ma CS gente di solito piace che perché consente di risparmiare solo linee. LAUREN CARVALHO: E 'molto elegante. Si fa molto in una sola istruzione. AUDIENCE: Così il segno di percentuale è solo ciò i risultati sul la linea precedente? LAUREN CARVALHO: Oh, mi dispiace. Questo segno di percentuale è in realtà un segnaposto per questo s. In una dichiarazione printf, hai questo stringa qui, che è quello che sta succedendo a stampare, ma non si può solo mettere questo s in là. Altrimenti sarebbe stampare le s letteralmente. Così abbiamo messo una percentuale qui per continuare questo posto tenuto per qualunque viene dopo la virgola. Così, per una stringa, hai cento s. Per un numero intero, cento i. Per un galleggiante, cento f. Vedrai quelli come noi vedere più esempi. Ma forse si dovrebbe parlare di guida di stile per un po ', ora che tocca. LUCAS FREITAS: Se si va a cs50.net/style, si sta andando a vedere la guida di stile. Per i set di problemi, il punteggio per la set problema è composto di portata, il che significa in pratica, se hai fatto tutto le parti del problema impostati o se si tentato qualcosa. La seconda cosa è la correttezza, che mezzo, è il programma facendo quello che doveva fare, o lo fa hanno dei bug, o non è facendo quello si suppone di fare. La terza cosa è il design, il che significa stai implementa questo bene, o sono si utilizzando istruzioni inutili? Così, per esempio, se si desidera ripetere un numero 10 volte, stai scrivendo un per loop o stai solo facendo 10 volte la stessa dichiarazione, solo facendo copia e incolla. Così design è per questo. E, infine, si dispone di stile. Lo stile è come giudicare se il codice sia leggibile e tipo di abbastanza. Significa solo fondamentalmente è il codice leggibile? Sarebbe qualcun altro che stava cercando sono il codice in grado di capire che cosa che sta facendo? Ha osservazioni e simili? Parliamo lo stile che si suppone di utilizzare. La prima cosa è commenti. I commenti sono molto importanti per il vostro codice perché a volte si sta facendo il programma, e si sa esattamente che cosa si vuole fare in modo che solo iniziare codifica, basta digitare un mazzo di C. Ma se qualcun altro è in cerca stai sei codice, non sta andando ad essere in grado di capire perché non sanno le cose che sono nella tua testa, come il pesudocode, quindi forse lo faranno avere un tempo difficile da capire ciò che il codice sta facendo. Quindi, i commenti sono davvero utili per spiegare a qualcuno che sta guardando il codice di quello che sta facendo, e in realtà anche per te, sono molto utili. Come si va a p-set più dure e difficili, si sta andando a vedere che il codice diventa più lunghi, e poi i commenti sono davvero importante quindi ricordare ciò che ciascuno parte del vostro programma fa. Per inserire un commento, si può solo fare un tagliare barra e poi scrivere un commento. E l'intera linea è parte di un commento, e tutto ciò che si scrive, non sarà utilizzato per il codice. E 'fondamentalmente come il compilatore sta per ignorarlo. Ritiene che senso? AUDIENCE: Cosa fai di nuovo per scrivere un commento? LUCAS FREITAS: Questo? La barra ridurre drasticamente? Ogni volta che si digita barra barra, a prescindere è in quella linea non sta andando per essere considerati C. Sì? AUDIENCE: Così, dopo il commento, basta entrare e iniziare una nuova linea? LUCAS FREITAS: Sì, esattamente. LAUREN CARVALHO: La barra barra è per i commenti singola linea. LUCAS FREITAS: per esempio, qui abbiamo - fammi Zoom In - per esempio, qui sto dichiarando un galleggiante, ma forse se hai appena messo questo nel codice, come non avete idea cosa sta facendo, come in realtà qualcuno che sta cercando in questo codice sta per essere, come, quello che il diamine sta succedendo? Se si mette un commento dicendo: "convertire Fahrenheit a Celsius, rende molto più senso. Sei, come, OK, tu sei facendo una conversione. Ritiene che senso? Quindi è solo qualcosa che aiuta le persone pronto il codice e anche fare è in grado di organizzare il codice migliore. La seconda cosa è che si può fare commenti multi-linea, in modo da avere una commento di un gruppo di linee. Invece di dover mettere barra barra, le osservazioni prima linea, tagliano barra, la seconda linea, e così via, può usare la stella barra. Il modo in cui lo si fa è che per la prima riga del commento, sei andando a fare una stella barra stella, quindi basta così. Proprio come qui abbiamo l'inizio di un programma, di solito si mette che si sono, che cosa fa questo programma, e cose del genere. E 'un po' come un colpo di testa per il programma. Anche in questo caso, non è qualcosa che un compilatore sta andando a preoccuparsi, ma è importante per voi sapere che cosa questa programma fa o per le altre persone di sapere che cosa il programma sta facendo. Quindi non slash star, e poi il ultima linea si sta andando a fare stella tagliare per poter chiudere quel commento. Quindi sostanzialmente per tutte le altre linee, si può solo scrivere quello, e questo è tutto sta per essere ignorato. E anche, proprio come lo stile, si vede che ciascuna linea ha una stella, e tutti le stelle sono allineate. Queste sono cose importanti in modo che il codice sembra piuttosto. Suona bene? Ora, le condizioni. Che David stava dicendo che dovremmo effettivamente messo in quelle diapositive, è che se avete qualsiasi tipo di istruzioni if o qualsiasi tipo di condizioni, è necessario utilizzare le parentesi graffe per mostrare che questo è ciò che stava per accadere quando si ha la condizione. Tecnicamente, quando si ha una condizione e poi la riga successiva è solo uno linea, non dovete tecnicamente di mettere le parentesi graffe. Fondamentalmente il compilatore avrebbe capito comunque come implicito. Ma per CS50, vi chiediamo ragazzi a mettere le parentesi graffe solo in modo che la vostra il codice è più organizzata e più leggibile. Dato che il codice si allunga se si non hanno parentesi graffe e così via. Diventa davvero disordinato. LAUREN CARVALHO: Questo è esattamente ciò che David appena sottolineato nelle mie diapositive precedenti. Funziona sicuramente senza il riccio parentesi graffe, ma per ragioni stilistiche stiamo andando a chiedere che non mettete quelli dentro E quando si avvia l'esecuzione style50, che è una specie di controllo 50 per stile, vi ricorderà di fare questo. LUCAS FREITAS: E un'altra cosa è ricordatevi di mettere le parentesi graffe lungo in ogni riga. Così si fa, per esempio, l's. Passare alla riga successiva, aprire il riccio brace, poi si va alla riga successiva. Rientri, che è quattro spazi. Poi si scrive qualsiasi cosa, poi un'altra linea, e chiudere la parentesi graffa. Quindi, essere sicuri che sia quelli ricci parentesi sono in diverse linee. AUDIENCE: Quindi, se questo codice ha come 10 else if, questo dovrebbe essere 10 set di staffe? LUCAS FREITAS: Sì, per ciascuno di essi. Già. Quindi, se, altrimenti se, e così via. AUDIENCE: si può non premere il tasto Tab per il rientro? LUCAS FREITAS: Vi stiamo chiedendo ragazzi di utilizzare quattro spazi. Alcuni editor di testo scheda traducono come quattro spazi automaticamente. gedit non lo fa, quindi bisogna fare space space. Questo è anche qualcosa che alcuni programmatori fanno solo le schede, alcune programmatori solo fare quattro spazi, e alcune altre persone anche fare due o tre spazi. E 'solo che qui stiamo chiedendo voi ragazzi a fare quattro spazi. AUDIENCE: Non c'è quasi sicuramente avuto modo di essere un modo per gedit per automaticamente [incomprensibile]. Come nessun [incomprensibile] fa. LUCAS FREITAS: Già. Penso che si possa andare su Impostazioni. PUBBLICO: Lo fa già tutto questo. LUCAS FREITAS: Lo fa già? OK. Quindi, tanto per essere sicuri che si hanno quattro spazi. AUDIENCE: Dobbiamo mettere il riccio parentesi per i cicli come bene? LUCAS FREITAS: sì. LAUREN CARVALHO: Ogni volta che il incapsulare un blocco di codice, basta si prega di utilizzare le parentesi graffe. E prima di pensare che siamo solo essere pignoli su questo per non va bene ragione, se voi ragazzi andate avanti per ottenere stage tecnologia a grandi aziende, che vi darà una guida di stile, e vi diranno che questo è ciò che il vostro codice deve assomigliare. E anche se hai imparato a codice come questo, forse nel tuo tirocinio dovrete fare qualcosa completamente diverso. Essi non si aspettano di conformate al loro stile. LUCAS FREITAS: E più una cosa è che si fa a notare come ho come x, spazio, meno spazio, 0? Ogni volta che avete un operatore - può essere come più, meno, i tempi, meno, maggiore, qualunque operatore - devi mettere uno spazio a sinistra e la destra dell'operatore. LAUREN CARVALHO: Quelli sono chiamato operandi binari. Basta fare in modo sempre spazio i vostri operandi binari. LUCAS FREITAS: Questo è Non un operando binario. LAUREN CARVALHO: Questo è perché bisogna essere in due. LUCAS FREITAS: Oh, sì. OK, gli interruttori. In primo luogo, bisogna vedere che, proprio come in un'istruzione if o altro, avete per mettere la parentesi graffa sulla propria linea e sotto la parentesi graffa qui. Si noti che esiste un singolo spazio dopo l'accensione, proprio come in se e altro abbiamo avuto un unico spazio tra che e le parentesi. Quindi devi mettere quella. E non c'è giusto spazio dopo ogni delle parentesi o prima della fine delle parentesi. Così si vede che è tutto insieme, e come anche qui. Sì? LAUREN CARVALHO: Penso abbiamo bisogno di andare avanti. LUCAS FREITAS: Quindi questo è parte del guida di stile che avete per CS50. Essere sicuri di andare a cs50.net/style e dare un'occhiata a questo. Queste sono tutte molto importanti per il vostro cliente stile. Lasciatemi tornare alla dichiarazione. LAUREN CARVALHO: Preferirei basta usare style50. Stiamo solo andando a andare direttamente al loop. Bene. Quindi torniamo al contenuto, ora che siamo andati sopra la guida di stile. Loops, li avete visti in Scratch, e stiamo andando a parlare di loro in C. In un ciclo for, esistono tre porzioni al dichiarazione di questo ciclo for. Hai la tua inizializzazione in che si impostano le variabili. Hai la tua condizione, che sono controllo per vedere se qualcosa è vero o falso e se la ciclo deve continuare. E hai l'aggiornamento, che sta aggiornando le variabili. Diciamo solo un rapido sguardo ad alcuni Codice C di questo ciclo for in azione. Che cosa sta succedendo qui in inizializzazione, stiamo impostando i per 0. Nella condizione stiamo controllando se i è inferiore a 10. E nell'aggiornamento siamo incrementando i. Così che cosa sarà il risultato di questo ciclo for? LUCAS FREITAS: In realtà, prima di tutto, voi ragazzi sanno che cosa ho + + è? AUDIENCE: Aumento di 1. LUCAS FREITAS: aumento dell'1, sì. Quindi questa è la stessa cosa facendo i pari i più 1. E notare che non abbiamo uno spazio tra i e il + +. Quindi voi ragazzi sapete di cosa si farà? Qualcuno può dirmi? E magari ottenere qualche caramella a causa di questo? AUDIENCE: [incomprensibile] LUCAS FREITAS: OK. [Incomprensibile] dimostrare a tutti dopo [incomprensibile]. Sì, sta andando a mostrare "Questo è CS50 "10 volte. LAUREN CARVALHO: Credo che fosse nel titolo della diapositiva. LUCAS FREITAS: Oh, sì. [Risate] LUCAS FREITAS: Che aiuta. LAUREN CARVALHO: Così quelli sono cicli for. Andiamo a vedere alcuni esempi di cicli for tardi. Ma facciamo in realtà un'occhiata al secondo tipo di ciclo che si incontrano in C, e si chiama il ciclo while. In un ciclo while, hai appena ricevuto una condizione. La condizione è verificata nel inizio, e se tale condizione restituisce true, allora il codice all'interno il corpo del blocco mentre eseguirà. E il codice continuerà a eseguire fintanto che condizione rimane vera. Ecco un esempio di un ciclo while in C. Stiamo andando a impostare il conteggio a 10 a cominciare. Finché conteggio è maggiore di 0, stiamo andando a tenere la stampa di questo variabile qui. Stiamo andando a diminuire il conteggio e quindi controllare nuovamente la condizione. Stampa, decremento, assegno la condizione di nuovo. Qui abbiamo un esempio che riguarda alla tua domanda precedente. Avevamo la percentuale s quando eravamo la stampa di una stringa, e ora che stiamo stampando un int, abbiamo una cento i come invece la nostra segnaposto. Le lettere dovrebbero essere abbastanza intuitivo s per le stringhe, i per int. Quindi, se questo codice viene eseguito, si dovrebbe conto alla rovescia da 10 a 0, stampando ogni intero. LUCAS FREITAS: E si può pensare al cento come ci si sente come un vuoto spazio e quindi si sta mettendo questa variabile qui in quello spazio vuoto. Così, per esempio, qui avrò solo un vuoto, e poi sto mettendo l' contare proprio lì, l' valore del conteggio. Ritiene che senso? Posso solo fare come printf e poi cita, contare? Vorrei che lavorare? PUBBLICO: No. LUCAS FREITAS: No, perché sarà effettivamente stampare la parola "conte" anziché stampare il valore. Questo è quanto si rendono stampare i valori verso la variabile anziché solo il nome della variabile. Tutte le domande? AUDIENCE: Perché si usa per come opposto a trascorrere? LAUREN CARVALHO: Vorrei usare una di ciclo se so esattamente quante iterazioni Voglio che il mio ciclo a correre. In questo caso, non importa quanto, Voglio dire, io stavo solo cercando di pensare ad una molto semplice esempio per questa diapositiva. Ma diciamo che si desidera qualcosa per andare avanti, mentre - LUCAS FREITAS: per esempio, sei chiedendo di ingresso fino a quando la persona ti dà l'input giusto. Così come, mentre l'ingresso non è OK, continuare a chiedere per essa. O come quando si è genitori non danno denaro, continuare a chiedere per essa. [Risate] LAUREN CARVALHO: Tu non sai come molte volte dovrete farlo. LUCAS FREITAS: Perché non lo fai so quante volte questo è Continueremo a correre. LAUREN CARVALHO: Ma in un ciclo for, è necessario sapere quante volte. Sì? PUBBLICO: Giusto per chiarire, la percentuale dice che questo è qualcosa su di accadere, sulle i per l'intero, e il backslash n - LAUREN CARVALHO: Mezzi? Chi sa cosa significa il backslash n? Nuova linea, sì. Esattamente. LUCAS FREITAS: Si può pensare di n come nuova riga. LAUREN CARVALHO: Nice. AUDIENCE: Cosa c'è che contano dash dash [incomprensibile]? LUCAS FREITAS: Count meno meno è la stessa cosa plus plus, ma invece di aumentare, è in calo di 1. LAUREN CARVALHO: Non più mentre le questioni ciclo? No? Oh, dovevamo hanno saltato questo. Questo è un do while. Molto simile ad un ciclo while salvo questo caso controlliamo la condizione dopo il codice nel corpo della ciclo viene eseguito una volta. Quindi eseguiamo il codice prima non importa quale. Poi controlliamo la condizione, eseguire di nuovo se la condizione è vera. Vi ritroverete con questo quando si sta chiedendo per l'input dell'utente. Perché si sta sempre andando ad avere per chiedere una volta, e poi a seconda di quello l'input dell'utente è, potrebbe essere necessario reprompt e chiedere ancora e ancora, se l'ingresso non era quello che aspettava che fosse. AUDIENCE: Così è come una forma per le persone a compilare. LAUREN CARVALHO: Sì, esattamente. Troverete, credo, in primo Pset, si sta andando ad avere per utilizzare un ciclo do bene a raccogliere input dall'utente. PUBBLICO: A seconda della situazione, i loop mentre tenderanno a correre più spesso che i cicli while, come da uno o qualcosa? LAUREN CARVALHO: Se è l'esatto - LUCAS FREITAS: Essi dovrebbero sempre eseguire l'esatta quantità di volte che si vuole che venga eseguito. Come si usa fare mentre perché abbiamo davvero voluto ottenere l'ingresso almeno una volta. Nei cicli mentre, a volte non si vuole per eseguirlo affatto se non è il caso di eseguire. Quindi dipende dal disegno. Voglio dire, è possibile utilizzare o fare mentre mentre fino a quando il codice lo fa si suppone di fare. LAUREN CARVALHO: Ma io pensare che la risposta alla tua domanda è probabilmente sì. Diciamo che la condizione era falsa. In un caso avrebbe eseguito una volta, e un altro caso sarebbe eseguito zero volte. Quindi, sì. Altre domande? Sì? AUDIENCE: Può la condizione del ciclo essere un per il ciclo in termini di un'altra variabile che [incomprensibile]. LAUREN CARVALHO: Sì, può essere qualsiasi cosa. Probabilmente per i pset inizio, si non dovrà incontrare quel caso, ma sicuramente può essere qualsiasi cosa. LUCAS FREITAS: Penso abbiamo finito qui. LAUREN CARVALHO: Siamo? No? LUCAS FREITAS: Loop? Già. LAUREN CARVALHO: Non dovremmo essere. Oh, abbiamo finito con i cicli. OK. In realtà, perché abbiamo parlato così tanto, andiamo in realtà tutto navigare verso study.cs50.net/conditions. E si sta andando a spostarsi verso il basso ai problemi widget di. Beh, in realtà, mentre le persone sono sempre questo set up, lo studio CS50 è andando ad essere uno strumento che i vostri TFS utilizzare per preparare sezioni e che voi potete usare se si dimentica sezioni. Sta andando a contenere una serie di diapositive, alcuni trucchi e suggerimenti per ogni argomento, e alcuni problemi di pratica con soluzioni. Perché non tutti basta dare un'occhiata a questo problema proprio qui. Mi dispiace, avrei ricordato le persone a portare i computer portatili di oggi. Ma se non avete un computer portatile, che è OK. Si può solo annotare questo giù su un pezzo di carta o di guardare oltre spalla del tuo prossimo. Proviamo a scrivere un programma che richiede all'utente di prendere una congettura, l' numero medio di figli per famiglia unità negli Stati Uniti. Quel numero è 2, a proposito, come si può vedere da questi esempi. Vogliamo per stampare il numero medio di bambini per famiglia negli Stati Uniti, poi abbiamo vogliono che cosa? Noi vogliamo raccogliere l'input dall'utente. E poi, a seconda di ciò che l'utente del ingresso è, si sta andando a stampare o questo è corretto o questo non è corretto. E la prima cosa che si vedere, se si fa clic sulla piccola freccia a la parte inferiore del widget problema è un posto a buttar giù qualche pseudocodice. Quindi non sei ancora programmare. Stai solo ottenere il vostro le idee in ordine. Qualcuno ha voglia di aiutare Lucas venire con la giusta pseudocodice per questo problema? LUCAS FREITAS: Qual è la prima cosa che probabilmente dovremmo fare qui? Che cosa ne pensate ragazzi? AUDIENCE: [incomprensibile] LUCAS FREITAS: Sì, OK. Così, stampa. Basta dire che la stampa la media numero di persone? OK. Print domanda, diciamo. Dopo stampo questa domanda, cosa devo fare? AUDIENCE: Ottenere input. LUCAS FREITAS: Get ingresso. Qualcos'altro? AUDIENCE: Condition. LUCAS FREITAS: Condition. LAUREN CARVALHO: Cosa e 'quello condizioni sarà? PUBBLICO: Il numero di [incomprensibile]. LAUREN CARVALHO: Giusto. LUCAS FREITAS: Che cosa sto andando per verificare la condizione? AUDIENCE: se è uguale a 2. LAUREN CARVALHO: se è uguale a 2. Esattamente. LUCAS FREITAS: C'è qualcosa altra cosa che dovrei fare? AUDIENCE: Conte. LUCAS FREITAS: Quindi, se è pari a 2, diciamo - vorrei solo scrivere se l'ingresso è uguale a 2, allora che cosa ho intenzione di fare è di stampa corretta. E poi il resto, io vado stampare errato. Qualcos'altro? No? LAUREN CARVALHO: Così si possibile fare clic sul - Non tutti hanno questo in giù? LUCAS FREITAS: Ha senso? Così ora cerchiamo di codificare questo. LAUREN CARVALHO: Se si sceglie il piccolo freccia, in realtà salva la pseudocodice, che è davvero emozionante. E si può fare quelli in commenti se si vuole solo ricordare a voi stessi di cosa fare. LUCAS FREITAS: Così, per esempio, prima Ho intenzione di stampare la domanda, così come faccio a farlo, in realtà? printf. Così printf, e la questione è nella media numero di figli per famiglia negli Stati Uniti. Poi ho intenzione di ottenere input dall'utente. Così come posso fare? AUDIENCE: Get Int. LAUREN CARVALHO: GetInt. LUCAS FREITAS: OK. Quindi, prima di dichiarare, giusto? int, chiamiamolo n uguale GetInt. E ora la condizione. Quindi lasciatemi dire che sto andando a qui controllo risposta. Quindi, in primo luogo, se l'ingresso, che è n, è uguale a - come faccio a scrivere questo? AUDIENCE: Uguali uguali. LUCAS FREITAS: Perfect. Così n. E accorgo che faccio uno spazio, uguale, uguale, lo spazio, vero. E ora cosa devo fare? Qualcosa di molto importante per lo stile. Le parentesi graffe. E poi ho intenzione di stampare. Come faccio a stampare? printf. AUDIENCE: Potrebbe essere capitalizzato? LUCAS FREITAS: No. Si suppone che sia tutto in minuscolo. In modo che sia corretta. Sarebbe questo è sufficiente per la printf dichiarazione, o mi sto perdendo qualcosa? AUDIENCE: Nuova linea. LUCAS FREITAS: Nuova linea, sì. Ed ora il resto. AUDIENCE: C'è uno spazio dopo la printf, o no? LAUREN CARVALHO: Dovremmo controllare la guida di stile. AUDIENCE: Non dovrebbe essere. LUCAS FREITAS: Non dovrebbe essere OK. Quindi altro, printf, "Questo non è corretto." LAUREN CARVALHO: Oops, le vostre citazioni. LUCAS FREITAS: OK. Qualcos'altro? Ha un bell'aspetto? LAUREN CARVALHO: Vogliamo provare? LUCAS FREITAS: Sì, cerchiamo di eseguirlo. Quindi è la compilazione, e sembra che funziona. Proviamo due figli. Questo è corretto. E adesso corriamo di nuovo, ma ora invece di mettere due figli, cerchiamo di dire che ho intenzione di mettere come cinque. Ciò non è esatto. Così sembra che funziona. LAUREN CARVALHO: Perché non mostrare loro cosa succede se si mette qualcosa strano, come alcune lettere. LUCAS FREITAS: Oh, sì. Diamo inoltre verificare che. Cosa succede se l'utente sta cercando di pasticciare con il vostro programma, e hanno appena scrivere, non so due. E 'intenzione di dire di tentativi. LAUREN CARVALHO: Così GetInt li sta chiedendo di riprovare. Non abbiamo dovuto prendere cura di che noi stessi. LUCAS FREITAS: Già. Quindi, a meno Io in realtà messo un numero, è intenzione di continuare mi chiede di riprovare. AUDIENCE: Come si esegue? LUCAS FREITAS: Basta cliccare questo pulsante stella. LAUREN CARVALHO: Si dovrebbe salire. Ci si va. LUCAS FREITAS: La stella tasto destro lì. Sì? PUBBLICO: Ha richiede [incomprensibile] con i numeri decimali troppo? LAUREN CARVALHO: credo che lo farà. LUCAS FREITAS: Se fa che cosa? LAUREN CARVALHO: Se si digita in un numero decimale, credo sta andando a richiedere. LUCAS FREITAS: Vediamo. LAUREN CARVALHO: Perché non è un int. LUCAS FREITAS: Già. LAUREN CARVALHO: Quindi non è un int, Get Int vi chiederà di riprovare. AUDIENCE: Allora, dove in quel codice sarebbe decimale che richiede utente che devono entrare un intero particolare? LAUREN CARVALHO: GetInt è in realtà farlo per noi. PUBBLICO: No, voglio dire se volevamo per entrare [incomprensibile] LUCAS FREITAS: Si può dire come media numero di bambini negli Stati Uniti. Non lo so. Possiamo dire, per esempio, "prego ingresso un numero intero. " LAUREN CARVALHO: Un numero intero pari al numero medio. Voglio dire, è solo come voi la parola, giusto? LUCAS FREITAS: Già. Questo non è in realtà parte di codifica. E 'più di come qualunque si sta andando a voler scrivere nel tuo programma. AUDIENCE: Come avremmo funzionare se era in realtà in gedit [incomprensibile]. Invece di premere gioco? LUCAS FREITAS: Noi prima compilarlo. Possiamo farlo facendo make e il nome del file. E poi a correre, noi faremo dot barra e il nome del programma. PUBBLICO: Credo che quello che volevo dire è se volevamo che il programma per rispondere alle il loro corretto, voce non valida, non si dovrebbe mettere in - LUCAS FREITAS: Non saremo in grado di farlo perché il codice dice questo riprovare viene da Get Int, che è un funzione che è già in atto per noi tramite la biblioteca CS50, e poiché è già implementato, ci siamo non può solo [incomprensibile]. LAUREN CARVALHO: Se non si utilizza GetInt, allora si può fare. LUCAS FREITAS: Già. Ma se si sta utilizzando GetInt, non si può. Tutte le altre domande? AUDIENCE: Potrebbe andato con il simile GetFloat e quindi essere in grado di mettere in un decimale? LUCAS FREITAS: Già. AUDIENCE: OK. Poi si poteva solo ingresso float A è uguale - LAUREN CARVALHO: Già. Esattamente lo stesso, tranne una float invece di un int. LUCAS FREITAS: Basta mettere qui e poi GetFloat lì. AUDIENCE: Come volete vedere o hanno visto - LAUREN CARVALHO: abbiamo Non è ancora finita lì. AUDIENCE: - facendo disuguaglianza con galleggianti non [incomprensibile] AUDIENCE: cosa significano i punti e virgola? LAUREN CARVALHO: Il punto e virgola appena significa che questa affermazione è completo, e stiamo per andare sulla diapositiva successiva. AUDIENCE: Quindi è necessario ogni volta? LAUREN CARVALHO: Già. Beh, OK, quindi non per queste condizioni, perché sono incapsulare qualcosa. Quindi, fondamentalmente, se qualcosa sta causando di creare poi una parentesi graffa blocco, non mettere un punto e virgola alla fine. LUCAS FREITAS: Ma tutto altro, sì. Quando finisci una dichiarazione, mettere il punto e virgola. E se si dimentica il punto e virgola, il compilatore sta per arrivare arrabbiato con te, e si sta andando ad avere per cercare di risolvere il problema. LAUREN CARVALHO: Se metto un punto e virgola qui, che avrebbe fermare questa, e io non avrebbe mai arrivare ad eseguire ciò che è all'interno, tra l'altro. Quindi è uno di quei bug comuni. AUDIENCE: l'esecuzione di sempre. LAUREN CARVALHO: Già. In questo caso, avremmo sempre eseguire quello che c'è dentro. PUBBLICO: Il tuo stile [incomprensibile] attaccare che per voi, pensò. LAUREN CARVALHO: Oh, questo è vero. AUDIENCE: [incomprensibile] singolo Linea cosa [incomprensibile] PUBBLICO: Sì? PUBBLICO: Si può avere di più ingressi in una riga? Così come si può chiedere agli utenti stampare due cose? LAUREN CARVALHO: Non usando - LUCAS FREITAS: No. Diciamo che voglio anche per ottenere questo intero m. Devo farlo in una linea diversa. AUDIENCE: Se si dovesse correre che, come [incomprensibile]? Sarebbe stampare il prompt ci [incomprensibile] e poi devi inserire uno e - LAUREN CARVALHO: Beh, eseguirlo. Voglio dire, non c'è nulla ci impedisce di basta eseguirlo e vedere cosa sarebbe accaduto. LUCAS FREITAS: Penso che sia andando a lamenta di noi perché non stiamo usando - LAUREN CARVALHO: Oops. LUCAS FREITAS: Si lamentava a noi proprio ora perché non stiamo usando questo variabile, ma se l'ho fatto, per esempio, n è uguale uguale a, e m è uguale uguale a, allora quale sarà succederà in questo caso? Cosa sarebbe questo programma fare? PUBBLICO: Mi chiedo solo come sarebbe - LAUREN CARVALHO: Vuole solo per sapere come appare come, penso, giusto? Quindi prese uno, e poi ha preso il secondo. Credo che dovremmo andare avanti, perché abbiamo un altro slide show da fare prima - vuoi tirare su la matematica? LUCAS FREITAS: Sì, la matematica. LAUREN CARVALHO: Dia me solo un secondo. Ci sono alcuni numerica diversa variabili in C. Dati numerici in C possono essere classificati in diversi tipi, e questi sono quelli che mai vedere più spesso. E int è un numero intero. Non si può avere alcuna decimali. In Appliance, ci vuole 32 bit per memorizzare un int. Un galleggiante può avere decimali. Ci vuole anche 32 bit per memorizzare un galleggiante in Appliance. Un doppio è un numero con un decimale punto che prende 64 bit per memorizzare esso, il che significa che si può solo avere maggiore precisione perché è possibile avere più - come si chiama questo? LUCAS FREITAS: Sì, che è più. LAUREN CARVALHO: Più posti dopo il punto decimale. E una lunga lunga è un numero intero che prende i 64 bit per essa dolente nella Appliance. LUCAS FREITAS: Così può essere più grande di interi può essere. LAUREN CARVALHO: La cosa su dati tipi in C è che ti dicono cosa tipo di dati che è possibile memorizzare nella variabile. Ti dicono come è possibile utilizzare questa variabile nel programma. E 'molto importante tenere traccia solo di che tipo di dati si sta utilizzando, e se si ha bisogno di cast da un tipo di dati a un altro, assicurarsi che si sa esattamente ciò che accade quando colata avviene. E vedrete un esempio più tardi in queste slides di un errore che può verificarsi. Diamo uno sguardo ad alcuni di matematica in C e pensare davvero con attenzione, credo, su quello che sta succedendo quando questo la matematica è in corso. Nella prima riga, ciò che è succede quando dichiaro x? AUDIENCE: Stai permettendo x essere qualcosa? LAUREN CARVALHO: Già. Beh, sto veramente chiedendo il sistema operativo Sistema per 32 bit di memoria, giusto? In che posso conservare un int, e Io vado a chiamare quel int x. LUCAS FREITAS: andare Fondamentalmente in memoria e trovare un posto che ha 32 bit e dicendo, hey, voglio questo spazio, e sta andando ad essere chiamato x. Quindi sei solo più o meno scoperta una casella nella vostra memoria per memorizzare valori di x. LAUREN CARVALHO: E poi inizializzare x, il che significa che ho appena memorizzare il valore di 2 in quel luogo, quel pezzo della memoria, che abbiamo chiesto di funzionamento sistema. E qui quello che stiamo facendo è in realtà stiamo dichiarando e inizializzazione y in una riga invece di in due righe, come abbiamo fatto qui, che è anche un perfettamente bene, Siamo aggiungendo 1 x, e stiamo memorizzazione che valore y. LUCAS FREITAS: Quindi, in pratica ciò che questo linea fa, trova ora una casella per y, e quindi il suo valore, la cosa che si sta andando a mettere dentro la scatola, è sarà il valore di x più 1. Così ha questa casella per y. Si ottiene il valore di x, sembra qui, e vedere che è 2. Messo lì, più 1, quindi mette a 3 lì. Ritiene che senso? Quindi y sarebbe 2 in questo caso. LAUREN CARVALHO: Va bene, fresco. Abbiamo visto qualche aggiunta, quindi cerchiamo di pensare ora sulla divisione in C. Qui sto dichiarazione e inizializzazione di un float chiamata risposta e dividendo 1 per 10, e poi sto stampando la risposta con due decimali. E notare qui, nella mia dichiarazione printf, quando voglio stampare qualcosa a due decimali,% .2 f è quello che voglio usare. Quindi, il punto 2 è solo dicendo Ho bisogno di due posti dopo il decimale stampato. Ora, che cosa succederà se corro questo codice? Qualcuno ha un'idea? Che cosa sarebbe stampare? LUCAS FREITAS: Quali sono ci aspettavamo di ottenere. LAUREN CARVALHO: Cosa fare vogliamo, innanzitutto? LUCAS FREITAS: [incomprensibile] LAUREN CARVALHO: 0.1, sì. Ma cosa stampare? AUDIENCE: [incomprensibile] LAUREN CARVALHO: Beh, no, in realtà. Questo è quello che stavo parlando perché si necessario tenere molto attenti traccia di i tipi di dati. Quindi, che tipo di dati è questo? È un int, giusto? Non c'è decimale. 10 è anche un int. Non c'è decimale. Se divido un int da un int, ottengo un int che non è 0.1, perché int non può avere cifre decimali, ma solo 0. Perché un int tronca solo al largo delle cifre decimali. LUCAS FREITAS: Così ogni volta che fate operazioni con interi, si sta andando a ottenere un int come risposta. Quindi, fondamentalmente, ciò che il computer sta facendo, è divide 1 per 10, e diventa 0,1. Ma poi è come, aspetta, questo è dovrebbe essere un numero intero, quindi basta ignorare la 0.1, quindi è ora solo 0. LAUREN CARVALHO: Così, quando si stampa questo out, ottengo 0,00 anziché 0,10. LUCAS FREITAS: Ritiene che senso? LAUREN CARVALHO: Questo è il tipo del peccato, giusto? LUCAS FREITAS: Quindi, come possiamo risolvere questo problema? LAUREN CARVALHO: Diamo cercare di sistemare le cose. Ecco un esempio di dove sono in realtà la colata 1 e il 10 per galleggia. Così ora, 1 non è più un int. 1 è un float. Tra l'altro, questo è solo la sintassi per quando si vuole lanciare da un tipo di dati a un altro. Si può semplicemente mettere il tipo di dati in tra parentesi e che hanno appena precedono il valore che si sta colata. Così qui, sto dividendo un galleggiante un galleggiante per ottenere una risposta galleggiante. E sì, questo sarebbe in fatto stampare 0.10. Ritiene che senso? LUCAS FREITAS: Quindi tipo casting è appena conversione da un tipo all'altro. Così galleggiano 1 è in realtà 1.000. Non esattamente questo, ma è qualcosa con decimali che in realtà è 1. Ritiene che senso? Sì? AUDIENCE: cosa succede se hai fatto la risposta galleggiante è uguale a 1.0 diviso per 10? LAUREN CARVALHO: Si sta effettivamente andando vedere che in diapositiva successiva. Che in realtà è la nostra stessa diapositiva successiva. Questo è in realtà un più bello tipo casting, credo. Quindi, questi due sono galleggianti semplicemente natura del fatto che avere cifre decimali. Sì? AUDIENCE: cosa succede se si ha [incomprensibile] diviso 10? LAUREN CARVALHO: In realtà un galleggiante diviso da un int realtà si dà una galleggiante, in modo che avrebbe funzionato bene. Aspetta, fa capire a tutti questo? Perché questo sta per essere davvero grande affare in Pset1, in realtà. Sì? AUDIENCE: Potresti rapidamente andare oltre la parte rossa? LAUREN CARVALHO: La parte rossa, sì. Lucas, vuoi? LUCAS FREITAS: OK. Quindi ricorda che la percentuale è un segnaposto. E 'come uno spazio vuoto. Quindi cerchiamo di capire tutto che sta succedendo qui. Percentuale significa che è un segnaposto. Allora avete la f, il che significa che questo segnaposto è per un galleggiante. L'ultima cosa che abbiamo qui è un 0,2, il che significa voglio avere due decimali per il galleggiante. Se ho appena avuto% f, che si metteranno un mucchio di cifre decimali. Quindi posso solo mettere 0,2 o 0,1 o 0,5, o qualunque cosa, e sta andando a mettere che numero di cifre decimali. L'unica cosa è che se si mette come .100 O .1,000, in realtà non è andando a mettere tutti quei decimali perché non ha abbastanza memoria per avere quella precisione. Tutte le altre domande? Sì? AUDIENCE: Così galleggiare appena permette di andare oltre interi? LUCAS FREITAS: sì. LAUREN CARVALHO: Beh, un galleggiante solo permette di avere decimali. LUCAS FREITAS: Significa solo che si Ora è possibile avere numeri decimali. AUDIENCE: perché dovremmo mai usare interi? LUCAS FREITAS: Perché sarebbe si utilizza interi? Forse se si sta contando 0-10, si desidera utilizzare effettivamente un numero intero. Non è necessario utilizzare un galleggiante. In alcune situazioni, non è necessario hanno in realtà - LAUREN CARVALHO: Forse si non vogliono decimali. LUCAS FREITAS: Forse tu non lo fai desidera utilizzare un galleggiante. LAUREN CARVALHO: L'altra cosa è, ricordare, sia mettere un galleggiante e un int prendere a 32 bit per memorizzare loro, e forse non si vuole sprecare bit per il decimali. LUCAS FREITAS: Già. Così come, basta pensare a questo. Hai 32 bit sia per un int e float. Per un int, tutte quelle a 32 bit andare alla parte intera. Se si utilizza un galleggiante con 32 bit, si avere una parte di questa memoria utilizzata per il numero, per l'intero numero, e dall'altra di essere utilizzato per la decimali. Quindi questo significa che non si può arrivare a numeri molto grandi, con carri allegorici, perché il galleggiante sta già utilizzando un sacco di memoria per i decimali. Sì? AUDIENCE: Quella prima risposta, che cosa esattamente sta facendo? E 'impostazione del valore del flottante pari a quel segnaposto che è possibile richiamarlo nella riga successiva? Dice galleggiante risposta. LUCAS FREITAS: Già. Quindi, la risposta galleggiante significa che stai ricevendo ora un po secchio in memoria che in possesso di un float, e che sta andando di essere chiamato risposta. Ecco che cosa rispondere float fa. E poi dici che dentro di questo, si sta andando a mettere il risultato di questo. Quindi stai andando a fare 1.0 diviso per 10.0, si ottiene 0,1, e poi si mette che all'interno della risposta. LAUREN CARVALHO: Così in una linea, siamo dichiarazione e l'inizializzazione di questo galleggiante chiamato risposta. LUCAS FREITAS: interessante notare che, sebbene questa è solo una riga, sta facendo più operazioni. E 'solo un modo di C locazione si utilizza meno codice. E 'la stessa cosa del ternario operatore, come si può fare solo un [Incomprensibile] in una riga. In realtà facendo la stessa cosa facendo risposta galleggiante, punto e virgola, e allora la risposta è uguale a questa, ma invece di che ti fai due righe per questo, è come una scorciatoia. Sì? AUDIENCE: Quindi, se è stato eseguito questo, sarebbe 0,10? LUCAS FREITAS: sì. Sì? AUDIENCE: è la risposta effettivamente il codice, o è solo il nome? LAUREN CARVALHO: questo è in realtà codice. Questo è quello che stiamo andando per citarne nostra variabile. AUDIENCE: Quindi è solo un nome [incomprensibile]. LAUREN CARVALHO: Già. Avrei potuto dire float x è uguale a 1,0. LUCAS FREITAS: Il fatto è che il nome della variabile è qualcosa che si utilizza. E 'importante per voi. Per il programma attuale, l'unica cosa che conta è il valore che si avere all'interno del secchio. Il motivo per cui si dispone di variabili e nomi di variabili è così sapresti quello che hai a che fare con, come che tipo di dati si è accedendo alla volta. Ma per il codice stesso, se si chiama esso risponde o domanda o nulla, più o meno, non importa. Non importa. Finché sei coerente in ogni occorrenza e così si chiamano qualcos'altro. Sì? AUDIENCE: Se le variabili andare oltre la funzione? Come se si dovesse creare una staffa [Incomprensibile], potrebbe basta [Incomprensibile] rispondere di nuovo? LAUREN CARVALHO: No. AUDIENCE: [incomprensibile] LAUREN CARVALHO: No. Sarebbe al di fuori dell'ambito di questa particolare variabile. E in realtà, che una specie di interessante, perché quando abbiamo cose come loop o se questi condizioni, se si dichiara una variabile all'interno di un altro insieme di parentesi graffe, esiste davvero solo all'interno di tali parentesi graffe. AUDIENCE: Un'ultima nota su i [incomprensibile] galleggianti. Perché si mai voglia di usare int? Questo è più di una nota a margine di nulla, ma il computer è significativamente migliore a gestire interi quello che è a galleggianti movimentazione. E 'come un ordine di grandezza più veloce. Quindi, se abbiamo appena gestito galleggianti solo, le cose sarebbero molto più lento. LAUREN CARVALHO: In realtà, non sembra ad essere un problema con galleggianti. LUCAS FREITAS: Tipo del motivo per che, si può pensare, è come in binario è possibile rappresentare numeri interi mettendo 0 e di 1. LAUREN CARVALHO: Ecco la prossima cosa. LUCAS FREITAS: OK. Impressionante. LAUREN CARVALHO: Just tenere quel pensiero. LUCAS FREITAS: OK, io racconterò più tardi. LAUREN CARVALHO: Prima di arrivare a ciò che Lucas ha appena detto, operatore la precedenza. Questo è il senso comune. Voi ragazzi avete fatto abbastanza. Quindi, solo se c'è qualcosa in parentesi, accadrà prima. E 'la moltiplicazione ha la precedenza over Inoltre, sottrazione, cose del genere. Quindi, in realtà, appena qualcuno vuole dimmi cosa numero uno in realtà valuta per? AUDIENCE: 27. LAUREN CARVALHO: 27? Già. LUCAS FREITAS: Faccio caramelle alle persone. LAUREN CARVALHO: Va bene. Che dire di numero due? Che dire di numero due? AUDIENCE: 22. LAUREN CARVALHO: 22, sì. Non so che ha ottenuto questo. Numero tre? AUDIENCE: 10. LAUREN CARVALHO: 10, sì. Freddo. Così modulo. Lucas, vuoi spiegare modulo? LUCAS FREITAS: Modulo è questo operatore che è in realtà molto utile per una mucchio di problemi. Se faccio 55 modulo 10, cosa fa questo diciamo che voglio dividere 55 per 10. Che cosa ottengo? Si sente come se sto in realtà solo facendo la divisione, qual è la prima volta che ho avuto il numero intero? PUBBLICO: 5. LUCAS FREITAS: 5. E poi il resto è 5, giusto? Così è come 5 volte 10 più 5. Fondamentalmente, ciò modulo fa, si cerca di dividere questo numero per questo, e vede quanto è il resto della divisione. LAUREN CARVALHO: Quindi basta restituisce il resto. Così il numero uno è quello che? 5. Numero due? AUDIENCE: 3. LAUREN CARVALHO: 3. Numero tre? 0. E quattro è 1. Esattamente. LUCAS FREITAS: semplice, giusto? LAUREN CARVALHO: Perché non saltiamo questo solo perché in realtà non hanno tempo, e la gente sembra capire. Quindi, ecco quello che Lucas era solo parlando. LUCAS FREITAS: Un altro motivo per cui ho userebbe int invece di carri allegorici fa che galleggianti sono molto imprecisi. E perché sono imprecise? David ha detto che per rappresentare un intero, per esempio, usiamo 0 e 1, giusto? E poi in fondo fare il moltiplicazione, fare tutte quelle operazioni di sapere quale numero decimale avete al posto del binario. Cosa succede ora se provo a mettere punti decimali? In realtà, per esempio, se ho il numero come 3.33333? Ci si sente come 10 su 3. Come faccio a memorizzare tutti i 3 è che ho dopo? E 'davvero difficile, giusto? Non si può semplicemente dire al computer, hey, ho un 3, e allora lo fai sempre. In realtà il computer non è abbastanza intelligente per questo. Quindi, in pratica tutti i tuoi computer non è che cerca di mettere il numero di cifre si può fino a la memoria che hai. Quindi diciamo che sta andando a dire 3,3333, e il gioco è fatto. Quindi non è in grado di esprimere effettivamente esattamente ciò che il galleggiante sia. LAUREN CARVALHO: Abbiamo un numero finito di bit, il che significa che non ogni numero decimale sarà in grado di essere riprodotti in modo preciso. E così in questo esempio, se vogliamo stampare 0.1, ora siamo di stampa su 20 posti. LUCAS FREITAS: Proprio come dicevo voi ragazzi, si potrebbe mettere un qualsiasi numero. Ma se hai appena fatto i due luoghi, si otterrebbe 0,10, ma se si mette 20 luoghi, sta andando a mostrare un mazzo s di ', perché questo è ciò che si può mettere nella memoria, giusto? Ma proprio qui, fino a 0, e poi è solo mettere un mucchio di numeri casuali. Questo è un po 'come alcuni - LAUREN CARVALHO: Questo è perché siamo non in grado di rappresentare questa decimale proprio con il numero di bit che abbiamo. LUCAS FREITAS: E poi l' computer è fondamentalmente dando un numero di spazzatura. Questo non è in realtà il valore del numero. PUBBLICO: E 'il più vicino si può ottenere [incomprensibile] utilizzando il [incomprensibile]. LAUREN CARVALHO: Quindi l'implicazione di questo è che diciamo che invece di essendo 0.100014, qualunque sia, E se fosse 0,0999 - bene, OK. Facciamo finta che la risposta reale per questo era 0,9999999. Questo è molto vicino a 1, ma non è esattamente 1. E '0,99999. Questo significa che se io prendo 0.999, e io caccio a un int, ottengo 0. Non capisco 1. LUCAS FREITAS: Perché ricordate, colata da float a int, basta ignorare tutti i decimali. Basta ignorarli. Non c'è cosa come arrotondamento o correndo verso il basso quando si typecast. In realtà, c'è questa funzione che fa arrotondamento, che è molto importante, ma basta pensare che quando fate fusione di caratteri, è solo andando a cancellare tutto. Quindi, anche se si dispone di 0,99999, sta andando a solo dare 0 se typecast [Incomprensibile] un numero intero. LAUREN CARVALHO: Quindi basta essere veramente consapevoli punto di galleggianti in precisione, soprattutto quando si inizia utilizzare galleggianti in Pset1. Ma la passeggiata attraverso dovrebbe si avvertono anche di questo. LUCAS FREITAS: E in realtà è davvero difficile, per esempio, se l'ho fatto risposta galleggiante 1 equivale a 1,0 su 10, e poi galleggiano risposta 2 equivale a 10,0 su 100,0. Essi sono lo stesso numero, giusto? 0.1, giusto? 1 su 10 o 10 su 100. Ma ora se provo a vedere l'uguaglianza, come se la risposta 1 è uguale a rispondere 2, forse non sta realmente succedendo essere la stessa cosa. Così galleggianti sono un po 'come quella. Sono come fare uguaglianza.