[MUSIC PLAYING] DAVID MALAN: Va bene. Bentornato. Questo è CS50, e questo è Una settimana, Continua. Quindi, una delle ragioni per cui abbiamo che passa intorno a tecnologie come Google Glass è che essi sono dotati di qualcosa di noto come un API, un Application Programming Interface. E che cosa questo significa è che con il file giusto e con il giusto documentazione, si può effettivamente scrivere software per dispositivi anche come questi. E così quello che abbiamo in mente verso semestri finale è, se un progetto coinvolgendo, ad esempio, Google Glass potrebbe appello, vedremo cosa possiamo fare in termini di mettersi in contatto con voi un po 'di hardware loaner nonché la API pubblicamente accessibile in modo da poter effettivamente iniziare a creare software che gira su quella stessa Google Glass. Un altro dispositivo che abbiamo giocato con di ritardo che abbiamo pensato che potrebbe essere divertimento alla fine del semestre è questa piccola cosa qui. Si chiama Leap movimento, e quello che stai per vedere è tecnicamente un pubblicità per il dispositivo, ma non parlare di ciò che questo particolare dispositivo è in grado di. Ed è, anche, è dotato di una API via cui è possibile scrivere il software per controllare il proprio computer in un modo piuttosto come questo film di un minuto qui. [RIPRODUZIONE VIDEO] [FINE RIPRODUZIONE VIDEO] Quindi, in questo momento, questo dispositivo sembra essere implementato come un po USB connettore che potete inserire nel vostro computer, ma non sarei sorpreso se non molto abbiamo questi tipi di tecnologie nel prossimo gruppo di PC e Mac in modo che si può, infatti, interagire con esso in una maniera simile. In realtà, quello che ho pensato che avrei fatto, anche, è Ho tirato su una piccola dimostrazione programma che viene fornito con il software. Così ho messo il piccolo sensore davanti al mio computer portatile. E come potete vedere, realizza già che la mia mano è lì controllarlo. E tutto fa questa applicazione è swimmingly piccole cose come questa. Ma si può vedere che, in effetti, Ho cinque dita lì. Se siamo in grado di arrivare a fare tutto 10, si può immaginare un piano pulito applicazione o simili. Quindi, se vuoi venire dopo le lezioni oggi e giocare con quello bene, sei il benvenuto a. Quindi, più su che verso la fine del semestre. Così un paio di amministrazione annunci. Uno, fanno parte di questo Venerdì a mezzogiorno a cs60.net/section. Questo URL è in corso di homepage pure. Nel frattempo, però, supersections farà il suo debutto questa Domenica. Supersections sono una cosa di una volta, perché ci vuole del tempo per lavorare chi è in quale sezione e dove. Quindi il prossimo Domenica, ci sarà una sezione per quelli meno confortevole, una sezione per quelli più confortevole. E quelli di voi da qualche parte in fra i benvenuti per andare a uno o entrambi o nessuno dei due. Entrambi questi sarà filmato. Saranno in un auditorium più grande di una sezione normalmente sarebbe pollici Ma l'obiettivo è quello di dotare con qualche conforto con il problema impostato uno, con C, con l'apparecchio CS50, questo fine settimana, anche prima di scoprire la tua Assegnazione sezione formale. Così incontrerete il vostro TF e il vostro più piccolo gruppo di sectionmates in merito una settimana di tempo. Orario di ricevimento, nel frattempo, sono in corso. Fate approfittare di loro stasera o domani sera se si desidera. Problema set 0 è dovuto il Venerdì. Questo è un giorno di ritardo rispetto al regolarmente in programma Giovedi. Ma con il problema di set 1, vedrai che comprende alcuni warm-up esercizi con i quali lei stesso può estendere la vostra Giovedi scadenza al Venerdì. Insieme Problema 1, intanto, farà il suo debutto sul sito web del corso il prossimo Venerdì, se vuoi curl con come ho fatto una volta in ritardo Venerdì sera nella vostra camera. Così cs50.net/appliance è il luogo dove è possibile ottenere l'apparecchio CS50 che abbiamo iniziato a usare il Lunedi. Useremo un po 'di più oggi. Ma vi assicuro che il problema impostato 1 Specifica il lettore attraverso la proprio i passi necessari per ottenere che installato e funzionante. Quindi non preoccuparti di farlo prima Pset 1 se si preferisce non. D'accordo. Così abbiamo cercato il Lunedi a codice sorgente, ma nel contesto di una nuova linguaggio di programmazione, cioè C. E C, a differenza di Scratch, non è grafica. Non è di pezzi di puzzle. E 'sintassi più simile all'inglese. E ci sono un paio di passaggi necessari in realtà la scrittura e l'esecuzione di un programma in C, perché oltre a fonte codice come questo, è necessario qualcosa detto compilatore. E in parole povere, che cosa fa un compilatore per noi? Già. STUDENTE: Si converte il codice che si scrive di 0 e 1. DAVID MALAN: Buono. Quindi converte il codice che scriviamo a 0 e 1. Si converte cosiddetto codice sorgente codice oggetto, il secondo dei quali sembra un po 'di qualcosa come questo. Ed è la CPU, il cervello all'interno di il computer, che a causa della persone che hanno creato quei computer, sapere quali quelle sequenze di media 0 e 1. Forse significa stampa. Forse significa aggiunta. Forse significa sottrazione. Forse significa visualizzare un grafico. Ci sono modelli di bit predefiniti che il mondo ha deciso di dire certe cose. Ma per la maggior parte a questo corso, lavoreremo a un livello superiore, e daremo per scontato che esistono cose come compilatori che possono rendere la nostra funzione di codice sorgente nel modo in cui noi intendiamo. Così il programma che abbiamo scritto prima settimana scorsa e poi cominciò a porta, in modo da parlare, di C lo scorso Lunedi, era questo. Quando si fa clic su bandiera verde, dire ciao. Questo era, naturalmente, scritto in Scratch. E ho affermato che l'equivalente programma in C sembrava un po ' qualcosa di simile a questo. Quindi quello che ho pensato che avremmo fatto in un primo momento è, cerchiamo di prendere in giro a parte quello che sembra, a prima sguardo, è vero, come abbastanza arcano sintassi, ma inizierete a notare modelli abbastanza rapidamente. Ciò che faremo anche oggi è fornire con un modello mentale per qualche canonica, alcuni costrutti standard di nella programmazione. E poi ci troveremo a mettere le mani sporco con alcuni esempi e. Quindi, per quelli di voi più comodo, rendersi conto che questa settimana e poi dopo settimana può benissimo essere un po 'di revisione. Ma soprattutto quando l'edizione di hacker del problema proposto 1 esce sul sito web del corso il Venerdì, io credo troverete che anche come si compila alcuni spazi vuoti oltre la prossima settimana o due, inizierete a ottenere sempre più sfidato e di incontro cose nuove e più recenti. Quindi cerchiamo di prendere in giro questo programma a parte poche righe alla volta. Nella parte superiore, noi abbiamo ciò che è tecnicamente chiamato direttiva del preprocessore. Questa è solo una riga di codice che dice per includere il contenuto di un file, chiamato Standard I / N, standard input - o, mi dispiace, I / O standard, standard di input / output,. h, all'interno del mio programma. Quindi, in altre parole, se ho scritto questo programma con un semplice editor di testo come gedit, l'equivalente più semplice di qualcosa di simile a Microsoft Word, che istruzione, # include stdio.h, è solo andare a dire al compilatore, afferrare la contenuto di tale altro file, stdio.h, e incollarli qui. Ora, perché me ne importa? Cosa abbiamo pretesa è all'interno di questo file chiamato stdio.h, che è memorizzato da qualche parte sul mio disco rigido, o in questo caso, da qualche parte in macchina CS50? Qualcun altro ha messo lì per me. Ma cosa c'è dentro? Sì, quindi è una dichiarazione di una funzione chiamata printf. Ricorda così la funzione printf che visualizza le parole e caratteri e numeri sullo schermo della mia gara. Ma non l'ho scritto io. CS50 non l'ha scritto. Anni fa qualcuno ha scritto, e che in sostanza ci ha dato la ricetta per esso in un file chiamato stdio.h. In modo che prima riga dà solo a me accedo di funzioni che qualcun altro ha scritto anni fa, tra quali sono printf. Ora, la prossima linea che sto per agitare la mia mano, almeno fino alla prossima settimana. Ma per ora, sapere che int main () è essenzialmente l'equivalente di questa giallo pezzo di puzzle in cui bandiera verde cliccato. Il mondo, anni fa, ha deciso che, se si sta scrivendo un programma in linguaggio chiamato C, si avvia il programma con una linea che sembra così. In quasi una settimana di tempo, farà senso ciò che int è, ciò che è vuoto. Ma per ora, pensate un po ' come questo pezzo di puzzle giallo. Ora prossimo, abbiamo una parentesi graffa seguito da un altro vicino parentesi graffa, per così dire. E vedremo questi in tutto programmi in C, nonché JavaScript e PHP. E questi solo incapsulano righe correlate di codice. La parentesi graffa aperta essenzialmente dice, ecco che arriva un po 'di codice. E la parentesi graffa di chiusura, che è inclinato nella direzione opposta, basta mezzi, questo è tutto per il codice rilevante. Così la linea succosa in questo primo programma è l'ultimo, printf, tra virgolette, ciao mondo. E ho chiamato la cosa tra citazioni che cosa l'ultima volta? Quindi è una stringa. E una stringa è solo il techie termine per una sequenza di personaggi, una parola, una frase. Anche una sola lettera potrebbe essere doppio citato. Ma si tratta di una sequenza di zero o più caratteri. Backslash-n, però, sembra un po 'strano. Ma significava semplicemente qualcosa semplice al computer. Che backslash-n? Nuova linea. Ecco, questo è proprio la sequenza speciale di personaggi che il mondo ha deciso significa mettere una interruzione di linea proprio lì, perché il compilatore effettivamente ottenere confuso, di solito, se si, molto comprensibilmente, ma in modo non corretto, proprio iniziare a colpire Invio per mettere nuove linee nel codice. Hai bisogno di essere un po 'più esplicita con backslash-n. E vedremo c'è qualche altro tale modelli per i caratteri speciali. Per esempio, se si voleva lasciare il vostro mente vagare per un caso d'angolo, Suppongo che ho voluto stampare un doppia citazione sullo schermo per qualsiasi motivo, che sembrerebbe essere un po 'problematico, giusto? Perché se ho messo una doppia citazione nel mezzo "ciao, mondo", per qualunque ragione, perché Ti sembra potenzialmente problematico? Si rompe la corda. Il compilatore è solo un programma. Un programma come un compilatore è solo andare a leggere il tuo codice in alto verso il basso, sinistra a destra. E se vede tre doppie virgolette invece di due, non sta andando a conoscere se vuoi dire che la cosa a sinistra dovrebbe essere la stringa o la cosa da il diritto, o il tutto. E 'ambiguo, e quindi ciò che un tipico compilatore dovrebbe fare è semplicemente fuori di testa, e darvi qualche messaggio di errore, e ti fanno affrontare il problema. Quindi, dato che la barra inversa-n significa una nuova linea, quale sarebbe il tuo istinto adesso iniziare ad essere se si voleva includere qualcosa di anomalo come una doppia citare all'interno di questo altrimenti citato stringa? Backslash-doppie virgolette. E quindi vedremo questa tipo di modello troppo. Se si vuole fare qualcosa di un po ' strano, troverete che il soluzioni spesso seguono uno schema, e la barra rovesciata denota una sequenza di escape. E significa semplicemente qualcosa di speciale che abbiamo bisogno di rappresentare in un modo diverso. Quanto a come si fa a rappresentare una barra rovesciata, beh, faremo tornare a quello. Ma la risposta, anche, è in realtà un po 'ovvio. Quindi cerchiamo di ora introdurre qualche altro costrutti di programmazione che si è visto in Scratch. Probabilmente hai preso per scontato già se hai già tuffò problema impostare 0. Ma veniamo ora introdurre la sintassi in C per queste altrimenti abbastanza intuitivo idee, almeno alcuni di loro. Quindi questa idea di una condizione o un ramo, mentre in precedenza si rappresentata con il codice che sembrava come questo a sinistra in Scratch - se x è minore di y, poi dire - invece ora in C - lasciatemi affinare in sul caso più semplice - stiamo semplicemente andando a dire, se, aprire parentesi, qualcosa è vero - un Espressione booleana sta per andare dove ho detto condizione - parentesi chiusa, quindi fare ciò che è all'interno di queste parentesi graffe. Quindi, anche qui, le parentesi graffe sono un po 'come Scratch Pezzi di un puzzle a forma di U. Fare ciò che è all'interno di queste parentesi graffe. In questo caso, slash slash. E notare questo è un attaccante Slash, non una barra rovesciata. Slash, slash, per coloro che hanno programmato prima, significa semplicemente - è solo un commento. Un commento non è una linea di codice, per sé. E 'una linea di inglese che, il umana, hanno scritto a voi stessi per forse si ricorderà di fare qualcosa, di spiegare a te stesso, a spiegare a qualcun altro, ciò che il codice sta facendo. E 'solo un commento descrittivo. Ora, naturalmente, siamo in grado di avere un doppio senso bivio solo facendo questo, un forcella a tre vie in mezzo alla strada facendo questo, e se si continua questo modello, si può avere a quattro vie, a cinque vie, forchette sei vie in mezzo alla strada, se è necessario gestire, in effetti, che molte condizioni. E poi notare il parallelismo qui - if (condizione), else if (condizione), e l'unico che è un po ' strano è l'ultimo, che è proprio questo il resto. Ma ancora una volta, questa è identica, concettualmente, a quello che abbiamo fatto già, anche se la sintassi volontà prendere un po 'per abituarsi. Ora, in questo esempio, vi sono qualche altra sintassi strana. Vediamo printf nuovo, parentesi aperta, e la parentesi chiusa. E dentro c'è una stringa tra virgolette. Le parentesi, nel contesto di printf, andare a sinistra e proprio di che cosa? Che cosa ci descriviamo che citava stringa come più in generale? Quindi si tratta di un argomento. Ogni volta che si dispone di una funzione, come printf, e quindi una parentesi aperta e una stretta paren e qualcosa dentro di esso, che si tratti di una stringa, o un numero intero, o qualsiasi altra cosa, la cosa in tra queste parentesi è chiamato un argomento. E un argomento influisce solo comportamento della funzione. In questo caso, è abbastanza chiaro come. x