>> [GIOCO MUSICA]
>> DAVID MALAN: Va bene questo è CS50 e questa è la fine di una settimana.
Quindi vorrei presentarvi il mio ex advisee, Andel Duff, che non solo rende
iPhone 5 sta, così come questo leggio, fa anche vetture.
ANSEL DUFF: Come va, tutti?
Voglio solo dirvi un po ' po 'di Formula SAE, di cui ho
Sono il capitano.
E 'un team del MIT.
Voglio solo dirti ragazzi un po 'su di esso
e si spera di generare un certo interesse.
>> Quindi lasciatemi correre attraverso un paio di cose circa la nostra squadra.
Quindi siamo completamente studentesca, in cui tutti
del disegno membri, simulare, prova, e produttore di un sottosistema
della vettura.
Noi abbiamo la nostra officina meccanica e garage, e N52-- o mi dispiace,
N51-- che è lo stesso edificio come il Museo della Scienza MIT.
E noi siamo il popolo che guidano la macchina.
C'è un concorso nazionale all'inizio dell'estate,
e poi ci sono più piccoli sparatoria concorsi durante tutto l'anno.
E poi facciamo formazione dei conducenti giorni per ottenere nuovi membri conoscono.
>> I nostri giorni di compilazione sono Sabato 11:00-20:00.
Il pranzo e la cena si prendono cura di, da Bertucci e di Beantown
rispettivamente.
Abbiamo una riunione settimanale e seminario, che è per il credito corso.
Che è come nuovo di questo semestre, e sarà anche per il prossimo semestre,
in modo da poter attraversare-reg per questo.
E poi abbiamo la progettazione, negozio, e giorni CAD durante la settimana,
considerando che i membri saranno indipendente Parti CAD, per magazzino et cetera.
>> Così per elettrico ingegneria presso il team
abbiamo la nostra trazione, sistema ad alta tensione,
che corre a un nominale 300 volt, che comprende
motori, controllori a motore, e batterie.
Poi abbiamo un basso sistema di tensione, che corre
a 12 volt, che comprende controlli, CAN nodi, il cervello
scatola, e il cruscotto.
Per quanto riguarda CS va, facciamo avere manutenzione del sito web
che abbiamo bisogno di fatto per gli eventi, l'adesione modifiche, nuove immagini, e materiali di PR.
E poi abbiamo il codice che controlla il macchina per il nostro controllo di trazione, di lancio
controllo, controllo cruscotto, torque vectoring, e sistemi di frenata rigenerativa, che
conduzione tipicamente in MATLAB, Simulink, e LabView.
>> Vi dica un po 'su la macchina.
Quindi è di circa 500 chili.
E 'norme limitate a 85 kilowatt.
Dispone di 2 EMRAX 207 motori in indietro, uno per ogni ruota posteriore.
Ha batterie custom-built da cellule A123 sacchetto prismatici,
per un totale di 300 volt e 5.6 chilowattora.
Ed è a trazione diretta con un rapporto 2,64-1 unità.
Ecco alcune immagini noi prese di esso in concorrenza.
Ecco il cono posteriore, naso, e qui ci sono i motori,
quei grandi dischi neri sotto la mens et manus.
Ecco una diapositiva che ho tirato fuori del nostro schema concorrenza.
E questo è solo paragonando la nostra macchina per una paio di auto disponibili in commercio,
come la KTM XBOW, Ariel Atom, e Caterha M 7-280.
Se si ha familiarità con il prezzo, il potere tirare peso, di dollari per cavallo,
dollari per la coppia, e la nostra macchina li soffia fuori dall'acqua.
Se avete domande, annotare questo indirizzo email.
Ci Spara una e-mail a fsae@mit.edu.
>> Siamo felici di parlare qualsiasi cosa vuoi.
Studenti di Harvard sono gentili della minoranza sulla squadra.
Se avete domande su che si prega di farci sparare una e-mail,
felice di parlare, e io vado di tornare a Davide.
Grazie.
Lo apprezzo, ragazzi.
[Applausi]
>> DAVID MALAN: Ansel trascorso l'estate lavora con noi qui nel campus in CS50
questa estate.
Ed oltre a lavorare sul cose come le lampadine binari,
egli in realtà davvero aperto il nostro eyes-- e la mia in particular--
di quanto realmente l'intersezione di non di hardware e software può essere.
In realtà molte delle cose che ha appena viaggiammo attraverso sei in ultima analisi,
creato prima nel software, e quindi in ultima analisi fabbricato
nel mondo reale in hardware.
Quindi, se siete interessati a esplorando quella intersezione,
forse prendere quel gruppo.
>> Ora nel frattempo, quelli di voi che sono appassionati di tecnologia,
e prodotti Apple in particolare sapere che ci
erano un paio di annunci di ieri.
Ma abbiamo pensato mostriamo Sei uno che è venuto fuori
un paio di giorni prima che si potrebbe non aver visto.
>> JORGEN EGHAMMER: Sai, di tanto in tanto qualcosa
viene avanti che cambia il nostro modo di vivere.
Un dispositivo in modo semplice ed intuitivo utilizzo si sente quasi familiare.
Presentazione catalogo IKEA 2015.
Non è un libro digitale o un e-book, è un libro-libro.
>> La prima cosa da notare è cavi, nemmeno un cavo di alimentazione.
Il catalogo IKEA 2015 viene completamente carica,
e la durata della batteria è eterna.
L'interfaccia è 7,5 da 8 pollici, ma può espandersi a 15 da 8 pollici.
La navigazione è basata sul tocco tattile La tecnologia che si può effettivamente sentire.
>> Il contenuto viene fornito pre-installato con 328 pagine in alta definizione
di ispirare idee di arredamento per la casa.
Per avviare la navigazione, è sufficiente toccare e trascinare.
Da destra a sinistra per andare avanti, sinistra a destra per tornare indietro.
>> Notate qualcosa di diverso?
Giusto.
No lag.
Ogni pagina cristallino carichi istantaneamente,
non importa quanto velocemente si scorre.
Se si desidera ottenere una rapida panoramica, basta tenerlo nel palmo della tua mano,
e usando solo il pollice, velocità di sfogliare il contenuto.
>> Se trovate qualcosa che si desidera salvare per dopo, si può semplicemente segnalibro.
E anche se si chiude l'applicazione, si può facilmente ritrovare il segnalibro.
Incredibile.
>> [Risate]
[Applausi]
In modo che ci porta a la fine della settimana uno.
Alcuni annunci ora.
Così sezionamento è ora in corso.
Vai a questo URL qui qualche volta tra oggi e Venerdì a mezzogiorno
per specificare in realtà se siete tra quelli meno confortevole, più
confortevole, o una via di mezzo.
>> Questo è in genere uno di quelli cose che solo tipo di sapere.
E infatti quelli di voi che sono meno comodo probabilmente conoscere il più,
quelli di voi che sono più confortevole sa tanto,
e di nuovo, se non si è abbastanza sicuri che di quei secchi si cade in sei
probabilmente da qualche parte nel mezzo.
Ma certi è possibile scambiare dopo un paio di settimane, se necessario.
>> Nel frattempo, per la prossima settimana non partiamo sezioni di per sé,
ma le sezioni super, che sono aperti a tutti gli studenti.
Domenica prossima in una posizione di sarà annunciato sul sito del corso
avremo uno per quelli meno confortevole,
così come uno per quelli più comodo.
E quelli nel mezzo può scegliere quale di questi due,
o entrambi, se vuoi, a sit-in su.
E l'attenzione di coloro che sarà in ultima analisi C,
che continueremo la nostra conversazione di oggi.
>> Problema impostare 0 nel frattempo è speriamo nelle vostre mani.
Ufficialmente a causa di domani, Giovedi, a mezzogiorno.
A meno che non incassare in un dei tuoi 5 giorni di ritardo,
che porterebbe essa fino a Venerdì a mezzogiorno.
Problema 1 set nel frattempo sarà pubblicato sul sito web del corso.
E questo sarà il nostro primo incursione come una classe in C.
E questo problema impostare spec vi guiderà attraverso un sacco di meccanica di ciò che
abbiamo iniziato a parlare il Lunedi, e noi continueremo a parlare di oggi.
C, Linux, il CS50 apparecchio, tutto questo
vi attenderà nelle specifiche.
>> Orario di ricevimento nel frattempo sono in corso, nella sala da pranzo di laurea.
Andate a questo URL qui per vedere il pianificare per stasera e domani,
se volete partecipare.
Domande nel frattempo, in modo che si avere l'opportunità di porre domande
in modo asincrono, 24/7, rendi conto che stai non limitato alle sezioni e l'ufficio
ore, ma piuttosto questo strumento qui, CS50 discutere a questo URL
sarà online del corso bollettino software di bordo, tramite la quale
si possono porre domande su compagni di classe e anche personale.
Quindi, tenere a mente che risorse come bene.
Nel frattempo una tradizione inizia questo Venerdì.
Come avrete intravisto da video teaser di Mercoledì scorso,
abbiamo una tradizione più ogni Venerdì durante il periodo
di prendere circa 50 studenti e personale per un ristorante locale chiamato
Fuoco e ghiaccio, in cui siamo tipicamente raggiunto da alcuni alunni
o amici dell'industria di solito aspirare
per fare una grande classe si sentono più piccoli.
Quindi è un pranzo del tutto casuale.
Un gruppo di noi, il personale soprattutto, giocherà sedie musicali
e chiacchierare con gli studenti su 50, vita fuori di 50,
vita, in futuro, il mondo reale, Sto parlando di opportunità di lavoro
con gli amici nell'industria.
>> Quindi, se volete unirvi a noi questo Venerdì, testa a questo URL qui.
Lo spazio è limitato, ma faremo questo recurringly per tutta la durata.
Andate lì per cs50.harvard.edu/rsvp.
E se non si ottiene in questa volta, di non preoccuparsi.
Lo faremo di nuovo in prossime settimane pure.
>> Quindi questo è il quadro abbiamo dipinto la scorsa settimana,
e probabilmente siete stati dilettarsi in finora.
Ma cerchiamo di collegare questo ora a quello che stiamo andando a fare oggi
e in avanti.
Potrei avere un volontario?
Va bene, o più.
Che ne dite qui sul fine, in camicia blu.
Vieni su, come ti chiami?
ALANA: Alana.
DAVID MALAN: Alana.
Così Alana, solo per un moment-- Piacere di conoscerti you--
sta per svolgere il ruolo di questa funzione qui.
Il blocco viola che abbiamo chiamato finora una funzione.
Così che cosa ho intenzione di andare avanti qui e offrire Alana
è un po targhetta, per rendere chiaro quale ruolo si sta giocando.
>> Così sarai il blocco dire.
Se si vuole andare avanti e metterlo su.
E stiamo andando a mantenere questo super semplice.
Se l'obiettivo a portata di mano è semplicemente ora di attuare con Alana,
questo cosiddetto dire blocco, ecco come sta andando a lavorare.
I have-- chiamiamolo un argomento o un parametro,
è davvero solo un foglio di carta bianco.
Ed è bianco per essere una sorta di reminiscenza della scatola bianca in cui si
può scrivere parole.
>> Nel frattempo ho intenzione di andare qui.
Ho intenzione di andare avanti e scrittura H-E-L-L-O virgola mondo.
Ed ora io, come dire che il programmatore, non lo faccio in realtà saper dire qualcosa.
Posso venire con le parole, ma non necessariamente
saper esprimere me stesso verbalmente o sullo schermo.
E così quello che sto fare è prendere questo pezzo
di funzionalità, il cui input-- o argomento, come ci chiamiamo,
Ho scritto su questo pezzo di paper-- e ho intenzione di esternalizzare esso.
>> E infatti questo è il ruolo che funzioni in un linguaggio di programmazione
può giocare.
Qualcosa come dicono blocco può essere esternalizzate
a qualcuno che sa veramente quello che lei o lui sta parlando.
Quindi, se ti passo sopra qui solo per un attimo,
Ho intenzione di passare questo ingresso per Alana, e chiedere che tu dici questo ingresso.
>> ALANA: Ciao, mondo.
DAVID MALAN: Questo è tutto.
Quindi che c'è una funzione.
Ora siamo in grado di prendere un po 'di più, siamo in grado di fare un passo avanti qui.
Perché quello era chiaramente deludente.
Quindi cerchiamo di ora convertire questo a qualcosa di un po 'più sofisticato.
>> Quindi questo, naturalmente, è la nostra versione C.
Così ora se si vuole prendere quel una tantum, che il nome del tag off,
e diamo si mette su un nuovo nome.
Ma fondamentalmente sei giocare lo stesso ruolo,
così succede per essere chiamato printf ora.
>> La storia è, naturalmente, andando a essere-- probabilmente
proprio come underwhelming-- è sarà la seguente.
Si è ora la funzione printf.
Io sono il chiamante, o il programmatore, che vuole
a stare sulle spalle dei persone in passato come te,
che hanno già capito come in realtà scrivere qualcosa.
E così questa volta, piuttosto che dire che andiamo
effettivamente utilizzare il nostro schermo qui.
Quindi, se vuoi fare un passo qui, io vado
per passare di nuovo questo come Ingresso al mio amico printf.
Se si potesse andare avanti e stampare che sullo schermo,
semplicemente disegnando con il vostro dito sullo schermo nero.
Eccellente.
Va bene, così un sacco di suspense per come che stava andando a giocare fuori.
>> Così ora prendiamo le cose un notch finale, se potessimo, come segue.
Quindi questo è un programma C come abbiamo detto l'ultima volta.
E questo fa proprio quello che hai fatto, che stampa fuori allo schermo, ciao, mondo.
Anche se c'è chiaramente un sacco roba di distrazione lassù.
Ma facciamo le cose su una tacca e introdurre questa versione, che richiamano
Era la terza versione che abbiamo finito con l'ultima volta.
>> Ed ora c'è chiaramente due usi di printf.
Ci sono 2 chiamate a Alana in questo caso per printf,
ma c'è anche una chiamata a un'altra funzione.
Che cosa è che la funzione chiaramente?
GetString.
>> Possiamo ottenere un altro volontario?
OK, andiamo su.
Come ti chiami?
>> JAVIER: Javier.
>> DAVID MALAN: Javier, vieni su.
Quindi il ruolo di Javier è in questo pezzo di carta.
Che io vado a chiamare genericamente s.
Ora, questa è una variabile, è di tipo stringa, come implicita
che da seconda linea nel mezzo là.
E mi piacerebbe che tu vada me ottenere una stringa.
Specificamente testa in giù per l'orchestra sezione e mi ottenere il nome di qualcuno,
e tornare con una variabile che contiene tale valore.
Può essere chiunque tu voglia.
>> Eccoci qui.
Va bene, Javier è scrivere il nome.
Bene.
Noi tutti possiamo intuire come questo sta andando a giocare fuori.
Stiamo forse belaboring il punto di ciò
una funzione è fare, ma comunque vi ringrazio molto.
>> Così Javier è tornato questa stringa qui, che, non riesco a vedere,
Jonathan è la stringa che abbiamo ottenuto.
Così ora quello che sto realmente accadendo per fornire a Alana però
è qualcosa di un po 'diverso.
Perché in questa versione del programma, prima c'è il vostro nome.
Quindi il primo argomento Ho bisogno di fornire Alana
con sta per essere letteralmente il vostro nome.
Va bene, in modo semplice come quello Vorrei consegnare questo a voi.
E mentre scrivo il argomento successivo, se si
voglia di andare avanti e scrivere questo sulla scheda, andiamo avanti
e fare l'ultimo esempio qui per fare cancellare ciò che è in ultima analisi, deve accadere.
Quindi indicare il vostro nome, scriverlo verso l'alto
se non ti dispiace, solo in modo che abbiamo camera per una seconda linea.
Perché l'ultima cosa che ho intenzione per ora offrire non è uno,
ma due pezzi di carta.
>> Bene.
H-E-L-L-O virgola e poi una riga vuota.
Quindi quello che sto per consegnare Alana ora è qualcosa di un po 'diverso.
Non solo è sempre presente, dove riempire il vuoto rappresenta
che percent-- quello che era il segnaposto abbiamo usato?
Sì, così cento s.
Nel frattempo ho intenzione di passare lei in un secondo argomento, che
è esattamente ciò che Javier recuperato da Jonathan.
>> Allora lascia che ti dia questi due.
Se vuoi, andare avanti e di stampa che effetto.
Cosa sta succedendo in ultima analisi, ora è, Alana nuovo
sta giocando il ruolo di printf.
Javier stava giocando il ruolo di GetString.
Quindi, che sarà il vostro souvenir.
E in ultima analisi, ciò che sta accadendo, nonostante questo hello-- yep andare avanti e virgola.
ALANA: Ho ricevuto questo ancora o no?
DAVID MALAN: Sì, si entrambi ricevuti in una sola volta.
Così l'idea è che si ora può capovolgere la pagina
per gestire la seconda di questi due ingressi.
Quindi questo è solo per ribadire il sottolineare che mentre Alana eseguito
questa linea verde qui, e poi Javier ha fatto questo per noi
e tornare a me qualcosa chiameremo s, ma era davvero
solo quel pezzo di carta della propria.
E ora Alana ha fatto questa terza linea.
>> E anche se tutto questo sembra così incredibilmente criptico forse
a prima vista, in realtà è così semplice come sembra.
Passando ingressi in giro, ottenendo uscite, sia
essere fisicamente consegnato indietro qualcosa, o di vedere un effetto collaterale come questo.
Qualcosa visivamente scritta sullo schermo.
Quindi cerchiamo di andare avanti e ringraziare Alana e Javier,
che era qui, per unirsi a noi qui.
>> [Applausi]
>> Così ora diamo per scontato quanto semplice tutto questo potrebbe essere.
E andiamo alla realtà fare qualcosa in codice vero e proprio.
Quindi sullo schermo ecco uno screenshot del cosiddetto apparecchio CS50.
E se si doveva a, come 02:00 il Mercoledì pomeriggio,
spiegare a qualche amico ciò che l'apparecchio CS50 è,
come definirebbe in una frase?
Qualsiasi una frase?
Sì?
STUDENTE: E 'come un programma che rende il computer di tutti
eseguire con lo stesso sistema.
DAVID MALAN: Buono!
E 'un programma che permette a tutti di computer per eseguire con lo stesso sistema.
È una specie di tuo copia di un esercizio
sistema che accade a essere chiamato Ubuntu Linux.
E funziona in modo efficace all'interno di una finestra sul proprio Mac o PC,
in modo che questo modo di destra fuori del cancello in settimana 1, tutti qui nella classe
ha accesso agli stessi strumenti, la stessa configurazione,
e non c'è specifica curva di apprendimento a un Mac o un PC in particolare.
>> Ora abbiamo aperto, all'interno del CS50 apparecchio il Lunedi, questo programma.
Capita di essere chiamato gedit.
Ma questo è davvero solo un editor grafico.
E 'qualcosa come Notepad o Testo Modifica su Windows o Mac OS, rispettivamente.
E ho proposto che ci fossero davvero tre parti importanti di questa schermata.
Il lato superiore è dove si sarebbe scrivere il codice.
E questo è dove abbiamo trascorso gran parte della nostra tre esempi a lezione di Lunedi.
Il fondo quello che abbiamo chiamato, questa finestra nera, si '?
>> STUDENTE: Compiler?
>> DAVID MALAN: Compiler noi accede attraverso quella finestra.
Ma più in generale.
Sì, era solo una finestra di terminale.
Questo è un vecchio termine di età che appena descrive essenzialmente un lampeggio
pronta, che anni fa usato per essere in uno di quei grandi monitor CRT stile.
Ma oggi è una specie di virtuale nel software.
E le finestre di terminale Facciamo noi digitare i comandi.
E 'una sorta di versione semplificata dell'interfaccia utente o utente.
Non è un grafico interfaccia utente o GUI,
si tratta di una interfaccia basata su testo o un'interfaccia a riga di comando.
>> E infatti è lì che in ultima analisi Sono stato in grado di scrivere del codice.
Una volta avevo scritto qualche codice, però, Ricordo che ho usato questo comando.
E come il nome tipo di suggerisce, questo
mi permette di fare un programma chiamato Ciao.
Ma che cosa stava realmente facendo?
Beh make stava prendendo il mio ingresso, il mio codice sorgente,
e la conversione a ciò che, in ultima analisi?
>> Il codice oggetto.
Ed codice oggetto è solo una fantasia modo di dire zero e uno.
E poi una volta ho voluto per eseguire tale codice oggetto,
Una volta ho voluto passare come input quelli zero e uno nel mio computer di
cervello, il cosiddetto CPU o unità centrale di elaborazione,
Ho dovuto eseguire il programma.
Ma non era abbastanza semplice il Lunedi come solo un doppio clic sull'icona po '.
Quello che invece avevo da fare in modo di eseguire un programma?
>> Che cosa era che secondo comando?
Mi sento un po 'slash?
Sì, sì?
>> STUDENTE: Dot slash il nome del programma.
DAVID MALAN: Esattamente.
Dot slash il nome del programma.
Ora, che cosa significa?
Beh dot è solo un modo arcano di dire directory corrente.
Qualunque sia la cartella ci si trova come riferimento, è rappresentato come dot.
La barra è proprio quello che hai visto in Mac OS e Windows per anni,
si tratta di un separatore tra una directory o la cartella e il resto di qualche nome.
In Windows capita di andare indietro, in Linux e Mac
OS capita di andare avanti.
Ma è solo il separatore, quindi è solo un dettaglio sintattico interessante.
>> La parte succosa del corso è il nome del programma, Ciao.
Ed è quello che rendono creato per noi.
Si emesso che file e noi.
Ma come siamo arrivati ​​a questo punto?
Passiamo ora chiedono la domanda, ciò che era realmente
succedendo qui, almeno con per quanto riguarda alcuni di questa sintassi?
>> Quindi, in una frase o così, come abbiamo fatto a spiegare
questa prima linea che è evidenziato in verde?
Cos'era quella prima linea facendo, per quanto riguarda il mio programma?
Sì?
>> STUDENTE: [incomprensibile].
DAVID MALAN: Dillo di nuovo?
STUDENTE: Inclusione ed il download funzioni ultimi [incomprensibile].
DAVID MALAN: Good.
Compreso, non dirò il download, ma diciamo
comprese le funzioni che le persone hanno scritto in passato.
E queste funzioni sono implementate da qualche parte nel mio computer.
Qualcuno ha scritto un file anni fa, e quel file
è da qualche parte all'interno del CS50 apparecchio, o sul mio disco rigido
più in generale.
E così questa linea è essenzialmente dicendo, andare a trovare quel file, punti I / O standard
h, e copia e incolla il suo contenuto proprio qui sulla cima del mio file
in modo che io non devo farlo manualmente io.
>> E tra i pezzi più succosi all'interno di che file che abbiamo richiesto era quale funzione?
Quale funzione abbiamo detto è stato dichiarato o citato in I / O standard dot h
più probabilmente?
Printf, giusto?
Noi non scriviamo printf su Lunedi, semplicemente esistito.
Proprio come Alana appena uscito sul palco e ha appena
esistito e sapeva come disegnare qualcosa sullo schermo,
così esiste printf per molti anni.
E così questo è il modo in cui accedervi.
Ora, se passiamo qui, principale era che analogo
disse il pezzo del puzzle chiamato quando verde bandiera cliccato
nel mondo di Scratch.
E 'solo una sorta di nome predefinito che gli esseri umani
deciso rappresenterebbe il predefinito punto di ingresso a un programma.
Il pezzo di codice di programmazione che viene eseguito prima.
>> Nel frattempo queste parentesi graffe sono un po 'come la forma curva
di un sacco di quei pezzi scratch gialli.
Essi tipo di incapsulare un insieme mazzo di istruzioni insieme.
Quindi è solo tipo di lega insieme alcune funzionalità correlate.
printf, naturalmente, è una funzione che stampa dello schermo, come abbiamo appena fatto.
>> Che dire di queste parentesi?
Come si define-- anche se avete mai programmato prima, ma solo in base
ora in una crescente si spera intuizione, cosa
sono le parentesi facendo per noi qui?
O cosa stanno circondando?
Sì?
>> STUDENTE: Dicono che cosa si sta andando a stampare con printf.
>> DAVID MALAN: Sì, stanno dicendo quello che si sta andando a stampare con printf.
O, più generalmente, sono che circonda gli input alla funzione.
Così si può quasi pensare di quelle parentesi
come essere come il metallo clip su questo clipboard.
E 'ciò che è in possesso, è ciò che è sta per essere utilizzato per fornire argomenti
nella funzione, che in questo caso si chiama printf.
>> Quindi, in generale, quasi tutte le tempo che noi chiamiamo una funzione,
stiamo andando a vedere un paio parentesi.
Magari con qualcosa in esso, come ora, forse niente in esso.
Ma è lì che si dovrebbe mettere gli ingressi o le cosiddette argomenti
a una funzione.
>> Ecco un argomento del genere.
Ho evidenziato tutto tra le virgolette,
perché si scopre in questo linguaggio chiamato
C, quando si vuole rappresentare un string-- che è una parola o una frase
o anche un paragraph-- devi circondano con doppi apici.
Non apici singoli, doppi apici.
E questo è esattamente quello che ho fatto qui.
>> Nel frattempo c'è un funky simbolo verso la fine lì.
Il backslash n.
Quello che abbiamo detto che rappresentava?
Sì?
>> STUDENTE: Una nuova linea.
>> DAVID MALAN: Nuova linea.
Giusto, non lo fai generalmente premete Invio quando
si desidera che il programma a sputare fuori una nuova linea.
Piuttosto si dice esplicitamente con questo pezzo certamente arcano
di sintassi, backslash n, che si vuole una nuova linea di andare lì.
Infine, il punto e virgola.
Non abbiamo davvero parlare troppo di questo,
e di gran lunga questa sarà la rovina di alcuni della vostra esistenza per il primo problema
set, quando hai appena riusciti a realizzare ti sei dimenticato qualcosa di stupido
come un punto e virgola.
E in generale mettendo ci sarà risolvere questo problema.
Ma che cosa è che fa per noi, vuoi dire?
>> STUDENTE: [incomprensibile].
>> DAVID MALAN: Ci dispiace?
>> STUDENTE: [incomprensibile].
DAVID MALAN: Rifinitura una dichiarazione.
E 'un po' come il periodo in la fine di una frase in inglese,
che, in questa lingua C sta terminando una dichiarazione.
Un'istruzione di programmazione codice che si desidera solo per dire,
Ho chiuso con questo.
Ora notate che è l'unico qui.
Quindi non si vuole entrare in l'abitudine di mettere un punto e virgola
dopo ogni parentesi chiusa.
Per esempio non c'è nessuno accanto a vuoto, e ti
tornare in futuro a ciò che significa vuoto.
Ma in questo caso il vostro printf è un funzione, o una dichiarazione in uso,
e così vogliamo avere che capolinea alla fine di esso.
>> E sto volutamente prendersela con C. E francamente un sacco di linguaggi come C, C ++,
Java, JavaScript, e qualsiasi numero di altre lingue hanno un sacco di questi
sorta di dettagli sintattici.
Che certamente se siete nuovi a programmazione può davvero inciampare.
E si, contrassegnare il mio parole, alcuni di voi
avere questa esperienza in orario di ufficio o in ritardo
notte lavorando su alcuni p-set, dove il programma maledetto semplicemente non viene compilato,
non funzionare, avete idea di ciò che è sbagliato,
sembra completamente logicamente corretto per voi.
Ed è perché si è dimenticato qualcosa come colpire
una virgola alla fine di qualche riga.
>> Ma questi sono i tipi di cose che sei intenzione di imparare subito a vedere.
E in effetti queste sono le cose che e di TF della CA hanno
stata una sorta di formazione a vedere molto più rapidamente di quanto si.
E così questo è solo per dire, come si tuffo nel problema impostato 1 in particolare,
non si sente frustrato da questa roba.
Una volta che si ordina di acclimatate al mondo, si
cominciare a vedere le cose che non si potrebbe vedere a prima vista questa prima settimana.
>> Quindi, il codice sorgente è qualcosa di simile.
Vogliamo passare in la cosiddetta compilatore.
E che compilatore come abbiamo detto fornisce in uscita
noto come codice oggetto, la cosiddetta zero e uno.
Ma da lì, cosa ci danno?
Beh, ci dà questi modelli.
E ancora il computer, il vostro Intel all'interno,
capisce questi modelli di zero e uno.
E a volte il modello rappresenta un numero decimale effettivo
come abbiamo visto la scorsa settimana, a volte rappresenta la lettera
come abbiamo visto la scorsa settimana, a volte rappresenta un'istruzione,
come stampare qualcosa sullo schermo.
>> Così printf per instance-- ma piuttosto, fammi riavvolgimento.
Stiamo dando per scontato che tali zero e uno sono
prodotto da questo comando make.
Ma la marca non è un compilatore.
Rendere non è la cosa nel mezzo che sta producendo gli zeri e uno.
Piuttosto fare è solo una molto convenientemente programma denominato il cui scopo nella vita
è essenzialmente di capire come compilare il vostro programma.
E lo usiamo in questi prime settimane perché appena
ci fa risparmiare un sacco di guai.
>> Ma ciò che rende veramente facendo quando si compila ciao,
è, come abbiamo detto l'ultima volta, è guardando sul disco rigido
o nella cartella corrente, per file di quello che ha chiamato, a quanto pare?
Ciao.c, giusto?
Questo è solo una specie di convenzione.
E 'arbitraria, ma è così che stanno le cose.
Fate, se si specifica il nome di un programma che non esiste ancora,
è andare a cercare il codice sorgente in un file, per impostazione predefinita significa hello.c.
E se lo trova, grande.
Sta andando a convertire tale fonte codice in codice oggetto per te.
>> Ma ogni volta che ho colpito Invio dopo l'esecuzione fanno ciao,
ti ricordo di aver visto l'ultima volta un abbastanza lungo e la sequenza criptica
di altre lettere bianche e caratteri sullo schermo?
Beh, quello era il comando effettivo, il compilatore vero e proprio, che era in esecuzione.
Quindi il compilatore effettivo useremo la maggior parte di il semestre è qualcosa chiamato clang.
Alcuni di voi potrebbero aver usato Visual Studio prima, o GCC,
o un qualsiasi numero di altri compilatori.
Useremo clang.
>> E clang ci permette di convertire in realtà che il codice sorgente in codice oggetto.
Che cosa significa questo in realtà significa in pratica?
Beh, mi permetta di andare in uno di le mie cartelle dall'ultima volta.
All'interno dell'apparecchio CS50.
E lasciami andare avanti e creare questo stesso file, includono standard di I / O dot h.
Int void main.
E ci torneremo in futuro a quanto int mezzi e cosa significa vuoto.
Ma per ora facciamolo ciao backslash mondo n,
proprio come abbiamo fatto sul tabellone.
>> Permettetemi di salvare questo file chiamato hello.c.
E ora se voglio compilare questo Ho could-- lasciatemi lo zoom run dentro--
fare ciao entrare.
E questo nuovo era quella linea molto criptico.
Ma ora almeno una parola probabilmente salta fuori a voi.
Clang è che la linea che abbiamo visto prima.
Ora c'è un sacco di altre cose francamente che ci sventoliamo le nostre mani a oggi.
Ma ci sono alcuni sottoinsiemi, alcuni personaggi in qui
che sono di interesse.
Ma ho intenzione di andare avanti e farlo.
Io vado a prima esecuzione ciao, solo per dimostrare
che questo sta lavorando come era Lunedi.
Ma ora ho intenzione di cancellare il programma.
E proprio come abbiamo avuto questi nomi brevi ultima volta,
il comando per la rimozione qualcosa è rm, rimuovere, immettere.
Stai andando a prendere un po ' domande piuttosto criptici.
Difficile credere che si può fare anche difficile questa domanda per capire.
Ma rimuovere regolare ciao il file appena mezzi fanno si desidera eliminare ciao.
>> E posso andare avanti e digitare y per sì, Enter, e ora non c'è più.
Ciò significa che ora, se io a cancellare il mio schermo,
è che invece di facendo fare hello-- voi
So cosa, sto diventando bravo in questo.
Ho intenzione di eseguire il compilatore stesso.
Non ho bisogno di qualche programma di capire quello che il mio file si chiama.
Ho scritto ciao.c, ho sapere come si chiama,
Sono chiaramente in grado di digitare tale.
Quindi ho intenzione di andare avanti e non clang hello.c Invio.
>> Sembra funzionare.
E non c'è output aggiuntivo, perché clang è il compilatore.
E 'quello che sta convertendo il codice sorgente di zero e uno.
Quindi, se io ora faccio dot tagliare ciao Invio, hm.
Nuovo messaggio di errore oggi.
Così bash è solo il nome del lampeggiante prompt che stiamo usando.
Questa è una grossolana semplificazione, ma per ora questo è tutto ciò che è,
è il prompt lampeggiante.
Ed è per questo che sta urlando a noi.
>> Nessun file o la directory è un po 'più semplice.
Ma sicuramente ho fatto che il codice oggetto.
Ma il problema è, che se digito il comando
per elencare il contenuto di questo directory, che è ciò?
ls per la lista.
C'è un sacco di roba qui, alcune delle quali è venuto con l'apparecchio,
come la mia cartella Desktop, Download cartella, la cartella Dropbox, e tutti
quella roba.
Ma ciò che è interessante è ciao.c, che
Ho creato un momento fa con gedit.
E qual è la più strana guardando nome qui,
forse che non abbiamo fatto vedere l'ultima volta a tutti?
>> a.out, giusto?
Quindi, back in the day, esso è stato appena deciso che quando
si compila un programma per la prima volta,
e non si specifica il nome di un file, chiamiamolo un.
E a.out significa proprio questo è stato l'output del compilatore.
Quindi è un nome orribile per un programma.
Ma da questa logica, dot tagliare per directory corrente, ridurre drasticamente a.out,
dovrebbe significare c'è infatti il mio programma ciao mondo.
Ora un po 'di scaldare esercizio, anche.
Se voglio rinominare questo di file, scopre che si
spostare un file da un nome all'altro.
Così mv a.out, e poi ho può chiamare ciao Invio.
Quindi questo è un comando di Linux.
DOS ha avuto questo anni fa, Windows ha una finestra di terminale
di qualche tipo che guarda in questo modo, Linux e Mac
computer hanno questo prompt lampeggiante.
Anche se la maggior parte di noi probabilmente raramente, se mai, usarlo.
>> Ma quello che ho fatto si esegue una programma, il cui nome è mv,
e io ho fornito con due argomenti, per così dire.
Due ingressi.
a.out è il nome originale.
Ciao è il nuovo nome.
Quindi, se io ora faccio barra dot ciao, Enter, che esiste.
E se lo faccio dot barra a.out, cosa vi aspettate dovrei vedere?
>> Bash, nessun file o directory.
Perché ho appena rinominato.
Quindi, questo richiede un po 'di tempo per abituarsi.
Ma il problema set 1 specifica sarà veramente
tenere la mano attraverso alcune di queste minuzie.
Perché questo è un completo distrazione intellettuale
dalla più interessante idee a portata di mano, che
è in realtà la creazione di qualcosa di codice.
Ma facciamo una modifica ora a questo programma.
>> Ricordiamo che l'ultima volta che ho fatto qualcosa come questo, printf indicare il vostro nome.
E infatti abbiamo appena fatto questo sul grande schermo laggiù.
E poi ho fatto stringa s ottiene GetString paren aperti, vicino paren.
E paren appena stenografia notazione di parentesi.
Così fa GetString richiede alcun argomento?
Nessun input No, ma ha bisogno delle parentesi,
perché è quello che delimita la convocazione di una funzione.
>> Quindi ho intenzione di andare avanti e cercare di eseguire il compilatore su questo programma ora.
Clang ciao.c, perché io non ha cambiato il suo nome per ora.
E ho avuto un sacco di errori.
Diamo l'immagine qui.
Se ho scorrere di nuovo, come ho detto l'ultima volta,
alla prima, stesso errore che ho avuto l'ultima volta.
Sulla linea 6 della ciao.c ho avuto un stringa identificatore non dichiarato,
ho dire standard?
Io no.
Perché quello che errore ho fatto in questo programma, se vi ricordate da l'ultima volta?
Sì, abbiamo bisogno del cosiddetto ruote di formazione
che useremo solo per poche settimane.
Ma ho bisogno di precisare che anche, da qualche parte all'interno dell'apparecchio,
è un file che abbiamo scritto solo pochi anni fa.
All'interno del quale sono funzioni come apparentemente GetString.
Così ora se torno qui, zoom in, e ri-eseguire clang hello.c.
Accidenti, un altro errore.
Ma non abbiamo visto uno prima.
>> Questo è un po 'più esoterico di capire.
Ma questo è volutamente sullo schermo, perché volevamo raccontare questa storia.
Quando si compila ciao.c, proprio come l'immagine da prima suggerito,
si sta convertendo solo che codice sorgente di zero e uno.
Ora il personale CS50 a pochi anni fa ha scritto CS50.h, e un file corrispondente,
CS50.c.
E noi, qualche anno fa, compilati i file
in un file che accade di essere chiamato CS50.o.
>> Oppure può essere rinominato un poche cose diverse.
Ma questo è un modo semplice di pensarci.
Così abbiamo compilato CS50 di libreria in zero e uno.
Ma da nessuna parte ho specificato che voglio unire le mie zeri
e quelli per il mio mondo ciao programma con gli zeri e quelli
che il personale CS50 creato alcuni anni fa in un programma completo.
Tutto quello che ho specificato da scrittura ciao.c clang è compilare hello.c.
>> Io non ho detto clang a Link nei zero e uno
che il personale CS50 creato per voi qualche tempo fa.
Quindi è una soluzione semplice, precipitare l per il link, CS50.
E noi ancora vediamo questo in poco tempo ancora e ancora.
Ma notate ora c'era nessuna lamentela.
Così ora se corro barra dot ciao, ora sta funzionando.
Anche se questo è un po 'fuorviante dato che ho appena ricreato quale file?
a.out.
>> Quindi, mi permetta di riavvolgere per un attimo.
Il programma che abbiamo appena compilato ha le tre linee di codice.
Quando mi sono imbattuto ciao mondo, ciao un momento fa, non ho visto il vostro nome.
E questo è perché ho eseguito il vecchia versione del programma.
Ma se io corro davvero dot barra a.out Invio di indicare il vostro nome, Rob, ciao,
mondo.
Hm.
Questo è il genere di un bug.
Probabilmente voleva dire Rob, giusto?
Quindi qual è la soluzione qui nel codice.
STUDENTE: [incomprensibile].
DAVID MALAN: Esattamente.
Così ho solo bisogno di fare quel ritocco finale in modo che io sto passando un segnaposto,
come riempire il vuoto, come abbiamo fatto poco fa.
Ma cento s è ora che riempire il vuoto.
Così, infine, cerchiamo di rivelare un ultimo dettaglio in modo che non c'è nessuna magia.
Ho intenzione di andare avanti e di sbarazzarsi di hellow.
Ho intenzione di andare avanti e di sbarazzarsi di a.out.
Così ora non ho programmi, solo il mio codice sorgente.
E ho intenzione di eseguire un comando leggermente più lungo, clang
dash o ciao hello.c cruscotto LCS50.
>> Ora questo sta cominciando ad andare sorta di in un orecchio e l'altro forse.
Ma basta prendere in giro a parte ciò che questo sta facendo.
Clang è il compilatore, trattino LCS50 volutamente alla fine
fa che cosa in una frase?
Collegamenti alla libreria CS50.
Afferra il zeri e quelli che il personale ha fatto
e li stipiti nel mio programma.
Quindi l'ultima domanda è a portata di mano, ciò che è dash o ciao probabilmente
facendo, anche se non hai mai visto questa sintassi prima?
>> Emissione di un programma che è non chiamato a.out predefinito.
Piuttosto è chiamato ciao.
Così ora non c'è a.out.
Nessun file o directory con questo nome, perché ho esplicitamente detto
chiamare questo programma ciao, in modo che Ora posso digitare un nome del genere
e farlo comportarsi.
>> Ora, francamente, ragazzo è che poco interessante avere
per ricordare tutto questo poco minuzia, giusto?
Quindi cerchiamo di andare avanti e sbarazzarsi di ciao di nuovo.
E andiamo ora tornare a un mondo in che è sufficiente dire fare ciao.
Ma questa è la magia che fare sta facendo per te,
questo è il tedio che che sta facendo per voi.
E come i nostri programmi e problemi diventano più complessi,
fare sarà veramente essere tuo amico.
Poiché non troppo lungo da ora stiamo andando
di avere programmi che vengono scritti non con un file, ma diversi file,
e rendere automatizza il processo di compilazione di tutto questo per noi insieme.
>> Così ora stampare.
printf è all'interno di questo file, standard di I / O punto h, che abbiamo visto prima,
ma c'è di più a printf di quello.
C'è backslash n, ma c'è anche un mucchio di altre sequenze di escape.
E sequenza di escape è solo un modo elegante per dire qualcosa
che inizia con una barra rovesciata, non una barra, una barra rovesciata,
e fa qualche cosa di speciale.
E non soffermarsi sulla maggior parte di questi, ma perché c'è backslash doppi apici,
cosa ne pensi?
Perché c'è questa strana sequenza di caratteri, barra rovesciata doppia citazione,
perché potrebbe che essere utile?
STUDENTE: [incomprensibile].
DAVID MALAN: Esattamente, giusto?
Ripensate al nostro programma di mondo ciao che abbiamo visto un paio di volte ora,
ogni volta che abbiamo visto quel mondo ciao programma abbiamo avuto doppi apici all'interno
di che è ciao virgola backslash mondo n.
Ma pensare a te stesso, cosa se effettivamente
voluto stampare una virgoletta?
Il tuo primo istinto potrebbe essere, non lo faccio so perché potrei voler fare-- qui,
possiamo essere un po 'passivo aggressivo, ciao amico.
Potremmo voler fare qualcosa di simile.
>> Ma perché è questo ora problematico?
Ignorando le virgolette inglesi da parte che Keynote fatto automaticamente per noi.
Perché questa problematica?
>> Esattamente.
Perché abbiamo come 4 virgolette.
Beh, il primo probabilmente va con il secondo,
e forse il quarto va con il terzo,
o, voglio dire che non sono nemmeno sicuro, né il computer sta per essere.
Ancora Computers, compilatori ancora una volta, sono abbastanza stupido.
Faranno solo fare ciò che dite loro di fare.
E se non sei inequivocabile che sono probabilmente andando a gettare un errore.
>> Se non sei univoca su come fare un burro di arachidi e gelatina di sandwich
strane cose potrebbero arrivare.
E 'la stessa idea.
Ora basta dire c'è alcune altre sequenze di escape,
ma verremo a quelli in breve tempo.
Essenzialmente questi fuga sequenze rappresentano qualcosa
che si potrebbe non essere in grado troppo facilmente alla tastiera,
senza confondere il computer.
>> Ora, nel frattempo abbiamo segnaposto in printf.
Percentuale d, che può anche essere scritta in quasi tutti i casi, come i cento,
è un segnaposto per il tipo di dati?
Che tipo di valore?
Un numero decimale.
Quindi in realtà inizieremo utilizzando i cento perché è
un po 'più semplice, come un intero.
Percentuale i.
Un numero intero che sembra essere decimale.
>> Percentuale s abbiamo già detto è stato un segnaposto per una stringa.
Che è solo una parola, una frase, un paragrafo, un saggio, a prescindere.
E 'una sequenza di personaggi di una certa lunghezza.
E vedremo fra poco alcuni di questi altri.
Ma cento c è per un singolo carattere.
Percentuale f è un numero in virgola mobile,
come un numero reale che ha un punto decimale in esso, che
è di non ovviamente un numero intero.
E c'è un intero mucchio di altri.
>> Nel frattempo in C, e in molte lingue,
abbiamo diversi tipi di dati.
Diversi tipi di ciotole di vetro, se vuoi.
La ciotola ho usato l'ultima volta era per palline da ping pong,
ma possiamo anche memorizzare diversi valori come caratteri e stringhe
e interi in un contenitore, come una variabile, e C ha questi.
Char è il tipo di dati, il tipo di variabile,
in cui è possibile memorizzare un carattere.
Float è un tipo di variabile che è possibile memorizzare un numero reale.
>> Int è, naturalmente, per un int.
E piuttosto ridicolmente nominato un lungo lungo
è dove è possibile memorizzare in sostanza, un numero molto lungo, con ancora
più cifre poi un tipico potrebbe negozio int.
Ma torneremo a che tra non molto.
>> In CS50 dot h nel frattempo l'altro file di intestazione
che abbiamo visto una coppia volte in uso, c'è
altri due tipi di dati che non esistono in C in genere.
Uno è stringa, e vedremo in un paio di settimane Quali corde davvero
sono sotto la cappa.
E uno è bool.
E un bool è una variabile che può assumere solo determinati valori.
E proprio sulla base della scorsa settimana spiegazione di Scratch,
e più recentemente C, cosa vorresti indovinare
sono i due valori possibili per qualche contenitore che è di tipo bool?
>> Sì e no.
Uno e zero.
Vero o falso.
E infatti è l'ultimo che tende essere convenzionale in una programmazione
linguaggio, dicendo qualcosa come vero o falso.
>> Nel frattempo la biblioteca CS50 viene con un mazzo di funzionalità
che il personale ha scritto per voi, oltre ad ottenere giusto una stringa.
Abbiamo scritto a funzioni avanzate che può ottenere un numero intero da parte dell'utente,
ottenere un singolo carattere, ottenere un galleggiante, che
è solo un numero con la virgola.
Prendi una lunga lunga, davvero grande valore da parte dell'utente.
Così abbiamo visto solo questo azione sotto forma di GetString.
Ma con queste funzioni sarà presto in grado di scrivere
programmi che ricevono input da parte dell'utente.
>> Nel frattempo considerare questo programma, e considerare
come possiamo ora iniziare ad aggiungere a con nuovi costrutti.
Un rapido giro vorticoso e poi vedremo
a un certo scrivendo qualche programmi manualmente noi stessi.
D'ora in poi se vogliamo attuare una condizione,
non sta andando a guardare come un bel bel pezzo di puzzle.
Sta andando a guardare un po 'più arcano.
Ma questo è il canonico Struttura di una condizione in C.
>> La parola se, due parentesi, all'interno della quale
sta per essere una specie di espressione booleana.
Ora la barra barra nel mezzo, questo è
al momento un po 'come segnaposto codice pseudocodice.
Ma più propriamente, ogni riga di codice in C che inizia con barra barra
è un commento.
>> E 'come una nota che si potrebbe messo su un saggio, stampato su carta.
E 'una nota a te stesso.
Non ha funzionale impatto sul programma.
E 'una sorta di promemoria, è il tuo documentazione di quello che sta succedendo.
Quindi fare questo al momento è una sorta di segnaposto
per che cosa c'è dentro di quelle parentesi graffe
finalmente sta per fare qualcosa.
>> Nel frattempo ci sono due forchette in strada, se un altro costrutto come questo.
È possibile se, elseif, else.
Ora vale la pena notare, in particolare se sei stato googling intorno
on-line per le risorse su curiosità, o se si prende in mano
uno dei corsi di Libri consigliati su C,
vedrete che gli esseri umani hanno un sacco di preferenze diverse per quanto
di esprimersi in codice.
Ad alcune persone piace mettere il parentesi graffe come ho fatto qui.
Ad alcune persone piace mettere il riccio bretelle per esempio qui.
>> Ad alcune persone piace mettere la qualcun'altro qui e poi questo qui.
Ci sono molti modi per codice di scrittura, e nessuno di loro
sono giusto per sé.
Anche se c'è un qualche che sono piuttosto male.
Ma ci sono no-- se questo è in ultima analisi, un dibattito molto religioso.
Infatti, uno dei più fastidiosi cose di informatica
è come supponente scienziati informatici possono essere.
E troverete nel tempo che anche a sviluppare preferenze personali
su come il vostro codice dovrebbe apparire.
>> Non solo si comportano, non basta creare output, ma come dovrebbe apparire esteticamente.
Quindi quello che faremo è vi guidi lungo la via verso, almeno per ora,
uno stile CS50 standard che almeno mantiene le cose uniforme e di facile lettura.
Ma più su quelli distinzioni in breve tempo.
>> Un'espressione booleana in C, se si voluto dire se questa condizione è vera
e questa altra condizione è vero, non si scrive la parola
e, come si farebbe in inglese.
È invece utilizza commerciale e commerciale, per ragioni che torneremo a.
Se si vuole dire o si utilizzano due barre verticali, che su una tastiera americana
è generalmente sopra Enter accanto al tasto backslash.
E questo significa solo se questa condizione o questa altra condizione è vera farlo.
>> Intanto c'è questa cosa pazzesca, che
avrete occasione da utilizzare di tanto in tanto.
Ma è solo una alternativa modo per esprimere se stessi.
Questo, per ora, cerchiamo di stipulare, è solo
un altro modo di esprimere funky se, elseif, ElseIf, ElseIf, ElseIf.
E 'appena formattato in termini dei casi, dove letteralmente
enumerare i valori che si potrebbe desiderare di controllare.
>> Nel frattempo loop.
Abbiamo visto un confronto di Gratta con un loop.
E ho intenzione di agitare la mia mano a ciò che ciascuna di queste cose significa.
Ma si noti che un ciclo sarà molto spesso iniziano con la parola chiave.
O si inizierà con la parola chiave, mentre.
O si inizierà con la parola chiave fare, e terminare con la parola chiave, mentre.
>> Ma che cosa stiamo a vedere è più cose come questa.
Ecco, in generale in C, come si potrebbe dichiarare una variabile e dargli un valore.
In C non è sufficiente, come in Scratch, basta
dire dammi una variabile chiamata qualcosa.
Devi dire C, e dire compilatore, più precisamente,
che tipo di valore si fa vogliono mettere nella ciotola di vetro.
>> È un numero intero?
Se è così, si deve letteralmente dire int e poi
il nome della variabile, poi un punto e virgola.
Se invece volevi stringa e chiamato E 'come ho fatto oggi il mio codice qui,
si direbbe virgola stringa s.
Una volta che si vuole dare un valore è possibile quindi utilizzare il segno di uguale,
altrimenti noto come l' operatore di assegnazione.
E notare come ogni di queste righe di codice
ha la virgola alla fine di esso.
>> Ma francamente questo solo sembra un po 'brutto.
Perché non posso dire al computer, dare me una variabile e inizializzarla a zero.
Cioè, dammi una ciotola di vetro vuota.
Mentre si può.
E così uno della sentenza che si chiama avrete devono fare stilisticamente nel tempo
viene, si fa a scrivere il vostro codice come questo, o cosa tipo di pulirlo e impressionare
persone scrivendo due righe come una sola.
E questo sarebbe considerato generalmente un modo più elegante
di scrivere stilisticamente codice.
>> Funzioni noi siamo naturalmente visto.
Stanno andando a prendere questo formato.
Il nome di una funzione, alcuni parentesi, e poi magari un po '
roba dentro.
Oppure si potrebbe vedere usi di molteplici funzioni lato
a fianco, come qualcosa di simile.
Ora, come tangente, fa questo scherzo ora ha senso?
>> [Risate]
Ciò non significa che sia divertente, ma non forse fare un po 'più di senso.
Così ora andiamo nel Apparecchio CS50 per un momento.
E lasciate che apro un occhiolino qui.
>> E infatti uno dei motivi per introdurre il catalogo IKEA
e lampeggia l'immagine di iPhone un po 'fa
è stato quello di legare insieme la realtà in fatto che solo pochi anni fa, nel 2007,
questo pezzo di codice è stato rilasciato, che è stata
uno dei primi attuazione di un software
che fa quello che si chiama jailbreaking.
Per chi non conosce, jailbreaking qualcosa di simile a un telefono cellulare o un iPhone
significa essenzialmente capire il modo di fare le cose
con esso che l'azienda che ha fatto non intendeva.
Come si desidera installare determinati software che non è in App Store,
jailbreaking il telefono che si fanno le cose così e più.
Ma ciò che è stato divertente in 2007-- e c'è stato
decine di versioni diverse di queste cose, da allora,
in tutti i tipi di languages-- è che questo programma, chiamato iUnlock,
è stato effettivamente scritto in C. E così ho tirato su il codice sorgente per questo,
solo per mostrare tipo di alcuni dei le somiglianze con i costrutti
abbiamo discusso finora.
Ora non c'è modo più complessità qui che abbiamo visto già in classe.
Permettetemi di scorrere verso l'alto solo un po 'qui.
>> Ma notiamo these-- bene notiamo alcuni things-- a meno di notare queste righe qui,
compresi standard di I / O dot h.
E all-- linea 24, please-- notare lo standard I / O
dot h e un sacco di altri I file che a quanto pare altre persone
hanno scritto.
E se scorriamo attraverso questo, poco arbitrariamente,
Notate che non so come scrivere tutto questo me necessariamente ancora,
ma se c'è.
Quindi, a quanto pare questo ha una succursale.
>> E se ho scorrere giù un po ' inoltre c'è un altro caso.
Se io scorrere verso l'alto, credo intorno alla linea 100 ho visto per.
Quindi io non sono molto sicuro come funziona ancora,
ma questo è un ciclo che sta per mi permetta di iterate un determinato numero di volte.
E se ho scorrere tutti la strada verso il basso
Vedo che c'è un funzionare qui chiamato
principale, e alcuni crediti aggiuntivi per il piacere della lettura.
>> Quindi questo è solo per say-- e ci metterò questa linea tra sorgente del corso
codice oggi-- che anche alcuni di questi dispositivi che diamo per scontato,
alla fine della giornata sei ancora l'utilizzo di questi costrutti di base che abbiamo
state introducendo già finora.
Questo è abbastanza di quello.
Va bene, così ora cerchiamo di effettivamente costruire qualcosa.
>> Andiamo al di là di qualcosa di simile hello.c, e aprire questa,
scriviamo questo programma.
Ho intenzione di andare avanti e scrivere un programma chiamato adder.c,
il cui scopo nella vita sarà come il mio primo super semplice calcolatrice
che aggiunge solo un paio di numeri.
Non perché questo è un disco problema, ma perché
mi permette ora lego insieme un paio di cose.
Quindi ho intenzione di andare avanti e di includere I / O standard dot h e CS50 dot h.
Io vado a dire int void main.
E di nuovo in futuro torneremo ad esso
in in questo contesto e mezzi vuoti.
>> E ora ho intenzione di dire qualcosa come printf, dammi un numero intero.
E ora la mia seconda linea, come faccio a esprimermi come
che voglio dichiarare una variabile che sta per memorizzare un int?
Letteralmente cosa scrivo se voglio creare una variabile che memorizza un int
diresti?
int un uguale getint.
Certo, in modo che funziona.
E proprio per coerenza con il codice avrete
Vedi on line, mi lascia cambiamento questo x, solo perché x
è un nome di variabile comune utilizzare, almeno in algebra.
Ora vorrei andare avanti e fare printf nuovo.
Dammi un altro numero intero.
E ora ho intenzione di genere di imparare da quel modello,
Io vado a dire int y arriva a getInt.
>> E noi non abbiamo usato GetInt prima, ma solo
come GetString va e ottiene una stringa, come Javier ha fatto da parte del pubblico,
similmente fa GetInt inizia a lampeggiare il prompt.
E efficacemente attesa che l'utente per dare un numero intero, digitando in
e premendo invio.
Ora, infine, ho intenzione di fare questo, printf la somma di--
e mi permetta di ottenere now-- fantasia i cento e cento i è presente
Io punto esclamativo backslash n.
E cosa pensi che ho intenzione di mettere in ora come ingressi aggiuntivi
a printf?
>> Non voglio dire letteralmente tra virgolette x.
Voglio classe in x e allora, e adesso andiamo di fantasia
e diciamo solo assumere possiamo fare quello che vogliamo.
Cosa vuoi dire dopo?
x + y.
E infatti che funzionerà.
E 'minimamente linguaggi di programmazione fare capire l'aritmetica di base,
e quindi questo dovrebbe in realtà lavoro.
>> Quindi lasciami andare avanti e fanno vipera nella mia finestra in bianco e nero
qui, Enter.
Linea Cryptic ma nessun errore messaggio, in modo che è buono.
Dot ridurre drasticamente vipera, dammi un intero, 1.
Dammi un altro numero intero, 2.
La somma di 1 e 2 è 3.
>> Va bene, quindi una bella banale programma, ma che cosa è fatto?
E 'mi ha permesso di utilizzare una funzione chiamare qui, richiamare un'altra funzione qui,
due chiamate a GetInt, un chiamata di terzo a printf,
e quindi utilizzando questi segnaposto.
Quindi è un po 'più sofisticato rispetto l'ultima volta.
Ma cosa succede se voglio ottenere un po 'di fantasia?
>> Lasciami andare avanti e ora faccio questo.
Lasciami andare avanti e creare un nuovo file denominato condizioni zero.
E ho intenzione di risparmiare po 'di tempo per amor classi
e semplicemente incollare in quella codice come punto di partenza.
E ora sto solo andando a mettere qualcosa di nuovo qui in mezzo.
Così printf mi piacerebbe un numero intero per favore.
E tutto questo codice è disponibile sul sito web del corso,
non è necessario digitare tutto fuori in classe, se si preferisce non.
int, e ora ho intenzione di utilizzare, al posto di x ed y,
Ho intenzione di utilizzare n, che è probabilmente il nome più comune
per un numero intero in un programma per computer.
Ed ora voglio fare un poco giudizio qui.
Vado a vedere se n è maggiore di 0, allora
Io vado a dire whoops printf--, printf-- hai scelto un numero positivo,
punto esclamativo backslash n.
Chiudere tale.
Altrimenti ho intenzione di stampare printf hai scelto un numero negativo.
>> Ora, prima di urlare contro di me, corriamo questo programma.
Lasciami andare qui.
E come faccio a compilare un programma chiamato condizioni dash 0?
Rendere condizioni dash 0.
Tipo di un nome stupido, ma-- dannazione.
OK, buon momento di insegnamento.
Perché che rompere?
>> Che cosa ho accidentalmente chiamo questo file?
È possibile tipo di inferire dalla scheda qui.
Quindi non è male che ho fatto questo, perché questo
accadrà forse per alcuni di voi.
Così ho chiamato per sbaglio il mio codice sorgente condizione di 0.
Ma il mio codice sorgente per convenzione dovrebbe essere in un file chiamato condizione di 0 dash C,
o qualunque dot c.
>> Quindi, mi permetta di risolvere il problema.
Proprio come Microsoft Word posso salire Salva con nome e fare condizione 0 punti c.
Ora, giusto per essere in ordine sono intenzione di andare avanti e rimuovere
condizione di 0, che è stato il mio vecchia versione.
E ora facciamo fare condizione 0, Enter.
OK, sembra buono.
>> Condizione 0, Enter.
Mi piacerebbe un numero intero per favore, 50, hai scelto un numero positivo.
Ora, come su negativo 50?
Hai scelto un numero negativo.
Che ne dite ora, 0.
Abbastanza sicuro 0 non è negativo.
>> Quindi questo è una specie di bug logico.
Come posso risolvere questo?
Altrimenti se n è minore di 0, fare questo, altrimenti possiamo avere una filiale a tre vie qui,
printf hai scelto 0.
Così ora, se mi esegue nuovamente questo programma, dopo la compilazione
di nuovo con make, e ora rieseguire condizione 0, quello che ci vediamo qui
è 0 mi dà che in uscita.
Allora, dove stiamo andando con questo?
>> Beh, è ​​molto facile perdere di vista della foresta per gli alberi.
E così ci permettono di concludere con questo video 2 e 1/2 minuto
che in ultima analisi è un po ' di un annuncio da parte di Google,
ma che è davvero testamento ciò anche utilizzando questi edifici di base
blocchi in ultima analisi, possiamo fare una volta abbiamo un po 'di programmazione
savvy sotto le nostre cinture.
>> [GIOCO MUSICA]
>> SAROO BRIERLEY (commento): E 'stato 26 anni fa,
e stavo per girare 5.
Siamo arrivati ​​alla stazione ferroviaria e ci siamo imbarcati il ​​nostro treno insieme.
Mio fratello ha appena detto io rimango qui, e io tornerò.
E ho pensato, beh sai, Potrei anche semplicemente andare a dormire
e lui appena mi sveglio.
E quando mi sono svegliato la prossima giorno, l'intera carrozza
era vuoto su un treno in corsa, un fantasma treno mi prendere non so dove.
>> Sono stata adottata fuori in Australia, ad una famiglia australiana.
E la mamma aveva decorato la mia camera con la mappa di India,
che ha messo accanto al mio letto.
Mi sono svegliato ogni mattina visto che la mappa, e quindi
è una sorta di mantenuto vivo il ricordo.
La gente diceva, sei cercando di trovare un ago
in un pagliaio, Saroo vi troverete mai.
>> Avrei lampo dei posti che ho usato per andare, i flash della mia famiglia
facce.
C'era l'immagine di mia madre, seduto con le gambe incrociate,
solo a guardare il suo grido.
La vita è così difficile.
Quello era il mio tesoro.
E stavo guardando Google Map e realizzato c'è Google Earth pure.
In un mondo dove si poteva ingrandire, Ho iniziato ad avere tutti questi pensieri
e quali possibilità che questo potrebbe fare per me.
Mi sono detto, sai, hai ottenuto tutti quei ricordi fotografici
e punti di riferimento da dove vieni, e si sa che cosa la città assomiglia.
Questo potrebbe essere un programma che è possibile utilizzare per trovare la via del ritorno.
>> Ho pensato, bene metterò un puntino sulla stazione ferroviaria Calcutta,
e una linea di raggio, si sa, che si dovrebbe essere alla ricerca intorno a questa zona.
Mi sono imbattuto in una sorta di questi binari del treno.
E ho cominciato a seguirlo, e Sono venuto a una stazione ferroviaria che
riflette la stessa immagine che era nei miei ricordi.
Tutto abbinato.
Ho solo pensato che sì, io sapere dove sto andando.
Sto solo andando a lasciare che il mappa che ho nella mia testa
mi portano e mi torna alla mia città natale.
>> Sono arrivato alla soglia di la casa che sono nato.
E abbiamo girato circa 15 metri dietro l'angolo,
c'era tre donne in piedi esterno, adiacente all'altro.
E quella di mezzo si fece avanti, e Ho solo pensato, questa è tua madre.
Venne avanti, mi ha abbracciato, e eravamo lì per circa cinque minuti.
>> Afferrò la mia mano e mi ha portato a casa
e ottenuto al telefono, dove si suonò mia sorella e mio fratello
per dire che, si sa, tuo fratello ha appena
tutto all'improvviso è apparso come un fantasma.
E poi la famiglia si riunì di nuovo.
Tutto ciò che va tutto bene, Ho aiutato mia madre,
lei non ha bisogno di essere sgobbare.
Si può vivere il resto della sua vita in pace.
>> E 'stato un ago in un pagliaio, ma l'ago era lì.
Tutto è lì.
Tutto ciò che abbiamo nel mondo è al tocco di un pulsante.
Ma hai avuto modo di avere la volontà e la determinazione a volerlo.
>> [GIOCO MUSICA]
DAVID MALAN: Meravigliosamente dolce testimonial
a poco ciò che si può ora che fare con la tecnologia.
Vedremo la prossima settimana.