>> 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.
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?
>> 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.