JASON HIRSCHHORN: Benvenuti CS50 sezione, tutti. Il mio nome è Jason Hirschhorn. Sono un sacco di TF tuo, ma un sacco di la gente si spera ci uniranno on-line, gli studenti di estensione o studenti cercando di guardare attraverso la sezione se perdere la loro sezione che settimana o solo recuperare se volevano di rivedere alcuni materiali. Così come per il piano di studi, che tutti di aver letto, correggere? Vedo un sacco di cenni della testa. Le sezioni forniscono opportunità per esplorare il corso del materiale in un ambiente più intimo, così come immergersi in attività pratiche. Ecco, questo è fondamentalmente ciò che siamo intenzione di fare ogni settimana. Stiamo per passare attraverso ciò che abbiamo determinato essere il più importante argomenti trattati nella lezione, e quelli probabilmente anche più utile e più probabilità di venire sul set problema e in quiz, e nella vostra codifica vita al di fuori del CS50. Quindi stiamo per entrare in questi argomenti, discuterli, andare su di loro, rispondere alle domande che voi ragazzi avete, e allora stiamo andando a fare un sacco di problemi di pratica in codifica. È tutto portato i computer portatili, il che è fantastico. Questa è una classe di informatica. Tuttavia, un sacco di esercizi che facciamo, non avrete bisogno per il vostro laptop. Si può fare su un foglio di carta. Ecco come si sta andando a fare loro il quiz. E in effetti, questo è un ottimo modo per davvero sapere che il modo di fare qualcosa se non si dispone di check 50 a contare su O Fai fare affidamento su, dicendo hai fatto errori. Quindi siete invitati a codice sulla dell'apparecchio o run.cs50.net, che è un altro strumento che consente di codificare on-line, ma anche io lo consiglio, se non l'hai provato, utilizzando un foglio di di carta e cercando queste pratiche problemi su un foglio di carta. Perché ancora una volta, che è in ultima analisi, ciò che si sta andando ad essere chiesto di fare il quiz. Quindi partiamo con la nostra agenda per oggi. Stiamo per andare oltre alcune norme per nostra sezione, allora stiamo andando a tuffarsi in array, funzioni e linea di comando argomenti, che è ciò che voi ragazzi hanno coperto la scorsa settimana in conferenza e poi Lunedi, e che cosa si parlerà più di domani. E poi finalmente, stiamo andando per parlare di PSet2. Se potessi avere una alzata di mano, se si Non ho guardato il problema insieme a due specifica. Diremo tutti. Fantastico. Parleremo set problema in un po ', ma se leggete il problema insieme specificazione, che è tutto quello che devi fare. Se si legge che prima di arrivare a classe e sezione il Martedì, si essere una grande posizione. Siamo in grado di passare attraverso il problema insieme, che è quello che stiamo andando a fare alla fine. Stiamo per passare attraverso la logica, assicurarsi tutti sono sulla stessa pagina. Io voglio che tu sia in grado di lasciare Martedì sentirsi molto bene con quello che si bisogno di fare per questa settimana problema insieme, e se non lo fai, lo farò volentieri rimanere dopo e lavorare con voi. Ma questa è una cosa che si deve faccio, ma penso che sarebbe davvero intelligente, solo per leggere il problema proposto specifica per classe il Martedì, che suona come un molti di voi l'ha fatto. Comincerò con un ordine del giorno di ogni classe in modo da sapere dove stiamo andando. Questo è utile anche per le persone che guardano online perché ogni sezione è un codice colore, quindi se volete venire indietro e guardare 10 minuti piuttosto che l'intera sezione di 90 minuti, è può solo andare alla sezione codice colore e guardare quella parte. Così ho cercato di dividerli in bella moduli che vi permetterà di - se si vuole tornare indietro e rivedere, o di altri studenti che sono solo guardando una sezione di rivedere - di trovare la cosa specifica che vuole prestare attenzione a e saperne di più. Dolce. Norme. Sono un leader FOP nel campus. Non so se qualcuno ha fatto la FOP. Qualcuno do FOP? Una persona ha fatto la FOP. Due persone hanno fatto la FOP. Impressionante. Così FOP è il primo anno Outdoor Programma di Orientamento. Prendiamo matricole nel bosco e facciamo più magiche esperienze di loro vita, giusto? Già. Sembra giusto. Così ho voluto iniziare il nostro primo sezione attraverso la discussione di alcune norme per la classe e il nostro rapporto perché penso che sono molto importanti. In primo luogo, come quelli di voi che sono la mia sezione hanno ricevuto e è stato discusso in tale e-mail, mi piace questo. Questa è la mia parte preferita dell'anno. Sono stato così felice. Sono qui da ore di oggi. Non ho lasciato questo edificio se non per andare a mangiare perché amo sezione CS50, ho amo insegnare, mi piace lavorare con voi ragazzi. Una delle mie più alte priorità, se non il mio priorità numero uno, non solo questa classe, ma anche la mia altra classi e extracurriculari, è quello di sostenere voi ragazzi, e aiutare voi ragazzi, e fare del mio meglio per fare in modo che si ragazzi hanno un meraviglioso, divertente, produttivo, coinvolgente, emozionante sperimentare in questa classe. Questo è quello che mi impegno a. E 'per questo che amo fare questo. Questo è il mio numero di una cosa, sostenendo voi ragazzi. Se avete domande su lezione, il problema insieme, sezione, vita, anche se si vuole parlare di vita, non esitate a entrare in contatto prego. Hai il mio numero di cellulare, avete la mia email indirizzo, hai il mio Gchat. Potete contattarmi in qualsiasi o tutti quelli che ogni volta, ma probabilmente non sarà possibile ottenere una risposta ogni volta. Cerco di tornare entro 24 ore. Spesso sarà all'interno 20 minuti o 24 minuti. Avrei dovuto dire che per renderlo parallelo. Ma si otterrà una risposta abbastanza rapidamente. Se mi testo un'ora prima della problema insieme è dovuto, io vi calma verso il basso e fare esercizi di respirazione profonda con voi, ma se non hai iniziato, probabilmente non state andando a finire, e Non posso davvero aiutare là fuori anche se farò del mio meglio. Quindi farò tutto Posso a sostenervi. Non esitate a raggiungere se è nella sezione di nuovo, in orari d'ufficio se mi vedete, o anche al di fuori. Sono felice di creare un momento di incontro e di lavoro attraverso i problemi con o andare oltre materiale. In modo che è il numero uno, il sostegno. Farò tutto quello che mi grado di sostenere voi. Numero due, incontro nel mezzo. Per quanto mi piacerebbe essere, io sono non è onnipotente o onnipotente o onnisciente, quindi non so tutte le tempo se quello che sto facendo è sempre tutto, se il modo in cui sto insegnando l' argomento ti aiuta a imparare, o se si sono confuso su un argomento, ma non alzi la mano o chiedere a me o mandarmi una mail. O anche se, ancora una volta, sono confusi di qualcosa sul problema insieme. Se non si arriva a me, Non posso saperlo per certo. Ho intenzione di fare del mio meglio per il check-in su voi ragazzi, assicurarsi che tutto è va bene, cercare di insegnare le cose in un modo che sarà favorevole alla maggior parte delle gli stili di apprendimento, ma se c'è qualcosa che posso fare, me lo faccia sapere. Lungo queste linee, se si vuole un po 'di aiuto con il problema insieme, io sono più che felice di aiutarvi con il problema proposto. Stiamo andando a fare un sacco di che verso la seconda metà di questa sezione. Ma se non avete letto il problema insiemi indietro e non hanno guardato la passeggiata attraverso e non hanno guardato i pantaloncini e in attesa che ti insegni tutto ciò che è stato videoregistrato in linea o che si possono trovare a CS50 studio, che non è proprio giusto me o ad altri tuoi coetanei. Quindi, per favore, io sono più che felice di aiutarvi voi, ma voi ragazzi avuto modo di incontrarmi in mezzo. Abbiamo tonnellate di risorse per è disponibile sul CS50. Ho detto alcuni di loro. Si prega di approfittare di loro. Se siete confusi, io sono più che felice per aiutarvi a spiegare in un altro modo, ma non è giusto se studenti di presentarsi nelle ore di ufficio, non hanno iniziato a niente, ed è Giovedi notte e si aspettano il TF a camminare attraverso ogni singola cosa per il problema dovuto impostata a mezzogiorno del giorno successivo. Ha senso? Anche in questo caso, vi preghiamo di incontrarsi a metà. E, infine, grandi aspettative. Ho intenzione di essere di classificazione tutti chi è nella mia sezione, o segnando il tuo set di problema. Non hai tornato problema impostare zero o uno ancora. Siamo dispiace. Ci è voluto un po 'per poi stabilirsi sezioni, e ora possiamo iniziare classificazione. Prendo di nuovo a voi appena possibile. Questi sono alcuni dei miei advisees là fuori. Prendo di nuovo a voi appena possibile. E per il problema insieme due, saremo in programmare e inizieremo inducendole a voi abbastanza rapidamente dopo si gira li dentro Quando ottenete il vostro problema arretrato, è otterrà punteggi, come sapete da leggendo il programma - la correttezza, progettazione, la portata, e lo stile punteggi. Avrete anche i commenti. I commenti sono più importanti che i punteggi. Penso che sia giusto dire che. I punteggi sono solo un numero da uno a cinque. E 'difficile leggere in quelle. E 'difficile migliorare da quelli. Ma i commenti saranno sottolineare specifico cose che hai fatto bene o aree si può migliorare e dare un po 'di idee per il futuro o alternative modi di fare le cose. Quindi, per favore, per favore, si prega di leggere attraverso i commenti. Ho messo un sacco di tempo in tali osservazioni. Si prega di leggere attraverso di loro e non solo scorrere fino alla parte inferiore della PDF, cercare il tuo punteggio, o andare online e trovare il tuo punteggio, e quindi ignorare i commenti. Non è così che si è andare a stare meglio. Non è così che si sta andando ad aumentare i tuoi punteggi in definitiva, solo guardando i punteggi. Si prega di guardare a quei commenti. E lungo la linea di grandi aspettative, ancora una volta, come ho detto, è può essere segnato da uno a cinque. Gruppi di due, tre, o quattro sono il stragrande maggioranza dei punteggi si sta andando ad essere sempre. Ones e cinque sono entrambi davvero raro. Ci sono sempre cose possiamo fare di meglio. Ogni volta che il codice di un programma, non c'è sempre qualcosa che mi avrebbe potuto fare di meglio. Quindi, piuttosto che dire che si ottiene un cinque tutto il tempo su tutto e ha fatto tutto perfetto, non credo che qualsiasi di noi veramente crediamo - o speriamo, noi non facciamo tutto perfezionare tutto il tempo. Quindi non essere preoccupato se si non ha ottenuto un cinque. A cinque non mappa su una A, una quattro non mappare su una B, una tre fa non mappa sui C. Questo non come funzionano i punteggi. Come David ha detto molte volte, a fine del semestre tutti i tuoi punteggi e Ingresso da me, il tuo TF, si incontrano e determinare un voto finale per voi. Ma ancora una volta, non cinque, A, quattro, B, eccetera. Quindi ho intenzione di avere grandi aspettative per voi ragazzi. Ho intenzione di aspettare buona problema set e ho intenzione di dare un feedback in quanto tale. E non sta a significare che sei intenzione di ottenere un grado di peggio. Si sono classificati in termini di i progressi di settimana zero per fine del corso. E, infine, in termini di elevata aspettative in classe, mi piace quando persone partecipano. Capisco alcune persone si sentono più o meno confortevole partecipanti. Altre persone stanno partecipando non alzando la mano e a parlare per tutto il tempo. Ma noi in questa classe stiamo per essere facendo un sacco di piccoli problemi, un sacco di mini domande, e poi alcuni grandi problemi di codifica. Quindi sicuramente lavorare questi esercizi fuori quando li facciamo sul computer o su un foglio di carta. Ma io darò anche un po 'di tempo prima qualcuno ha mai di rispondere ad alcune delle domande che mi chiedo. Quindi, perché io vi darò un po 'di tempo per pensarci, perché stiamo andando di fare le cose in partner a volte, Vi aspettano tutti di essere impegnato in qualche modo. E per mancanza di un termine migliore, non ci sarà probabilmente chiamare freddo, che è dove ognuno avrà la possibilità per pensare alla risposta, e poi Mi rivolgo a voi, e poi dirai la risposta. Non preoccupatevi o aver paura di questo. L'ho fatto in passato e che abbiamo trovato che è molto più successo, leggere anche la ricerca educativa su di esso per determinare se si trattava di un buona tattica. E 'molto utile, soprattutto se si dare agli studenti il ​​tempo di pensare alla risposte e non li fanno solo venire fuori e dire che a destra fuori del blocco. Ma se non si sente a proprio agio rispondere, io sono anche abbastanza bravo a intuendo che fuori, e noi non abbiamo intenzione di si mette sul posto, in particolare su la telecamera, anche se nessuno dei si è sulla fotocamera al momento. Quindi queste sono le norme che ho. Una cosa di più lungo le linee di incontrare nel mezzo. Ho intenzione di dare a voi ragazzi un sacco di feedback. Per favore mi dia le risposte pure. C'è un sito web, sayat.me/cs50. Quindi è un feedback onesto. Se si vuole dare in sezione, Ricevo una mail ogni volta che succede. Faremo una pausa in un po ', quindi mi guardare attraverso il feedback poi. Se avete tutte le risposte, Si prega di dare a me lì. Se mi dai feedback sulla Q, che è meraviglioso, ma questa è la guida che si fa alla fine. Ma che sarà alla fine del semestre in modo Non sarò in grado di prendere qualsiasi che feedback e trasformarlo in insegnamento voi ragazzi migliori. Quindi, per favore, se avete qualunque feedback, dare a me. Amo feedback. Torna alla FOP, si ottiene un feedback tutto il tempo. Mi puoi dare vantaggi, le cose buone, delta, cose che posso migliorare. Potete commentare il mio outfit. Che non sarà così utile, ma sei benvenuti a commentare ogni e tutto. Si prega, per favore mi dia un feedback. Io apprezzo molto e che significa molto per me. Un'altra norma, divertente. Stiamo per avere un sacco di divertimento. Speriamo che in questo corso, ti hanno un sacco di divertimento. Avremo caramelle a sezione. Avremo musica. Saremo spera conoscersi un altro po 'bene, quindi voglio questo sia un divertimento, un'esperienza coinvolgente. So che alcuni di voi si sono addormentati nel le lezioni che hai avuto prima di oggi, quindi speriamo che non lo farà essere il caso ora. E se è il caso ora, solo non russare perché potrebbe essere catturato dalla macchina fotografica. Dolce. Tutte le domande, commenti, o dubbi prima di passare su tutto ciò che abbiamo parlato? Grande. Quindi stiamo per andare in array primi. Questo è il modo di fare un array. Abbiamo visto questo prima. Si dispone di un tipo di dati, è necessario un nome, quindi si ha una dimensione. Proprio qui, a creare due array. Il primo è un array di caratteri, ed ha 26 posti. Il secondo è un array di colonne sonore, e ha tre spazi per i tre numeri interi. Sì? STUDENTE: Sono tutte queste diapositive disponibile da qualche parte per noi? JASON HIRSCHHORN: Ottima domanda. La domanda era: sono tutti di Queste diapositive disponibile? Sì. Tutte queste diapositive saranno disponibili, e in futuro, io-mail a te prima sezione. Ma oggi, perché questo è il primo settimana, abbiamo avuto una partenza in ritardo. Quindi, di solito, si otterrà queste slide, ma saranno disponibili on-line e Io-mail a voi a destra dopo le lezioni. Tutte le altre domande? Quindi, di nuovo, gli array sono scatole, per mancanza di una parola migliore, che detengono più elementi di uno stesso tipo di dati, e sono una accanto all'altra in memoria. E così ancora una volta, questo è come si può effettuare due tipi di matrici. Così, dopo che hai fatto il tuo array con che la prima linea - punteggi int, staffa tre, vicino staffa - te vuole inizializzare. Vuoi mettere alcuni valori in là. Ed è così che si mettono alcuni valori in lì, basta scegliere l'indice e scrivere il numero. Facciamo disegnare questo sulla scheda. Chiunque può vedere? Tutti possono vedere. Dolce. In modo che sara 'il mio array chiamato punteggi. Come si può vedere, si tratta di tre dimensioni. Ci sono tre scatole in là. Ognuno può andare bene quello che tipo di tipo di dati? STUDENTE: Integer. JASON HIRSCHHORN: un numero intero in questo. Abbiamo scritto punteggi int, e la prima parola è il tipo di dati che sta per andare nelle caselle di tale matrice. Quindi posso montare tre. Perché devo zero fino lì sul bordo? Perché c'è scritto punteggio pari a zero è uguale a 1? Mi ricordano il tuo nome. STUDENTE: Kurt. JASON HIRSCHHORN: Kurt. STUDENTE: Sì.. JASON HIRSCHHORN: Perché? STUDENTE: Perché il primo indice è pari a zero, si parte a contare da zero. JASON HIRSCHHORN: Allora iniziamo contare da zero. E 'esattamente così. Questa è la parte confusa e viaggio di volontà in su, soprattutto quando si è cercando di scorrere gli array, che faremo in un po '. Si comincia a contare da zero. Quindi, se voglio fare riferimento alla prima scatola, non è una scatola. Purtroppo, è scatola zero. La seconda è una scatola, e in questo caso, il terzo è scatola due. Che dire di dialogo a tre? Dove si trova il box tre? Oppure, se voglio fare colonne sonore, staffa tre, chiudere la parentesi, che cos'è? Così si disse il carattere null. Eventuali altri pensieri? Qual è la staffa di segnare tre staffa? STUDENTE: E 'in realtà non esiste, perché si è definito solo come colonne sonore, Staffa tre. JASON HIRSCHHORN: Così si dice che in realtà non esiste. In alcuni casi, quando abbiamo a che fare con corde, generalmente ci metterò un nullo carattere alla fine. Ci arriveremo tra un secondo. Ma in questo caso, ci c'è una terza scatola qui. Quindi l'ultima casella in qualsiasi array è la dimensione meno 1. Quindi, se abbiamo un array di dimensione n, il prima casella è a zero, l'ultimo è al n meno 1. E in questo caso, non esiste. C'è qualcosa qui in memoria, ma non è la nostra. Noi non possediamo. Non abbiamo chiesto per questo. Quindi, se si cerca di accedervi, che faremo fare in un po ', stiamo probabilmente andando a mettersi nei guai. In questo caso, sto inizializzando il mio array con tre variabili. Stiamo mettendo a quello in scatola zero, un due in scatola, e un tre in due box. Qualcuno ha delle domande circa l'inizializzazione di un array? Così siamo andati su questo proprio ora. I punteggi, staffa a tre, vicino staffa, che non esiste. Stiamo a zero indicizzato in informatica, così iniziamo a contare da zero. L'ultima casella disponibile per noi, è la terza casella, ma si chiama dialogo numero due. Giù sotto, questa è un'alternativa modo di inizializzazione array. Così invece di creare l'array in un'unica linea, il riempimento della prima casella, quindi la seconda casella, quindi la terza casella, si può fare tutto in una sola riga. Così in quella linea, entrambe le matrici. Questo crea la stessa esatta della matrice come quello che abbiamo creato proprio qui, ma appena lo fa in una sola riga. Ora che abbiamo creato il nostro array. Di solito una volta che si crea un array, è voglia di fare qualcosa con esso, se che è riempirlo o ottenere le cose fuori di esso e stamparli sullo schermo. In questo caso, stiamo attraversando il nostro array di colonne sonore, che abbiamo inizializzato su la prima linea qui in grigio. E poi sulla seconda riga, si parte scorrendo l'array. Qualcuno ha domande su la struttura di un ciclo for? Quindi questo è il ciclo for. Noi abbiamo la nostra condizione iniziale, e poi nostra condizione finale, e poi ci iterare, i, ogni loop. E nelle parentesi graffe in questo per loop, che cosa succede se dovessi correre questo programma? Qualcuno può dirmi che cosa otterremmo? [? Matu? ?] MATU: Stampa tutti i punteggi su ogni linea. Sarebbe stampare ogni punteggio su una riga separata. JASON HIRSCHHORN: Che cosa esattamente sarebbe stampare? STUDENTE: Sarebbe stampare una, poi due, poi tre. JASON HIRSCHHORN: Esattamente. Sarebbe stampare una, poi due, poi tre, ciascuna su righe separate, perché stiamo attraversando la matrice e ti vedere che secondo la printf istruzione, i punteggi. Così il primo turno attraverso il nostro per ciclo, i è uguale a zero, il che significa che siamo ottenere il valore al punteggio pari a zero - che, se torniamo a il nostro schema, è uno - e compilando - oh, si dice c. Che dovrebbe essere% d. Riparerò che in un po 'quando Io invece che fuori a voi ragazzi. Ma stiamo presentando un numero intero in modo che dovrebbe essere% d proprio qui, non c%. Qual è% c per? STUDENTE: Carattere. JASON HIRSCHHORN: Carattere, esattamente. Qual è l'altro? Se non si vuole fare% d per un numero intero, che altro si può fare? STUDENTE: i. JASON HIRSCHHORN:% i, esattamente. Quindi, tutte le domande circa l'iterazione attraverso l'array? Che cosa succede se facciamo questo? Invece di fare i è inferiore tre, facciamo i è inferiore o uguale a tre. Che cosa succede quando si esegue questo codice? Sì, Annie? STUDENTE: Stanno andando a stampare cose strane sulla quarta linea. JASON HIRSCHHORN: Quindi lei ha detto, è che andando a stampare cose strane sul quarta linea? Qualcuno ha una risposta alla sua domanda? Quindi le probabilità sono che, quando arriviamo al - così il quarto appuntamento con il nostro per loop, proprio come si pensava, Annie, sarà punteggi staffa tre, che abbiamo già capito non Esistiamo, e stiamo andando a provare ed accedere a quella, stamparlo out, usarlo qualche modo. Quindi, il computer sarà probabilmente arrabbiarsi con noi. Hai perfettamente ragione. Potrebbe uscire dal programma del tutto. Si potrebbe stampare qualcosa davvero strano. Non si può dire con certezza. Le probabilità sono che probabilmente otterrete arrabbiato si e appena smesso subito. Ma questo è un errore comune si dovrà dove si è appena fuori da uno a alla fine, e questo è un bug che verrà affliggere voi durante il vostro codice. Un modo che mi piace fare è solo su un whiteboard, passare attraverso ogni iterazione del loop a mano o su carta per vedere cosa sta succedendo, e poi si generalmente realizzare, oh aspetta, non dovrei sono andati a minore o pari a tre. Avrei dovuto fermarmi a due, che è cosa succede se la sua condizione è meno di tre. Tutte le domande finora? Dolce. Quindi, tutti voi avete i computer aperto. Stiamo per darvi 02:58 minuti per scrivere un programma che crea un array con i numeri interi uno attraverso cinque e quindi stampa ogni numero intero su una nuova linea. E se avete domande, alzi la mano. Sono felice di trovare. Come ho detto, diamo tre minuti per scrivere questo. È tutto OK, se vado in un nuova finestra e chiudere questo? Mi dispiace se non hai avuto la possibilità per finire, ma abbiamo intenzione di farlo insieme adesso. Quindi sullo schermo, ho # include cs50.h, # include stdio.h. Qualcuno può dirmi che cosa quelle due righe fanno? Michael? STUDENTE: Essi comprendono le librerie CS50 che ha fatto e che Steve ha salvato per l'uso di rendere la vita più facile. JASON HIRSCHHORN: Così si dice che includere le librerie, uno che CS50 fatto, cs50.h, e uno che è solo di serie, viene fornito con il pacchetto C, stdio.h. Cosa intendi includere le librerie, però? Può essere un po 'più specifico? STUDENTE: Si fa in modo che possiate usare certe parole in codice per avere un funzionare accadere senza dover andare e rendere la funzione c te stesso. JASON HIRSCHHORN: Potete farmi un esempio? STUDENTE: Come printf è quello che si può usare. JASON HIRSCHHORN: printf. Quindi hai detto printf è uno di quelli funzioni in cui invece di dover scrivere printf da soli, printf è incluso effettivamente in stdio.h, in modo da può solo usarlo e assumere che funzionerà. In stdio.h, se hai aperto il file, sarebbe comprendere come printf opere, tutto il codice per printf? Perché stai scuotendo la testa? STUDENTE: Poiché il file di intestazione solo comprende la dichiarazione di funzione. JASON HIRSCHHORN: Esattamente. Il file di intestazione include solo la dichiarazione di funzione. Quindi, in pratica, quando si compila questo, hit Conte, che faremo in un secondo, il compilatore sa che se si usa printf, esiste printf. E 'intenzione di essere definito da qualche parte. Non è un problema per voi di usarlo. E poi in seguito, sarà include il uno e zero che in realtà contengono printf di attuazione e unirle con il codice. Come si fa a verificare che include la uno e zero per, diciamo, ottengono stringa? STUDENTE: Get stringa è in cs50.h. JASON HIRSCHHORN: Giusto. In modo che dice arrivare stringa esiste, la dichiarazione di funzione. Ma poi la uno e zero, il binario file che contiene effettivamente il realizzazione di stringa get? Come si fa a fare in modo che va con il vostro programma? STUDENTE: Passare il linker in l'argomento della riga di comando. JASON HIRSCHHORN: Passare il linker in argomento della riga di comando. Come si fa a farlo? STUDENTE: E 'il-l linea nella clang JASON HIRSCHHORN: Esattamente. Tu dici-l CS50, giusto? Che comprende le uno e zero. Studente: Ma Fai fa che per voi, giusto? JASON HIRSCHHORN: Esattamente. Assicurarsi che fa per voi, ma alla fine, non avrete Fai, o dovrete fare un fare da soli, in modo che un buona cosa da ricordare. Se si dovesse andare ad usare uno di questi altre biblioteche, non solo si ha a scrivere # include e poi la libreria. È inoltre necessario collegarlo dentro E queste due cose sono diverse. -L CS50 è diversa di # include cs50.h. Poi abbiamo int main nulle le parentesi graffe, e ora stiamo andando a codice all'interno principale. La prima linea che ho qui è un commento che dice, creare un array con interi da uno a cinque. Che cosa è una buona parola per descrivere quello che ho avere in questo momento sullo schermo, proprio commenti all'interno principale? Come si chiama questo? STUDENTE: pseudocodice. JASON HIRSCHHORN: pseudocodice. Grazie, Jeffrey. Questo è esattamente giusto. Pseudocodice. Avete visto pseudocodice prima? Alzi la mano se hai utilizzato pseudocodice prima del problema impostato uno. Circa la metà di voi. Mi raccomando usando pseudocodice per abbattere i problemi in più piccolo, più facile da mordere pezzi. Inoltre, se si fa il pseudocodice, è avere i tuoi commenti già ampiamente integrato, in modo da non dover tornare indietro e cercare di capire quello che stavi facendo. Quindi, qualcuno mi può dare questa prima linea per creare un array con interi uno attraverso cinque? Lei? STUDENTE: Int e poi si può chiamare qualunque sia il numero, e poi piazza Staffa di cinque. JASON HIRSCHHORN: numeri in modo int, parentesi quadra cinque. STUDENTE: Equals, e poi tra parentesi graffe. JASON HIRSCHHORN: Uguale, parentesi graffe. STUDENTE: Uno, due, tre, quattro. JASON HIRSCHHORN: Uno, due, tre, quattro, cinque. STUDENTE: E poi tra parentesi graffe e poi virgola. JASON HIRSCHHORN: E riccio bretelle e virgola. Eccellente. Stampate ogni int su una nuova linea. Qualcun altro può dare me quel codice, per favore? [? Matu? ?] Vai avanti. STUDENTE: Per ( JASON HIRSCHHORN: per ( STUDENTE: int i = 0 JASON HIRSCHHORN: int i = 0 STUDENTE: Punto e virgola i meno di cinque. JASON HIRSCHHORN: Punto e virgola, i meno di 5. STUDENTE: Punto e virgola, i + +. JASON HIRSCHHORN: Punto e virgola, i + +. STUDENTE: parentesi chiusa, poi graffa aperta. JASON HIRSCHHORN: parentesi chiuse e due bretelle. All'interno delle parentesi graffe? STUDENTE: E poi printf "% d / n" JASON HIRSCHHORN: Scusa, aspetta. Printf "% d / n, quote chiuso. STUDENTE: E poi preventivo chiuso, virgola, conteggio, staffa i. JASON HIRSCHHORN: Virgola, conteggio, staffa i. STUDENTE: Mi dispiace, numeri staffa i. JASON HIRSCHHORN: Numeri, staffa i. STUDENTE: Mi dispiace. E poi chiuse tra parentesi, virgola. JASON HIRSCHHORN: chiuso tra parentesi, punto e virgola. Io vado a salvare quella. Stiamo andando a fare il conto. E come faccio a eseguire il conto? STUDENTE: Barra rovesciata. STUDENTE: Dot di barra - JASON HIRSCHHORN:. / Conta, esattamente. Grazie. . / Conta. Uno, due, tre, quattro, cinque le nuove linee. Sembra che abbia funzionato. Sì, Noah? STUDENTE: Si potrebbe anche fare a meno di o uguale a quattro, come i è inferiore o uguale a quattro? C'è qualche vantaggio a fare meno di cinque, o solo un modo diverso di scriverlo? JASON HIRSCHHORN: Quindi la domanda è: si avrebbe potuto fare i è inferiore o pari a quattro invece di i è inferiore a cinque. Vorrei che hanno lavorato lo stesso? STUDENTE: Si dovrebbe. JASON HIRSCHHORN: sì. E 'del tutto sarebbe lavorare lo stesso. Stilisticamente, è generalmente inferiore, e vedrete in un secondo momento facciamo le stringhe, è possibile utilizzare qualcosa chiamato strlen, che avete visto prima, per ottenere la lunghezza della stringa. E non si può fare a meno di o uguale strlen. Si potrebbe fare a meno di o eguagliare strlen meno uno. Quindi è solo più bello di fare a meno di strlen. Sì? STUDENTE: E nel vero quiz, fare dobbiamo fornire commenti sul nostro codice come bene? JASON HIRSCHHORN: La domanda è stato a quiz, si fa dovranno fornire commenti? Quindi parleremo di più su quiz quando vengono, ma in generale, un buon regola è ogni volta che sei la scrittura di codice, forniscono commenti. Se si ottiene il codice errato, ma il commento giusto, si potrebbe ottenere un po 'di credito sia da me, se è stato classificando voi su un problema di set o di un quiz. Quindi, i commenti sono sempre buono a fornire. Dolce. Conte. Ottimo lavoro. Andiamo avanti. Stringhe. Stringhe. Abbiamo visto questo prima in conferenza. Questo fatto esplodere la mia mente quando ho primo trovato questo fuori. Probabilmente non soffiare nessuno di mente qui, ma va bene. Le stringhe sono array di caratteri, e finiscono con, come hai detto prima, il terminatore null, che è questo personaggio / 0. Se stiamo andando a disegnare una stringa sul bordo, faremo disegnare sopra qui. Quindi, per quanto tempo è questa stringa? Mi dispiace. Quanto è lunga questa stringa? STUDENTE: [incomprensibile]. JASON HIRSCHHORN: Quattro? Perché è quattro? STUDENTE: Perché il quinto posto è per il carattere null. JASON HIRSCHHORN: Così il quinto posto è per il carattere null. Quindi, se dovessi correre strlen su questo, sarebbe darmi quattro. Correggere. E la matrice, però, se dovessi inizializzare questo array, come molti spazi dovrei chiedere? STUDENTE: Cinque. JASON HIRSCHHORN: Cinque. Avrei dovuto chiedere a cinque, ma posso solo mettere quattro personaggi in qui perché ho bisogno di mettere che nulla terminatore all'estremità. Quindi stiamo andando a scrivere in "ohai" e mettere il terminatore null in alla fine. Diremo questo è stringa s è uguale a questo. Che cosa è s staffa a zero? s staffa a zero, Annie? STUDENTE: O. JASON HIRSCHHORN: O, esattamente. s Staffa uno? s staffa cinque? s staffa cinque? STUDENTE: Non esiste. JASON HIRSCHHORN: Non esiste. Esattamente. Freddo. Tutte le domande circa la comprensione stringhe come array di caratteri? OK, allora. Un altro programma per voi ragazzi. Scrivere un programma che chiede all'utente per una stringa quindi stampa ogni carattere su una nuova linea. Così diamo tre minuti per scrivere questo programma, e poi ci si codificare come gruppo. Mi dispiace. Hai bisogno di vedere questo? STUDENTE: No. JASON HIRSCHHORN: OK. Prendiamo ancora un minuto per codificare questo, o almeno iniziare su di esso. Così si può continuare a lavorare, ma ho intenzione per iniziare a passare attraverso di essa. Così come prima, ho sullo schermo # Include cs50.h, # include stdio.h. int void main. All'interno del principale parentesi graffe, ho due commenti, pseudocodice. Uno è chiedere una stringa dall'utente. La seconda è stampare ogni carattere su una nuova linea. Così Anna, potete darmi chiedo per una stringa dall'utente? STUDENTE: printf. JASON HIRSCHHORN: printf? STUDENTE: Sì.. ( JASON HIRSCHHORN: ( STUDENTE: "Dammi una stringa. JASON HIRSCHHORN: "dare me una str - oops - stringa. STUDENTE: / n ") punto e virgola. JASON HIRSCHHORN: Terminare la stringa, parentesi chiusa, punto e virgola. STUDENTE: Sì.. E poi la linea successiva, stringa s = ottenere stringa. JASON HIRSCHHORN: String s = ottenere stringa. STUDENTE: Sì.. E poi () JASON HIRSCHHORN: () STUDENTE: Punto e virgola. JASON HIRSCHHORN: Punto e virgola. Fantastico. Quindi ho intenzione di prendere una stringa e Io vado a salvarlo in che cosa? Qual è la variabile chiamata che si è creato? STUDENTE: String s. JASON HIRSCHHORN: la variabile si chiama s. E 'tipo string. Esattamente. La prossima cosa che vogliamo è stampare ogni carattere su una nuova linea. Chi mi può dare quel codice? [Incomprensibile]? Puoi dare a me? STUDENTE: Certo. JASON HIRSCHHORN: Cerchiamo di farlo. E mi dispiace. Non mi piace ripetere quello che dici perché sei sempre nel modo giusto, ma io ripetere in modo che quando essi trascrivere questo, possono ottenere tutto il fuori testo sul trascrizioni. Così si può semplicemente continuare a parlare. Purtroppo, non ho a dirlo su di voi. Mi dispiace, ma - STUDENTE: Questo va bene. Per int i = 0 JASON HIRSCHHORN: per int i = 0 Studente: meno di - JASON HIRSCHHORN: Punto e virgola. STUDENTE: Prima di questo, possiamo mettere un variabile in modo da ottenere int lunghezza del nome? JASON HIRSCHHORN: Oh, non è necessario vuole mettere il punto e virgola? OK. Quindi, che cosa vuoi fare dopo lo zero? STUDENTE: Voglio ottenere il lunghezza della stringa di s e set che a una variabile? JASON HIRSCHHORN: OK, Allora, come faccio a farlo? Studente: Così si fa int lunghezza = JASON HIRSCHHORN: int lunghezza = STUDENTE: S-T-R-L-E-N. JASON HIRSCHHORN: S-T-R-L-E-N - STUDENTE: Di s. Parentesi. JASON HIRSCHHORN: (s). STUDENTE: E poi io penso che si debba mettere un punto e virgola tra i due int. JASON HIRSCHHORN: un punto e virgola dopo lo zero? STUDENTE: Già. Poi mettere un punto e virgola dopo, e che dici, io meno di lunghezza. i meno di lunghezza, che è la variabile. STUDENTE: E poi punto e virgola. JASON HIRSCHHORN: Punto e virgola. STUDENTE: i + +. JASON HIRSCHHORN: i + +. Ecco il nostro ciclo per. OK, all'interno del ciclo for. STUDENTE: E allora che fare printf. JASON HIRSCHHORN: printf. STUDENTE: staffe. JASON HIRSCHHORN: parentesi, virgolette. STUDENTE: parentesi, virgolette,% c / n. JASON HIRSCHHORN:% c, OK. STUDENTE: / n. JASON HIRSCHHORN: / n. STUDENTE: citazioni chiusi. JASON HIRSCHHORN: virgolette chiuse. STUDENTE: Virgola. JASON HIRSCHHORN: Virgola. STUDENTE: S. JASON HIRSCHHORN: S. STUDENTE: Staffa i. JASON HIRSCHHORN: Staffa i. STUDENTE: E tra parentesi poi chiusi. JASON HIRSCHHORN: parentesi chiusa. STUDENTE: E poi punto e virgola. JASON HIRSCHHORN: Punto e virgola. Fantastico. Quindi salviamo questo. Fai incantesimo. Oh boy. Ho un paio di errori. Primo errore sulla linea 11, si dice, atteso espressione, e sta dando me un errore che la seconda int, c'è l'errore. C'è qualche errore lì intorno. Qualcuno sa che cosa errore? Kurt? STUDENTE: Io penso che si suppone essere una virgola e non un punto e virgola. JASON HIRSCHHORN: OK, una virgola invece di una virgola. Quindi è che tutti abbiamo bisogno di risolvere? STUDENTE: No. JASON HIRSCHHORN: Cos'altro abbiamo bisogno di risolvere? STUDENTE: Dobbiamo includere string.h. JASON HIRSCHHORN: Includi string.h. Dove devo includere questo? STUDENTE: Stesso luogo che stai compreso l'altra roba, giusto dopo includere stdio.h. JASON HIRSCHHORN: Vediamo se questo viene eseguito in primo luogo perché in genere, mi piace di fissare una cosa prima, e poi eseguire , e poi vedere gli errori che otteniamo. Quindi stiamo andando a cancellare il terminale con regolazione n, facciamolo fare magia. Così un altro errore sulla linea 11. Previsto virgola. E sto ancora ricevendo errori su questa linea. Quindi non mi ha dato un errore dicendo che non capisce cosa strlen è, ma mi sta dando errori su questa linea, in modo che altro è sbagliato? Mark? Marcus. STUDENTE: Avete per rimuovere la seconda dichiarazione di int? JASON HIRSCHHORN: Rimuovere il secondo int. Proviamo questo. Ora pulire il terminale. Fai incantesimo. Errore. Dichiarando implicitamente biblioteca funzione strlen. Così ora noi vediamo che errore. Di cosa abbiamo bisogno di includere? STUDENTE: string.h. JASON HIRSCHHORN: Includi string.h, Faremo # include string.h in cima dello schermo. Salviamo, fanno incantesimo. Ora compilato. Quindi, di nuovo, le cose che dovevamo ricordare linea 12 nel nostro ciclo per quando stiamo sua creazione, int i = 0, lunghezza = strlen (s). Questa è una strategia fantastica. Lo stile di questo è grande, il progettazione di questo è grande. Siamo in grado di andare in quelle ragioni più tardi, ma in questo modo è sufficiente chiamare strlen volta invece che ogni singola volta che si esegue attraverso il ciclo. Tuttavia, è necessario utilizzare una virgola lì e non avete bisogno di nuovo int. Se stai dichiarando sia quelli variabili insieme, è non hanno bisogno di nuovo int. E allora, se avete intenzione di usare strlen, che è un'altra libreria funzione non inclusa nel stdio.h o cs50.h, rendono Assicurati di includere string.h. Kurt? STUDENTE: Allora, se non c'è bisogno di dire che cosa lunghezza tipo è, vuol significa che deve essere un int? Non si potrebbe avere due diversi Tipi di là? JASON HIRSCHHORN: Quindi si potrebbe avere due tipi diversi. La lunghezza è un int qui, però. La lunghezza è un int, perché è da virgole e poi la stessa cosa. STUDENTE: Quindi si presuppone che sta andando essere lo stesso come il primo? JASON HIRSCHHORN: Esattamente. Non abbiamo intenzione di farlo adesso, ma si può includere due variabili sul stessa linea utilizzando un tipo di dati. Così int x, y creerebbero due variabili. Così int x, y, se facciamo che, dà me una x variabile inutilizzata e y perché noi non li usiamo. Quindi, mettendo vuoto prima è solo un trucco di fantasia, se non si utilizza qualcosa, di usarlo. Ma, come si vede, creo x e y sulla stessa linea con una virgola. E 'la creazione di due numeri interi proprio lì. Quindi sì, del tutto possibile creare due cose sulla stessa linea separati da una virgola. Liberiamoci di questi, però. Quindi non c'è incantesimo. Grazie ragazzi per la codifica che per noi. Facciamo ancora una volta, eseguirlo. Dammi una stringa. [Incomprensibile], avete fatto la maggior parte di esso. Qual è la stringa? STUDENTE: Ciao. JASON HIRSCHHORN: Ciao. H-E-L-L-O, ogni carattere in una riga. Sembra grande. Corriamo ancora. Sempre andando a controllare per i casi d'angolo. Che cosa è un buon caso angolo di controllare? STUDENTE: Un numero? JASON HIRSCHHORN: un numero. Così mi metto a 1, ed esso stampa 1. Non è richiesto per le lettere, in modo da sembra che i numeri di lavoro. Buona caso angolo di controllare. Qual è un altro buon angolo caso di controllare? STUDENTE: Una stringa vuota. JASON HIRSCHHORN: Hm? STUDENTE: Come una stringa vuota. JASON HIRSCHHORN: stringa vuota. Quindi cerchiamo di non mettere nel nulla. E che cosa viene stampato? STUDENTE: Niente. JASON HIRSCHHORN: Niente. Sembra come funziona. Si potrebbe provare più casi d'angolo, ma in generale i numeri, la scheda è diversa grande per provare, così non è nulla. Niente, zero, negativi sono sempre grandi cose da provare e le cose si dovrebbero prova, le cose certamente si faranno testare per e visualizzate 50 proverà per. Tutte le domande circa spell.c? OK, andiamo a testa indietro. Ho un altro programma per voi ragazzi a scrivere. Si chiama students.c. Questo è un programma che chiede all'utente di cinque nomi, poi sceglie in modo casuale e stampa fuori uno dei nomi. Questo programma è un po 'più coinvolti oltre gli ultimi due che abbiamo scritto, quindi perché non prendiamo cinque minuti per codificarla individualmente, e poi ci codificarlo come gruppo. Questo programma coinvolge anche alcune cose forse non avete mai visto prima, quindi se hai una domanda su come fare Lo faccio, alzi la mano. Verrò e indicarvi nella giusta direzione. Ma stiamo anche facendo perché questo sarà un buon modo per introdurre un po 'di argomenti che sono difficili. Così funziona, giusto? STUDENTE: Già. JASON HIRSCHHORN: Ogni volta che si accende in un problema set, c'è molti modi per farlo , ma alcuni sono più elegante di altri. Cerchiamo di tuffarsi dentro # Include cs50.h. # Include stdio.h. int void main, le parentesi graffe. All'interno delle parentesi graffe, Ho due osservazioni. Il primo è, chiedere al utente per cinque nomi. Il secondo è, sceglie in modo casuale e stampare uno dei nomi. Quindi cerchiamo di fare il primo, chiedere l'utente per cinque nomi. Chi ha chiesto l'utente per cinque nomi e può dirmi come fare? Solo due persone hanno fatto la prima parte. Tre persone hanno fatto la prima parte. Quattro, cinque. Tom, come si fa a farlo? STUDENTE: Si potrebbe dichiarare una stringa e poi il nome, staffa di cinque. JASON HIRSCHHORN: String nome staffa cinque. Così che cosa è questa linea facendo, Nome stringa staffa cinque? STUDENTE: Si potrebbe dichiarare un array di stringhe. JASON HIRSCHHORN: Questo è un array di stringhe. Quante stringhe stanno per entrare qui? STUDENTE: Cinque. JASON HIRSCHHORN: Cinque. Eccellente. Stiamo andando a chiamarlo nomi perché stiamo andando a prendere quelli multipli. OK, la prossima? STUDENTE: E poi si avere un ciclo for - JASON HIRSCHHORN: ciclo For. STUDENTE: - per i = 0. JASON HIRSCHHORN: for (int i = 0. STUDENTE: Punto e virgola. JASON HIRSCHHORN: Punto e virgola. Studente: inferiore a cinque. JASON HIRSCHHORN: ho meno di cinque. STUDENTE: Punto e virgola. JASON HIRSCHHORN: Punto e virgola. STUDENTE: i + +. JASON HIRSCHHORN: i + +. STUDENTE: E tra parentesi poi chiusi. JASON HIRSCHHORN: parentesi chiusa, e poi alcune parentesi graffe. All'interno delle parentesi graffe? STUDENTE: E poi printf. JASON HIRSCHHORN: printf. STUDENTE: aperte parentesi, il nome% d. JASON HIRSCHHORN: Scusa? STUDENTE: Nome. JASON HIRSCHHORN: Nome. STUDENTE: E poi spazio, quindi% d. JASON HIRSCHHORN: Nome, spazio,% d. STUDENTE: E poi / n, e poi chiuso. JASON HIRSCHHORN: nome Quindi, spazio, % D / n, parentesi chiuse. STUDENTE: Virgola, i + 1. Mi dispiace. Citazione chiuso, e poi virgola, i +1. JASON HIRSCHHORN: chiuso citazione, virgola, i +1. STUDENTE: Sì.. E poi la prossima linea - JASON HIRSCHHORN: i + 1. STUDENTE: Sì.. E poi la prossima diapositiva È nomi staffa i. JASON HIRSCHHORN: linea Avanti È nomi staffa i. STUDENTE: = ottenere stringa. JASON HIRSCHHORN: = Get - capitale G-E-T - stringa. Ops, scusate. STUDENTE: aperti, chiusi tra parentesi e poi - JASON HIRSCHHORN: aperta, chiusa parentesi. STUDENTE: Punto e virgola. JASON HIRSCHHORN: Punto e virgola. OK, si inizializza la matrice di stringhe, nomi, e poi passare attraverso un per il ciclo, e cinque volte stampare alcuni chiederà all'utente e quindi memorizzare cinque corde. Qualcuno ha rettifiche di valore su questo? Tom, penso che tutti d'accordo con te. Sembra piuttosto buono. OK. Perché l'hai fatto i +1, però? STUDENTE: Voglio dire, non ha di essere, ma i +1 in modo che sia nome uno per citarne cinque. In caso contrario, sarebbe il nome zero a nominare quattro. JASON HIRSCHHORN: Così ha fatto i +1 perché altrimenti avrebbe stampati zero a quattro perché è così che i computer pensano, ma gli esseri umani in realtà non leggere così. Questa è un'altra cosa si incontrano. A volte, quando si stampa qualcosa per l'utente, ti consigliamo di farne una po 'più carina, e facendo i +1 in questo caso è un modo per renderlo più bello. Vedo anche cinque volte, string nome è cinque, i è inferiore a cinque. Io so dove hai preso il cinque. Hai capito da me dicendo ti cinque nomi. Ma se volessimo rendere il codice un po 'più robusto, una cosa siamo potrebbe fare è qui fuori, al di fuori di int, potremmo fare qualcosa di simile, # Define, e potremmo fare NOMI 5. Quindi, in pratica, ovunque io scrivo capitale N, maiuscola, M maiuscola, maiuscola, S maiuscola, quella stringa, sostituirà che con 5 nel codice. O facciamo solo chiamare - faremo basta chiamare il NUMERO. Così sto definendo tutti i tappi Numero da 5. Così ora, ovunque ho il numero 5, I può sostituirlo con tutte le protezioni NUMERO. E ora, se voglio cambiare il numero di nomi, tutto quello che devo fare è questa linea, la linea a quattro, dove ho # Define numero 5, cambiare la situazione a 10, o cambiare la situazione di 4. Quando il codice diventa più lungo, non sei andando a ricordare tutti i luoghi che mettete quanti nomi si voleva, e in modo per voi di non perdere uno, questo è un buon modo per farlo, di trovare qualcosa fino in alto e poi basta usare quella frase ovunque in tutto il codice. Marcus? STUDENTE: È che stilisticamente preferito che definire globalmente un costanti n? JASON HIRSCHHORN: Quindi è che stilisticamente preferito che a livello globale definire una costante n? Quindi stai dicendo che si poteva fare, int numero = 5? STUDENTE: Hanno consonanti in C o no? JASON HIRSCHHORN: o const - in pari. Quindi stai dicendo che basta una variabile globale? STUDENTE: Già. JASON HIRSCHHORN: Quindi stilisticamente, non c'è necessariamente un diritto risposta, ma entrambi sono dei migliori di un semplice lancio questi casuale numeri di tutto il codice. Noi li chiamiamo numeri magici. Quando guardo il tuo codice o quando Qualcuno sta leggendo attraverso di essa, essi Non vogliamo solo questi numeri casuali che non hanno senso. Anche il numero 26, che generalmente è il numero di lettere dell'alfabeto, è meglio definire ALFABETO fino in alto e salvare il numero 26 in quella stringa, se questo ha un senso. O sul problema impostare uno, piuttosto che - ancora una volta, non abbiamo parlato di questo a il tempo, ma invece di buttare in un 25 o un 10 in tutto il mondo, si può salvare il numero 25 come quarto o 10 come DIME, e che rende più facile per chi sta leggendo il codice a capire perché si è scelto quel numero. E anche per voi, se vi capitasse di voler aggiornare il codice, lo rende un po ' più robusto. Sì? STUDENTE: E 'questo codice anche andando di essere disponibile per noi dopo? JASON HIRSCHHORN: Tutti questi codici che abbiamo scritto insieme sono sta per essere inviato per email ragazzi e disponibili. Sì. Quindi, chiedere all'utente di cinque nomi. Casualmente scegliere e stampare uno dei nomi. Chi ha fatto questa linea? Questa è la linea più difficile qui. Siamo spiacenti, Tom. Hai fatto un ottimo lavoro, ma questo è un po 'più complicato. Marcus, andare avanti. STUDENTE: Beh in primo luogo, si sta andando a necessario includere stdlib.h e time.h. JASON HIRSCHHORN: Quindi stai dicendo che a la parte superiore, comprende altre due librerie. Tu vuoi che io includo S-T-D-L-I-B punto H, libreria standard, e ciò che era l'altra? STUDENTE: Time.h. JASON HIRSCHHORN: # include time.h. Quindi queste sono altre due librerie. Presumo che ora stiamo andando a utilizzare funzioni che sono contenute in questi due, che è questo che si deve per includerli? STUDENTE: Allora, prima si è intenzione di voler scrivere srand. JASON HIRSCHHORN: srand. STUDENTE: (time (0) JASON HIRSCHHORN: Mi dispiace. Srand (time ( STUDENTE: 0. JASON HIRSCHHORN: 0. STUDENTE:)), punto e virgola. JASON HIRSCHHORN: Un'altra parentesi chiusa? Punto e virgola. Ho intenzione di sostituire solo il vostro a zero con NULL. Si farà la stessa cosa, ma generalmente, vedrai NULL, che parleremo di questo linea in un secondo. STUDENTE: Stilisticamente meglio? JASON HIRSCHHORN: Generalmente, le persone NULL destra, ma stessa cosa. STUDENTE: E poi il nome int. JASON HIRSCHHORN: nome int. STUDENTE: = JASON HIRSCHHORN: = STUDENTE: Rand. JASON HIRSCHHORN: Rand. STUDENTE: () JASON HIRSCHHORN: () STUDENTE: numero di modulo. JASON HIRSCHHORN: Qual è il modulo? Il carattere? Il carattere di percentuale? STUDENTE: simbolo di percentuale. Modulo numero che si è definito sulla parte superiore. JASON HIRSCHHORN: Modulo NUMERO. STUDENTE: E poi punto e virgola. JASON HIRSCHHORN: Punto e virgola. STUDENTE: E poi nuova linea, printf. JASON HIRSCHHORN: printf. STUDENTE: ( JASON HIRSCHHORN: ( STUDENTE: " JASON HIRSCHHORN: " STUDENTE:% s / n JASON HIRSCHHORN:% s / n STUDENTE: " JASON HIRSCHHORN:% s / n " STUDENTE: Virgola, nomi di spazio. JASON HIRSCHHORN: Space - STUDENTE: Oh, credo, quello che abbiamo lo chiamiamo qui? JASON HIRSCHHORN: abbiamo chiamato i nomi. STUDENTE: Aperto staffa, nome. JASON HIRSCHHORN: Aperto staffa, nome. STUDENTE: parentesi chiusa. JASON HIRSCHHORN: parentesi chiusa. STUDENTE:) JASON HIRSCHHORN:) STUDENTE: Punto e virgola. JASON HIRSCHHORN: Punto e virgola. OK, salviamo. Facciamo questo codice. Studenti. Corriamo questo codice. Studenti. Not. / Studente. . / Studenti. Nome di uno. Diremo David. Nome due, RJ. Nome tre, Rob. Nome quattro, Lucas. Nome cinque, Joseph. E poi esso stampa Joseph nuovo. Così mi permetta di correre di nuovo. Permettetemi di fare gli stessi nomi. David, RJ, Rob, Lucas, Joseph. E mi ha dato Davide questa volta. Così ho fatto la stessa cosa, ma dato me una cosa diversa, e questo è perché, ovviamente, stiamo chiedendo per un nome casuale. Quindi penso che, in base al largo di me errante giro per la stanza, che la maggior parte delle persone probabilmente ottenuto la prima parte a destra, la creazione di tale matrice e quindi ottenere tutti i nomi. Sto parlando di linee da 10 a 16. Ma le linee dalla 18 alla 21 sono probabilmente alcune cose che non avete mai visto prima, quindi andiamo attraverso quelli. Questa linea, srand tempo NULL è essenzialmente - scusate, saltiamo giù una linea, rand (). Che ti dà un numero a caso, un numero intero casuale. E se si ha colpito l'uomo rand, che molti di voi ha fatto - M-A-N spaziale R-A-N-D - nel terminale come questo, M-A-N spazio R-A-N-D, premere Invio. Si potrebbe venire al manuale e sarebbe in grado di leggere che il rand uscite di comando num byte casuali pseudo dopo la semina il numero casuale Generatore volta. Quindi questa è una descrizione. Questo è ciò che rand fa, dà è un numero casuale quando si chiama tale funzione. Purtroppo, non è davvero casuale perché per le chiamate casuale senza ottenerlo qualche seme, alcuni punto di partenza, sarà sempre scegliere stessa e si usa una formula per determinare il successivo. Quindi, se si chiama rand, sarà solo vi darà la stessa cosa. Sarà molto prevedibile. In realtà non sarà casuale. Quindi quello che dobbiamo fare, per Marcus istruzioni per me, erano rand sementi qualcosa di diverso, che è quello che la funzione srand fa. E 'semi rand con qualcosa di un po' di più casuale che la stessa cosa, e sta seminando con tempo NULL, che è, solo per convenzione, la corrente tempo in secondi. Quindi stai supponendo che tutti non andando a eseguire il codice al esatto stesso secondo, quindi è una scommessa sicura che tempo NULL sta per essere diverso ogni volta che viene eseguito il codice. Scommessa sicura che quindi, srand volontà rand sementi con qualcosa di diverso ogni singolo tempo. Quindi per convenzione, quando facciamo vogliamo una numero a caso, abbiamo scrivere questa linea, srand tempo NULL, di darci una più seme più casuale, e poi corriamo rand, che ci dà un numero casuale. Sì? STUDENTE: Si può dire che cosa intendi per seme? JASON HIRSCHHORN: Seed come in - così rand sta per prendere qualche numero e sta andando ad utilizzare alcuni formula per arrivarci. Quindi sta per iniziare con qualcosa di e poi trasformarlo in qualcosa di base fuori di quella formula. Se si dà sempre la stessa cosa, è sempre di andare a trasformarlo in stessa cosa. In modo che prima cosa che dare è il seme. Così si vuole dare qualcosa diverso per cominciare, e quindi si trasformerà in qualcosa di diverso. E poi, infine, la linea 20, Questa è chiamata la% modulo, e che è confusa. Questo è qualcosa che è un po ' diverso qui che non si fa davvero avere nella vita reale la matematica. Ma, in sostanza, quando si prende un gigante numero e si dividono in C, cosa accade per il resto? STUDENTE: Si viene troncato. JASON HIRSCHHORN: Essa viene troncato. Quindi 20 diviso 3 è ciò? Che cosa vuol tornare alla si, 20 diviso 3. Spiacente, 10 diviso 3. Che cosa vuol tornare a voi? STUDENTE: [incomprensibile]. JASON HIRSCHHORN: 10 diviso 3 soli restituisce 3, non 3 resto 1. Così che cosa 10 modulo 3 ritorna è solo il resto, 1. Quindi, se si voleva sapere che cosa 10 diviso da 3 in realtà era, si farebbe fare 10 diviso 3, si otterrebbe il vostro 3, e poi faresti 10 modulo 3, e si otterrebbe un 1. Quindi, ti renderesti conto che 10 diviso da 3 è 3, resto 1. E in questa linea, rand potrebbe essere qualsiasi numero intero, in sostanza. Così modulo sta dicendo, dividerlo per numero, che è in questo caso 5. E se mai dividere per un numero, il integer deve sempre essere inferiore tale numero. Quindi, se stai dividendo per un numero di 5, il resto sta andando sempre essere zero a quattro. Questo è solo come la matematica funziona. Così un gran numero moduloed da un più piccolo numero restituirà sempre resto e sarà sempre tornare un numero che è inferiore al numero di diviso. Qualcuno ha domande su modulo, perché sarà venuto a molto, molto pratico, quindi voglio fare in modo ognuno lo capisce? Freddo. E abbiamo visto che questo programma ha funzionato. OK, andiamo avanti. Così la prossima, stiamo per andare in funzioni, e abbiamo intenzione di andare per il resto di questa roba abbastanza presto perché voglio arrivare a gli argomenti della riga di comando. Per cui funzioni sono essenzialmente, Come avete visto, scatole nere. Prendono le cose in detti parametri, fanno qualcosa per loro, sia modificarli o creare alcuni effetti collaterali, e, infine, sputano qualcosa, che è il valore di ritorno. Qualcuno mi può dare una ragione perché dovremmo utilizzare le funzioni? Chiunque? Una ragione per cui noi avremmo usato le funzioni? Chiunque? Ho visto due mani. Che cosa è un buon motivo? Marcus? STUDENTE: Se si dispone di chiamare lo stesso pezzo di codice più volte. JASON HIRSCHHORN: OK, se avete bisogno di chiamare lo stesso pezzo di codificare più volte. Jeff, hai avuto un altro motivo? STUDENTE: Solo in modo che è possibile codificare meno. JASON HIRSCHHORN: È possibile codificare meno. Giusto. Se si vuole fare qualcosa di molto - Nel codice precedente, ho potuto avere scritta ottenere stringa cinque volte, ma una per il ciclo lo fa apparire più bello e si deve scrivere meno codice. Le funzioni sono un'idea simile. Se voglio fare la stessa cosa un sacco, spostarlo in una funzione e chiamare che funzionamento ogni volta. Che fare quella cosa per voi. Questo è un ottimo motivo per utilizzare le funzioni. Quindi, anatomia di una funzione. Una funzione viene generalmente simile a questa. Si comincerà con il tipo di ritorno, allora si otterrà il nome. Ci vorranno gli argomenti, altrimenti cosiddetti parametri, e dentro quelle parentesi graffe, ti scrivere il codice. Abbiamo visto una funzione molto. Ecco principale. Qui viene principale sovrapposto anatomia che ho avuto in precedenza. Che cosa int proprio qui significa? Cosa vuol int significa? Quando scrivo int main (void). STUDENTE: Tipo di ritorno? JASON HIRSCHHORN: Scusa? STUDENTE: Il tipo di ritorno. JASON HIRSCHHORN: Int è la tipo di ritorno, esattamente a destra. Principale restituisce un int. Che cosa è main? STUDENTE: nome della funzione. JASON HIRSCHHORN: principale è la nome della funzione. Esattamente. E vuoto? Qual è vuoto dentro le parentesi? STUDENTE: Non ci vuole qualsiasi valore esterno. JASON HIRSCHHORN: void So - destra. All'interno delle parentesi, abbiamo messo la parametri o gli argomenti delle funzione prende, che cosa va all'interno della scatola nera. Quando si scrive nulla, stai dicendo questo non toglie nulla dentro Così int void main significa principale di Non prendere nulla dentro All'interno delle parentesi graffe, abbiamo un po ' codice, e poi vediamo alla fine restituire zero. Che cosa fa ritorno a zero significa? Beh, abbiamo parlato di tipo di ritorno. Principale deve restituire un int. Questo è ciò che questa linea fa. Esso restituisce un int, zero. Naturalmente, non abbiamo visto che un sacco perché nella programmazione che facciamo con le macchine che facciamo ei compilatori usiamo al giorno d'oggi, è non hanno bisogno di quella linea. Principale è abbastanza speciale che sa quando si raggiunge la fine della principale, appena restituire zero se tutto è andato bene. In realtà, se qualcosa non va bene, principale sarà spesso restituire un diverso numero significare che qualcosa è andato storto con il vostro programma. Quindi, in generale, quando si vede il codice, si non scrivere di ritorno pari a zero, ma è buono di sapere che sta accadendo dietro il scene perché ogni volta che si scrive un altro tipo di funzione, si sta andando ad avere bisogno di includere una linea di ritorno. Se stai dicendo che sto per restituisce un int, è necessario scrivere restituire qualcosa. Se dite nulla fino qui al All'inizio, void void main, per esempio, allora non è il ritorno nulla - nulla significa nulla - quindi non è necessario che la linea di ritorno. Ma hai mai scritto qualcosa che non è nulla per il tipo di ritorno, è necessario una riga che dice di ritorno e si bisogno di mettere qualcosa lì che corrisponde al tipo. Avete domande su questo? Dolce. Ambito di applicazione. Questo è qualcosa che abbiamo toccato pure. Ogni variabile, come sappiamo, ha un certa portata, e che è fondamentalmente parlando in cui la variabile può o non può essere fatto riferimento. E mi piace dire quello che succede tra parentesi graffe soggiorni all'interno delle parentesi graffe. Così, per esempio, se guardiamo a questo codice, stiamo definendo una variabile globale esterno principale, int a, qui in alto. Noi stiamo chiamando un altro int a interno principale. Abbiamo alcune parentesi graffe più, e stiamo chiamando un altro int a. Abbiamo tre una di nel codice. Questi non sono la stessa cosa. Ho creato tre variabili distinte. Poi all'interno di questi ricci interiore bretelle, mi dicono che a = 4. Il che è una che parla, il primo, il secondo, o il terzo? STUDENTE: Il terzo. JASON HIRSCHHORN: Sta parlando circa il terzo. Tutti quelli di una in realtà può essere parlato in questo particolare esempio perché il loro campo di applicazione tutto va in queste parentesi graffe più interne. Tuttavia, quando si chiama le cose allo stesso nome, c'è qualcosa che si chiama nascondersi. Quindi, avete a che fare solo con o riparare o utilizzare il più recente variabile, o quello più vicino a voi. Quindi qui dentro, questo terzo una è più vicino a quella linea, a = 4, così colpisce il terzo. E l'ultima riga, a = 2, che a è che parla, il primo, secondo, o un terzo? STUDENTE: Seconda. JASON HIRSCHHORN: Sta parlando circa il secondo a. Naturalmente, il terzo un è più vicino nel codice, ma il terzo un non esiste al di fuori quelle parentesi graffe. Una volta che si arriva a quella chiusa ricci brace, è come è andato, essenzialmente. Quindi gli unici due che hai lasciato sono quelli primi due, e, naturalmente, ora è più vicina alla seconda. Ecco, questo è una buona cosa da ricordarsi di portata. Ad esempio, sono sicuro che hai incontrato questo in un ciclo Do While. Se si inizializza la variabile interna il ciclo Do While e quindi si tenta di accedervi dall'esterno, probabilmente avuto qualche avvertimento simile, questo variabile non esiste. Questo perché l'idea portata, che le cose esistono solo all'interno di queste parentesi graffe. Le parentesi graffe sono come un abbraccio gigante che si sta dando al codice, è un altro modo di pensarci. Quindi questo è un'altra funzione, qualcosa per voi ragazzi a codice, hellofunction.c. Stiamo andando a saltare che per ora, ma questo è qualcosa che ti incoraggio a praticare da soli. Scrivere un programma in cui i principali chiamate un'altra funzione che stampa un saluto per l'utente. E 'essenzialmente prendendo mondo ciao e astrazione che printf in un'altra funzione. Ma noi non abbiamo intenzione di farlo adesso perché non abbiamo più tempo lasciato come mi sarebbe piaciuto. Così dichiarazione di funzione. Abbiamo visto questo prima pure. Se si vuole scrivere un'altra funzione, è necessario lasciare che il computer conosce e principale sanno che esiste. Quindi, quello che facciamo è sopra principale, scriviamo il tipo di ritorno, il nome e il parametri, e poi giù sotto principale, qui, in realtà copia che la linea e poi scrivere il codice vero e proprio. Quindi, in questo modo, se si chiama la funzione nel principale nella parte superiore, principale sa che ciao esiste, per esempio, se io fossi chiamare ciao, e poi sembra di l'attuazione in basso. Cosa succede se non includono questa line up top, nulla ciao (void)? Se io non includo questa linea e chiede principali Ciao, sono andando ad ottenere un errore. Ho intenzione di ottenere un errore perché il compilatore non sa che questa cosa esiste. Questo è simile a questo che do # include cs50.h. Cosa essenzialmente cs50.h sta facendo sta mettendo ottenere stringa lassù. Sta mettendo ottenere int lassù. Si sta mettendo tutte quelle funzioni prototipi prima principale in modo che quando li chiami in principale, principale sa che queste cose esistono. Questo è ciò che quei file. H fanno. E quindi, se avete intenzione di fare il proprio funzione, devi fare in modo metti che prototipo lassù. Tutte le domande su questo finora? Gli argomenti della riga di comando. Questo è quello che stiamo andando a finire su, e poi speriamo di spremere in qualche pset. Non so se saremo in grado di spremere che nella causa di tempo, ma con voi ragazzi che sono qui, e se si ragazzi vogliono dire che dopo un po ', abbiamo può andare su di esso dall'esterno. Ma stiamo andando a finire con argomenti della riga di comando per gli ultimi 15 minuti. Siamo svegli, Michael? Sei sveglio? Buono. Non so se si dorme con gli occhi chiusi. Sarebbe difficile. Gli argomenti della riga di comando. Quelli sono un modo per passare informazioni in un programma. Alla fine, ci incontriamo gli altri. Ma in sostanza, stiamo andando a fermarsi scrivere int main () se vogliamo prendere alcuni argomenti della riga di comando. Stiamo per scrivere questa cosa chiamato int main (int argc, stringa argv, staffe. Che è confusa. Questo è un sacco di lettere che non sono in umano inglese, quindi andremo a disfare loro in questo momento. Argc sta per numero di argomenti - e ancora, tutte queste saranno essere disponibile on-line - e questo è il numero di argomenti. Argv sta per argomento vettore, e quelli sono gli argomenti stessi. Si tratta di un array di stringhe. Abbiamo effettivamente visto una matrice di stringhe prima di oggi. Abbiamo creato uno in ultima programma abbiamo scritto. Quindi, ecco un esempio. Scrivo. / Ohai sezione CS50 sulla mia linea di comando. Argc in questo caso è uguale a 3. Argv staffa 0 è ohai, argv staffa 1 è CS50, argv staffa 2 è la sezione. Ancora, argc è il numero di argomenti, e di viaggio in su un po ' po ', abbiamo sempre contare il nome del funzione come primo argomento. Quindi in questo caso, ci sono tre argomenti, il nome della funzione e poi quei due che ho digitato dentro Avanti, andiamo a salvare coloro stessi argomenti argv. E ancora, come abbiamo visto prima, abbiamo fatto questo nell'ultimo programma abbiamo scritto. È possibile spostarsi attraverso la matrice di argv e ottenere quelle stringhe. Questo è in sostanza quello che abbiamo fatto in Alla fine del nostro ultimo programma. Abbiamo scelto un nome a caso e poi siamo andati a nomi staffa qualunque e stampati la stringa si trova lì. In cima solo una matrice, poiché corde stesse sono array, come ha parlato, è possibile avere gli array di array, che è essenzialmente ciò che è argv. Un modo si può pensare questo è righe e colonne. Posso disegnare che in questo momento. Così argv - che non sta cancellando. Impara a disegnare sotto ohai. Quindi, se ho scritto in, sezione ohai CS50, Ho intenzione di troncare sezione per questo esempio. Ma in sostanza, il mio multi-dimensionale array, ohai CS50, stiamo andando a fare sez. Così qui, posso accedere - se ho appena do argv un numero - questo è sbagliato. Cosa c'è di sbagliato in questo schema? STUDENTE: Partenza da zero. JASON HIRSCHHORN: dovrebbe iniziare con zero. Probabilmente dovrei anche ruotarla, ma dal momento che ho già disegnato su, io sono intenzione di lasciarlo acceso lì per ora. Ma si parte da zero. Che è di destra. Mi dispiace se questa è piccola. Voi ragazzi potete sorta di vedere? Quindi se faccio argv 0, io ottenere tutte ohai. Se faccio argv 1, vado a prendere tutti CS50. Se faccio argv 2, vado a prendere tutti setta. Ma ora, come abbiamo detto, le stringhe sono matrici stesse. Quindi quello che posso fare è che posso trattare questo come un array multi-dimensionale, e io può fare qualcosa lungo le linee di argv 0, 0, il che mi dà solo il carattere 0. Argv 0, 1, che dà me solo h. Argv 1, 3, il che mi dà solo questo 0 qui in CS50. Quindi, perché le stringhe stesse sono array, stiamo mettendo che in un altro array. Ora abbiamo array di array, e noi può indicizzare nel nostro primo array e quindi indice nel nostro secondo array. E come ci si aspetterebbe, lo facciamo da solo mettendo quei due - facciamo le parentesi quadre solo proprio accanto a un altro. Quindi in questo esempio, argv 1 è CS50 e argv 1, 2, come abbiamo detto, è solo 5. Qualcuno ha domande su array multidimensionali? Voi ragazzi state facendo impressionante. Dolce. Quindi abbiamo un altro programma proprio qui, e questa è l'ultima cosa che siamo intenzione di fare adesso. Quindi voglio che tu scriva un programma che prende il nome completo di un utente, due e solo due argomenti della riga di comando, e, infine, stampare un saluto al utente che include il loro nome di battesimo. Allora perché non prendi tre o quattro minuti per fare questo, e poi ce ne andiamo su di esso come un gruppo, e poi ci spostiamo in su? E ancora, ecco, quando si dice prendere un nome completo per la descrizione dell'utente di questo problema, dovrebbe essere comando argomenti della riga, non usando ottengono stringa. Sì, Marcus? STUDENTE: Quindi, quando si dice due comandi argomenti della riga, è che, oltre a . l'/ correre, o - JASON HIRSCHHORN: Bella domanda. Fare, tra cui il. / Run, tre gli argomenti della riga di comando. O tra il. / Personalizzato, in questo caso, perché questo è il nome di questo file. Così argc sarebbe tre. Ma voglio solo due argomenti dato al programma. Vorrei specificare che. Farò che il cambiamento prima che post- questi e inviarle a voi ragazzi. STUDENTE: cosa succede se si avere un secondo nome? JASON HIRSCHHORN: Se si dispone di un mezzo nome, sei fuori di fortuna. Mi dispiace. Oppure, se si va solo da Shakira, sei anche fuori di fortuna. Sì? STUDENTE: Quindi, quando le persone non hanno cs50.h, fanno definiscono argv come char argv stella? O è ancora chiamato stringa argv? JASON HIRSCHHORN: sì. Così stringa, ancora una volta, abbiamo maschera sul quale esattamente sta accadendo là. Che sta per essere scompattato forse il Mercoledì, ma presto. E 'come le ruote di formazione. Perché in sostanza, è la stessa cosa. Così diamo un altro minuto per programma questo, e poi andremo oltre come un gruppo, e quindi come ho detto, avvolgere. E penso che siano ancora caramelle in più, così voi ragazzi dovreste prendere spera che, o si prega di prendere quello. Mi dispiace se stai ancora scrivendo, ma voglio immergersi e noi può finire insieme. Così ho scritto a, # include cs50.h, # include stdio.h. int main (), parentesi graffa, ricci brace, all'interno di tre linee di pseudocodice, prende il nome completo di un utente, due e solo due riga di comando argomenti, stampare un saluto al utente che include il loro nome di battesimo. Quindi la prima, prendere il nome completo di un utente. Chi può aiutarmi a portare nome completo? di un utente Come posso fare quella parte? Vi siete farlo prima parte? Prendere il nome completo di un utente. Beh, per quella linea di comando argomento, che cosa devo scrivere? Cosa dovrei cambiare circa la mia dichiarazione di funzione? STUDENTE: Lei non si vuole che fosse più nulla. JASON HIRSCHHORN: Esattamente. Io non voglio che sia vuoto. Cosa voglio che sia? STUDENTE: argc int. JASON HIRSCHHORN: int argc. STUDENTE: String argv. JASON HIRSCHHORN: String argv. STUDENTE: staffa, staffa. JASON HIRSCHHORN: staffa, staffa. E 'esattamente così, e questo è in realtà come ho intenzione di ottenere il nome completo di un utente. Stanno andando a metterlo in là. In modo che uno ha fatto. Quindi ora voglio due e solo due gli argomenti della riga di comando. Così Noè, che cosa è un modo che posso verificare il numero di comando argomenti della riga ho? STUDENTE: Tu fai un if. JASON HIRSCHHORN: se dichiarazione, esattamente. Cosa voglio come la condizione? STUDENTE: Se argc maggiore di 3. JASON HIRSCHHORN: se argc è maggiore di 3. Se argc maggiore di 3, cosa devo fare? STUDENTE: ritorno 1. JASON HIRSCHHORN: RITORNO 1. Sarà che ho assicurare due e solo due? STUDENTE: No. Se argc è maggiore di 3 e minore di 2. JASON HIRSCHHORN: se argc è maggiore di 3 e argc è minore di 2. Che è un modo posso scrivere questo in un solo una linea, o senza usare tale e operatore booleano? STUDENTE: Non è uguale a 2. JASON HIRSCHHORN: se argc non è uguale a 2. Esattamente. Quindi se argc non è uguale a 2, che mi darà questo programma, personalizzato, quando lo eseguo, e che mi darà quanti argomenti della riga di comando? Quanti dovrò controllare? Mi dispiace. Permettetemi di riformulare questo. Se argc = 2, quante cose ha fatto l'utente scrivere nella linea? STUDENTE: Uno. JASON HIRSCHHORN: Solo uno. Quindi, prima, avevi ragione, Noah. Di cosa ho veramente bisogno di mettere lì? STUDENTE: Che è uguale a 3. JASON HIRSCHHORN: argc non è uguale a 3. Voglio eguagliare 3 perché voglio personalizzato oltre gli altri due. Quindi, se argc non è uguale 3, ritorno 1. Perché hai detto RITORNO 1? STUDENTE: Perché significa che è sbagliato. JASON HIRSCHHORN: Questo significa che è sbagliato, E che cosa è che andando a fare? STUDENTE: Re-richiesta all'utente. JASON HIRSCHHORN: E 'intenzione di smettere il programma, quindi sarà necessario eseguire ancora una volta, ma non abbiamo niente in qui per chiedere loro di nuovo. Non ho chiesto per questo. Ecco, questo è esattamente giusto. Ritorno 1 solo chiude il programma. Grande. E stampare un messaggio di saluto per l'utente che include il loro nome di battesimo. Come posso fare questo? Anna? STUDENTE: printf. JASON HIRSCHHORN: printf. STUDENTE: (" JASON HIRSCHHORN: ( STUDENTE: "ciao JASON HIRSCHHORN: "ciao STUDENTE:% s JASON HIRSCHHORN:% s STUDENTE: / n JASON HIRSCHHORN: / n STUDENTE: ", JASON HIRSCHHORN: ", STUDENTE: argv JASON HIRSCHHORN: Scusa? STUDENTE: argv JASON HIRSCHHORN: argv STUDENTE: Piazza staffe 1. JASON HIRSCHHORN: Le parentesi quadre? STUDENTE: 1. JASON HIRSCHHORN: 1. STUDENTE: E) punto e virgola. JASON HIRSCHHORN:) virgola. Corriamo questo. Fai personalizzato. . / Personalizzato. E 'appena smesso. Perché ha smesso? STUDENTE: Lei non ha messo alcun argomento. JASON HIRSCHHORN: non l'ho fatto mettere tutti gli argomenti dentro Sembra grande. Voi ragazzi inchiodato. Così ancora una volta, è andato in argv e si controllato all'inizio argc. Quelli sono due importanti cose da ricordare. Quindi, nelle nostre ultime due minuti prima di noi lasciare, non si arriva a pset due, ma come ho detto, se si vuole rimanere dopo per 10 minuti, vorrei che felice di andare sopra con voi ragazzi la logica per questi insiemi di problemi. Abbiamo avuto un sacco di coprire oggi così non ho avuto con loro. In generale, mi piace includere che alla fine. Quindi, se si vuole restare, restare per 10 minuti. Lo faremo. Poi, come ho detto all'inizio, pset zero e uno, otterremo che retroazione al più presto possibile. L'obiettivo è quello di ottenere pset un feedback, la parte commenti, prima pset due è dovuto. Quindi, se hai fatto qualche errore o stilisticamente, le cose potrebbero essere migliori, avrai le informazioni in modo da non fare le stesse cose in pset due. E poi, in futuro, si otterrà tutti del vostro feedback pset e commenti indietro prima che il prossimo è dovuta. Infine, se potevo mettere in un altro spina per il feedback. Questo è il tuo primo articolo. E 'stata la mia prima sezione l'insegnamento di quest'anno. Andare lì. Scrivere cose, buone e cattive, e io lo uso per fare sezione di meglio la prossima volta. E per ultimo, ancora una volta, se avete bisogno di qualsiasi cosa, fammi sapere. Sono più che felice di aiutare voi ragazzi. Se si desidera solo caramelle, ho avrà caramelle in più. Sono felice di portare a voi. Questo sarà un corso di stupefacente. Questo è uno dei, se non il mio preferito Naturalmente, ho preso in tutta la mia vita, e spero che sarà così meraviglioso per voi. Quindi voglio fare tutto quanto in mio potere per rendere più che impressionante per voi. Ho intenzione di inviare una e-mail se si è nella mia sezione o Noah, e andando a cercare e pianificare con ciascuno dei voi ragazzi un tempo per il check-in nel un paio di settimane in modo che possa ottenere un senso di ciò che il vostro sfondo CS è, e aiuterà anche a me su misura questi sezioni per soddisfare al meglio le vostre esigenze. Ecco, questo è quello che ho messo in fila. Anche in questo caso, ci vediamo fuori se si vuole essere lì. Questa settimana è stata a due sezioni. Grazie ragazzi così tanto.