>> JASON HIRSCHHORN: Bienvenue CS50 section, tout le monde.
Mon nom est Jason Hirschhorn.
Je suis beaucoup de TFS vôtre, mais beaucoup de personnes, nous l'espérons se joindront à nous
ligne, les étudiants de vulgarisation ou des étudiants essayer de regarder à travers la section s'ils
manqué leur section de cette semaine ou juste rattraper s'ils voulaient
d'examiner certains documents.
>> Alors que par le programme, qui tous vous avez lu, c'est exact?
Je vois beaucoup de hochements de tête.
Les articles vous offrent des possibilités d'explorer le cours de
matériel dans un environnement plus intime, ainsi que plonger dans
des activités pratiques.
>> Donc, c'est essentiellement ce que nous sommes allez faire chaque semaine.
Nous allons passer par ce que nous avons déterminé à être le plus important
thèmes abordés lors de cours magistraux, et ceux probablement aussi la plus utile et
plus susceptibles de venir sur les plateaux de problèmes et des quiz, et dans votre codage
vie en dehors du CS50.
Donc, nous allons aller dans ces sujets, discuter, rendez-vous sur eux,
répondre à toutes les questions que vous les gars ont, et alors nous allons faire beaucoup de
problèmes pratiques de codage.
>> Vous avez tous apporté des ordinateurs portables, ce qui est fantastique.
Il s'agit d'une classe d'informatique.
Cependant, beaucoup de ces exercices que nous faisons, vous n'aurez pas besoin de votre ordinateur portable pour.
Vous pouvez les faire sur une feuille de papier.
Voilà comment vous allez faire sur le quiz.
Et en effet, c'est un excellent moyen de savez vraiment ce que vous faites comment
quelque chose si vous n'avez pas de chèque de 50 à invoquer ou faire de s'appuyer sur, raconter
vous avez fait des erreurs.
>> Donc, vous êtes les bienvenus au code de la appareil ou run.cs50.net, qui est
un autre outil qui vous permet de coder en ligne, mais je ne recommanderais aussi, si
vous ne l'avez pas essayé, en utilisant une feuille de papier et d'essayer ces pratiques
problèmes sur une feuille de papier.
Parce qu'encore une fois, c'est en fin de compte ce que vous allez être
demandé de faire le quiz.
>> Donc, nous allons commencer avec notre ordre du jour.
Nous allons passer en revue certaines normes pour notre section, nous allons plonger
dans des tableaux, des fonctions, et la ligne de commande arguments, qui est ce que vous les gars
ont couvert la semaine dernière en conférence puis lundi, et ce que vous allez couvrir
plus de demain.
Et puis finalement, nous allons parler PSet2.
Si je pouvais obtenir un vote à main levée si vous n'ont pas regardé le problème posé deux
spécification.
Nous dirons tout le monde.
Fantastique.
>> Nous en parlerons ensembles de problèmes dans un peu, mais si vous lisez l'ensemble des problèmes
spécification, c'est tout ce que vous devez faire.
Si vous avez bien lu avant de venir classes et sections mardi, vous
être une excellente position.
Nous pouvons passer par l'ensemble du problème, qui est ce que nous allons
à faire à la fin.
Nous allons passer par la logique, assurez-vous
tout le monde est sur la même page.
>> Je veux que vous soyez en mesure de quitter mardi très à l'aise avec ce que vous
besoin de faire pour résoudre le jeu de cette semaine, et si vous ne le faites pas, je serai heureux de
rester après et travailler avec vous.
Mais c'est une chose que vous devez faire, mais je pense serait vraiment intelligent,
suffit de lire l'ensemble des problèmes spécification de classe le mardi,
qui cela ressemble à un Beaucoup d'entre vous a fait.
>> Je vais commencer avec un ordre du jour de chaque classe si vous savez où nous allons.
C'est aussi utile pour les gens qui regardent en ligne parce que chaque section
est un code de couleur, donc si vous voulez venir arrière et regarder 10 minutes plutôt
que la section entière de 90 minutes, vous pouvez simplement aller à la section code couleur
et de regarder cette partie.
J'ai donc essayé de les diviser en agréable modules qui vous permettront -
si vous voulez revenir et revoir, ou d'autres étudiants qui sont juste
regarder une section de revoir -
pour trouver la chose de spécifique qu'ils vouloir prêter attention à
et en savoir plus sur.
Sweet.
>> Normes.
Je suis un leader FOP sur le campus.
Je ne sais pas si quelqu'un a fait FOP.
Quelqu'un at-il le faire FOP?
Une personne a fait FOP.
Deux personnes ont FOP.
Impressionnant.
Alors FOP est la première année en plein air Programme d'orientation.
Nous prenons étudiants de première année dans les bois et faire expériences les plus magiques de
leur vie, c'est exact?
Ouais.
Sons sur le droit.
>> Donc, je voulais juste de commencer notre première section en discutant de certaines normes
pour la classe et notre relation parce que je pense
ils sont très importants.
Tout d'abord, que ceux d'entre vous qui sont ma section ont reçu et
a été discuté dans ce e-mail, j'adore ça.
C'est ma partie préférée de l'année.
Je suis tellement excitée.
J'ai été ici pendant des heures aujourd'hui.
Je n'ai pas quitté ce bâtiment, sauf pour aller manger parce que j'aime CS50 section, je
J'adore enseigner, j'aime travailler avec vous les gars.
>> Une de mes priorités, si elle n'est pas ma la priorité numéro un, non seulement pour
cette classe, y compris, mais mon autre les classes et les activités extra, est de
soutenir les gars, et vous aider les gars, et faire de mon mieux pour vous assurer que vous
les gars ont un merveilleux, amusant et productif, attachant, passionnant
expérience dans cette classe.
C'est ce que je me suis engagé à.
C'est pourquoi je l'aime pour ce faire.
C'est ma priorité numéro un, vous soutenir les gars.
Si vous avez des questions au sujet de conférence, l'ensemble du problème, section,
la vie, même si vous voulez parler de vie, n'hésitez pas à tendre la main s'il vous plaît.
>> Vous avez mon numéro de téléphone cellulaire, vous avez mon email
adresse, vous avez mon GChat.
Vous pouvez me contacter à tout ou partie des ceux à chaque fois, mais ne sera probablement pas
une réponse à chaque fois.
J'ai essayer de revenir dans les 24 heures.
Souvent, il sera dans 20 minutes ou 24 minutes.
J'aurais dû dire que pour le rendre parallèle.
Mais vous allez recevoir une réponse assez rapidement.
>> Si vous me texte une heure avant l' problème posé est due, je vais vous calmer
vers le bas et faire des exercices de respiration profonde avec vous, mais si vous n'avez pas encore commencé,
vous n'allez probablement pas à la fin, et Je ne peux pas vraiment vous aider là-bas
même si je ferai de mon mieux.
Donc, je ferai tout Je peux vous aider.
S'il vous plaît n'hésitez pas à tendre la main si c'est en partie encore une fois, aux heures de bureau
si vous me voyez, ou même à l'extérieur.
Je suis heureux de mettre en place un temps de rencontrer et le travail par des problèmes
avec ou rendez-vous sur le matériel.
Alors, qui est le numéro un, support.
Je ferai tout ce que je peut vous aider.
>> Numéro deux, réunion au milieu.
Autant que je voudrais être, je suis pas omnipotent ou tout-puissant ou
omniscient, donc je ne connais pas tous les temps si ce que je fais devient
à travers, si la façon dont je suis l'enseignement de la rubrique vous aide à apprendre, ou si vous
sont confus sur un sujet, mais ne pas levez la main ou me demander
ou envoyez-moi un e-mail.
Ou même si vous, encore une fois, êtes confus quelque chose sur le jeu de problème.
Si vous n'atteignez pas à moi, Je ne peux pas savoir ce que c'est sûr.
Je vais faire de mon mieux pour vous enregistrer sur vous les gars, assurez-vous que tout est
va bien, essayer d'enseigner les choses de façon qui sera propice à la plupart des
vos styles d'apprentissage, mais s'il ya tout ce que je peux faire, faites le moi savoir.
>> Le long de ces lignes, si vous voulez un peu d'aide avec l'ensemble du problème, je suis plus
qu'heureux de vous aider avec le jeu de problème.
Nous allons faire beaucoup de que vers la deuxième
la moitié de cette section.
Mais si vous n'avez pas lu le problème séries sauvegarder et n'ont pas regardé la marche
à travers et n'ont pas regardé les courts métrages et d'attendre que je vous apprenne
tout ce qui a été filmé en ligne ou que vous pouvez trouver à CS50
étude, ce n'est pas vraiment juste de moi ou à vos autres camarades.
>> Alors s'il vous plaît, je suis plus qu'heureux de vous aider vous, mais vous les gars suis arrivé à me rencontrer dans
au milieu.
Nous avons des tonnes de ressources pour vous disponible sur CS50.
J'ai mentionné certains d'entre eux.
S'il vous plaît profiter d'eux.
Si vous êtes confus, je suis plus qu'heureux pour vous aider à expliquer en
une autre façon, mais ce n'est pas juste si les étudiants se présentent aux heures de bureau,
n'ont pas commencé quelque chose, et c'est Jeudi soir et ils s'attendent
le TF pour les guider dans chaque chose pour le problème mis en cause
à midi le lendemain.
Donner un sens?
Encore une fois, s'il vous plaît nous rencontrer au milieu.
>> Et enfin, des attentes élevées.
Je vais être tout le monde de classement qui est dans mon article, ou marquer votre
ensembles de problèmes.
Vous n'avez pas rentrés problème définir zéro ou un encore.
Nous sommes désolé à ce sujet.
Il nous a fallu un certain temps pour finalement régler sections, et maintenant
nous pouvons commencer classement.
>> Je vais de nouveau à vous dès que possible.
Voilà quelques-unes de mes advisees là-bas.
Je vais de nouveau à vous dès que possible.
Et pour l'ensemble de problème à deux, nous serons sur Horaire et nous commencerons à les faire
vous assez rapidement après vous les mettez po
>> Lorsque vous obtenez votre problème en retrait, vous obtiendra scores, comme vous le savez à partir de
lire le programme - l'exactitude, l' conception, la portée et le style scores.
Vous aurez également des commentaires.
Les commentaires sont la plus importante que les scores.
Je pense qu'il est sûr de dire que.
>> Les scores sont juste un numéro de un à cinq.
Il est difficile de lire dans ceux-ci.
Il est difficile d'améliorer à partir de ceux-ci.
Mais les commentaires vont souligner spécifique choses tu as bien fait ou zones
vous pouvez améliorer et vous donner quelques idées pour l'avenir ou solution de rechange
façons de faire les choses.
>> Alors s'il vous plaît, s'il vous plaît, s'il vous plaît lire à travers les commentaires.
J'ai mis beaucoup de temps à ces commentaires.
S'il vous plaît les lire et de ne pas seulement défiler vers le bas jusqu'au fond de la
PDF, recherchez votre score, ou aller en ligne et trouvez votre score, puis ignorer
les commentaires.
Ce n'est pas la façon dont vous êtes aller mieux.
Ce n'est pas la façon dont vous allez augmenter vos scores en fin de compte, tout
en regardant les scores.
S'il vous plaît regardez ces commentaires.
>> Et le long de la ligne des attentes élevées, encore une fois, comme je l'ai dit, vous
peut être marqué d'un à cinq.
Deux, trois, et quatre de sont les grande majorité des scores
vous allez être obtenir.
Ones et Fives sont tous les deux très rare.
Il ya toujours des choses nous pouvons faire mieux.
Chaque fois que je le code d'un programme, il ya toujours quelque chose que je
aurait pu faire mieux.
>> Ainsi, plutôt que de dire que vous obtenez un cinq tout le temps sur tout et faisait
tout est parfait, je ne pense pas nous croyons vraiment que nous - ou
espérons-le, nous ne faisons pas tout perfectionner tout le temps.
Donc, ne vous inquiétez pas si vous n'a pas obtenu un cinq.
A cinq ne mappe pas sur un A, un quatre ne pas mapper sur un B, un trois-t-
pas sur une carte C. Ce n'est pas comment fonctionnent les scores.
>> Comme David l'a dit à plusieurs reprises, à la fin de l'ensemble de vos scores de semestre et
Entrée de moi, votre TF, se réunissent et de déterminer la note finale pour vous.
Mais encore une fois, ce n'est pas cinq, A quatre, B, etc.
Donc, je vais avoir des attentes élevées pour vous les gars.
Je vais attendre un bon problème ensembles et je vais donner
vous rétroaction en tant que tel.
Et il ne va pas dire que vous êtes allez obtenir une qualité pire.
Vous êtes graduées en termes de votre progression de la semaine
zéro à la fin de cours.
>> Et enfin, en termes de haute attentes en classe, j'adore quand
les gens participent.
Je comprends que certaines personnes se sentent plus ou participant moins à l'aise.
D'autres personnes participent pas en levant la main et
parler tout le temps.
Mais nous avons dans cette classe allons être faire beaucoup de petits problèmes, beaucoup
de mini questions, et puis certains plus grande problèmes de codage.
Donc certainement travailler sur ces exercices quand nous faisons sur votre ordinateur ou sur
une feuille de papier.
>> Mais je vais également vous donner un peu de temps avant personne n'a jamais à répondre à certaines
des questions que je pose.
Donc, parce que je vais vous donner le temps de penser, parce que nous allons
de faire les choses partenaires parfois, Je vais attendre que tout le monde
à s'engager un peu.
Et à défaut d'un meilleur terme, il sera probablement cold calling, qui
est l'endroit où tout le monde aura une chance de réfléchir à la réponse, puis
Je vous invite, puis vous allez me dire la réponse.
>> Ne vous inquiétez pas, ou avoir peur à ce sujet.
Je l'ai fait dans le passé et nous avons trouvé qu'il ya beaucoup plus de succès,
également lire sur la recherche en éducation à déterminer si elle était ou non un
bonne tactique.
Il est très utile, surtout si vous donner aux élèves le temps de réfléchir à la
réponses et ne pas les faire venir juste et dire il dès le départ.
Mais si vous ne vous sentez pas à l'aise répondre, je suis également très bon à
sentant que dehors, et nous n'allons pas vous mettre sur la sellette, en particulier sur
l'appareil photo, même si aucun d' vous êtes sur l'appareil photo pour le moment.
>> Donc, ce sont les normes que j'ai.
Une dernière chose le long des lignes de rencontrer dans le milieu.
Je vais vous donner les gars beaucoup de commentaires.
S'il vous plaît me donner des commentaires aussi.
Il ya un site web, sayat.me/cs50.
C'est donc une rétroaction honnête.
Si vous voulez lui donner au cours de la section, Je reçois un courriel chaque fois que cela arrive.
Nous allons faire une pause un peu, donc je vais regarder à travers les évaluations ensuite.
Si jamais vous avez des commentaires, s'il vous plaît donnez-le moi là-bas.
>> Si vous me donnez des commentaires sur le Q, c'est merveilleux, mais c'est le guide
que vous faites à la fin.
Mais ce sera à la fin de semestre afin Je ne serai pas en mesure de prendre tout cela
rétroaction et la transformer en enseignement vous feriez mieux.
Alors s'il vous plaît, si vous avez une rétroaction, donnez-le moi.
J'adore commentaires.
Retour au FOP, nous recevons des commentaires tout le temps.
>> Vous pouvez me donner des avantages, de bonnes choses, deltas, des choses que je peux améliorer.
Vous pouvez commenter mes tenues.
Ce ne sera pas aussi utile, mais vous êtes bienvenue à commenter tout et
tout.
S'il vous plaît, s'il vous plaît me donner votre avis.
J'apprécie beaucoup et il signifie beaucoup pour moi.
>> Une autre norme, le plaisir.
Nous allons avoir beaucoup de plaisir.
Espérons que dans ce cours, vous aurez avoir beaucoup de plaisir.
Nous aurons des bonbons à la section.
Nous avons de la musique.
Nous obtiendrons espérons connaître une un autre un peu plus, donc je veux
que ce soit une expérience amusante, engageante.
>> Je sais que certains d'entre vous se sont endormis dans les conférences que vous avez eus plus tôt aujourd'hui,
donc j'espère que ça va pas être le cas maintenant.
Et si c'est le cas maintenant, juste ne ronfle pas parce que cela pourrait
être pris en photo.
Sweet.
Vous avez des questions, commentaires ou préoccupations Avant de passer au sujet de tout ce que nous avons
parlé?
Grand.
>> Donc, nous allons aller dans des tableaux premier.
C'est ainsi que vous faites un tableau.
Nous avons vu cela avant.
Vous avez un type de données, vous avez une nom, puis vous avez une taille.
Ici, je crée deux tableaux.
Le premier est un tableau de caractères, et il dispose de 26 places.
Le second est un réseau de scores, et il a trois
des espaces de trois nombres entiers.
Oui?
>> ETUDIANT: Est-ce que toutes ces diapositives disponible quelque part pour nous?
>> JASON HIRSCHHORN: Bonne question.
La question était, sont tous des Ces diapositives disponibles?
Oui.
Toutes ces diapositives seront disponibles, et dans l'avenir, je vais leur envoyer un courriel à
vous avant section.
Mais aujourd'hui, parce que c'est la première semaine, nous avons eu un démarrage tardif.
Donc, normalement, vous aurez ces diapositives, mais ils seront disponibles en ligne et
Je vais te les envoyer pour à droite après la classe.
D'autres questions?
>> Encore une fois, les tableaux sont des boîtes, faute de un meilleur mot, qui détiennent multiple
éléments d'un type de données, et ils sont à côté de l'autre dans la mémoire.
Et là encore, c'est la façon dont vous pouvez faire deux types de tableaux.
>> Donc, après vous avez fait votre tableau avec cette première ligne - Scores int, support
trois, fermer la parenthèse - vous vouloir initialiser.
Vous voulez mettre certaines valeurs à l'intérieur.
Et c'est ainsi que vous mettez certaines valeurs dans il ya, en choisissant simplement la indice et
écrire le nombre.
Tirons cela sur la planche.
Tout le monde peut voir?
Tout le monde peut voir.
Sweet.
>> Alors que va être ma tableau appelé Scores.
Comme vous pouvez le voir, il est trois dimensions.
Il ya trois boîtes à l'intérieur.
Chacun peut adapter ce type de type de données?
>> ETUDIANT: Integer.
>> JASON HIRSCHHORN: Entier dans celui-ci.
Nous avons écrit scores int, et le premier mot est le type de données qui va
aller dans les boîtes dans ce tableau.
Je ne peux donc répondre à trois.
Pourquoi dois-je zéro jusqu'à il sur le plateau?
Pourquoi dit-on score de zéro est égal à 1?
Rappelez-moi votre nom.
>> ETUDIANT: Kurt.
>> JASON HIRSCHHORN: Kurt.
>> L'ÉLÈVE: Oui.
>> JASON HIRSCHHORN: Pourquoi?
>> ETUDIANT: Parce que le premier indice est zéro, on commence à compter à zéro.
>> JASON HIRSCHHORN: Nous commençons donc de comptage à zéro.
C'est exactement ça.
C'est la partie la confusion et le voyage de volonté vous vers le haut, surtout quand vous êtes
en essayant de parcourir les tableaux, que nous ferons dans un instant.
Nous commençons à compter à zéro.
Donc, si je veux me référer à la première boîte, ce n'est pas une boîte.
Malheureusement, ce n'est case zéro.
Le second est une boîte, et dans ce cas, le troisième est encadré de deux.
>> Qu'en est-boîte à trois?
Où est la boîte trois?
Ou si je veux faire scores, support trois, fermer la parenthèse, c'est quoi?
Donc, vous avez dit le caractère nul.
Toutes les autres pensées?
Quel est support de marquer trois support?
>> ETUDIANT: Il n'existe pas vraiment parce que vous ne défini comme scores,
support de trois.
>> JASON HIRSCHHORN: Donc, vous dites il n'existe pas vraiment.
Dans certains cas, lorsque nous avons affaire à cordes, généralement nous mettrons un nul
caractère à la fin.
Nous y reviendrons dans une seconde.
Mais dans ce cas, il a pas de troisième case ici.
Ainsi, la dernière case dans n'importe quel tableau est de taille moins 1.
Donc, si nous avons un tableau de taille n, l' première zone est à zéro, le dernier est
à n moins 1.
Et dans ce cas, il n'existe pas.
Il ya quelque chose ici en mémoire, mais ce n'est pas le nôtre.
Nous ne possédons pas.
Nous n'avons pas demandé pour elle.
Donc, si nous essayons d'y accéder, que nous allons faire un peu, nous allons probablement
avoir des ennuis.
>> Dans ce cas, je initialiser mon tableau avec trois variables.
Nous mettons un un zéro dans la boîte, deux dans la boîte un, et trois dans la boîte deux.
Quelqu'un at-il des questions sur l'initialisation d'un tableau?
>> Donc nous sommes allés tout à l'heure.
Scores, support de trois, fermer la parenthèse, qui n'existe pas.
Nous zéro indexées dans l'informatique, si nous commençons à compter à zéro.
La dernière case à notre disposition, il est la troisième case, mais ça s'appelle boîte
numéro deux.
>> En bas, c'est une alternative moyen d'initialisation de tableaux.
Ainsi, au lieu de créer le tableau d'un ligne, en remplissant la première case, puis
la deuxième case, puis la troisième case, vous pouvez faire tout cela en une seule ligne.
Donc, dans cette ligne, les deux tableaux.
Cela crée le même tableau exact que ce que nous avons créé ici, mais il
juste le fait en une seule ligne.
>> Maintenant, nous avons créé notre tableau.
Habituellement, une fois que vous créez un tableau, vous vouloir faire quelque chose avec elle, que ce soit
qui est le remplir ou obtenir des choses hors de lui et les imprimer sur l'écran.
Dans ce cas, nous allons à travers notre tableau des scores qui nous avons initialisé sur
la première ligne ici en gris.
Et puis sur la deuxième ligne, nous commençons En parcourant la matrice.
Quelqu'un at-il des questions sur la structure d'une boucle?
>> Donc, c'est la boucle.
Nous avons notre condition initiale, puis notre condition finale, puis nous
itération, i, chaque boucle.
Et dans les accolades dans cette situation pour boucle, ce qui se passe si je devais courir
ce programme?
Quelqu'un peut-il me dire ce que nous allions trouver?
[? Matu? ?]
>> MATU: Imprimer tous les résultats sur chaque ligne.
Il imprimer chaque note sur une ligne distincte.
>> JASON HIRSCHHORN: Qu'est-ce exactement serait-il imprimer?
>> ETUDIANT: Il serait imprimer une, puis deux, puis trois.
>> JASON HIRSCHHORN: Exactement.
Il serait imprimer une, puis deux, puis trois, chacun sur des lignes distinctes, car
nous allons dans le tableau et vous voir que le deuxième, le printf
déclaration, scores i.
Donc, dès le premier tour par notre pour boucle, i est égal à zéro, ce qui signifie que nous sommes
obtenir la valeur au score de zéro -
qui, si nous revenons à notre schéma, est un -
et en remplissant -
oh, il est dit c.
Cela devrait être% d.
Je vais corriger cela dans un peu quand Je remets ce fait à vous les gars.
Mais nous présentons un nombre entier de sorte qu'il devrait être% d ici, pas% c.
Qu'est-ce que c% pour?
>> ETUDIANT: Character.
>> JASON HIRSCHHORN: Personnalité, exactement.
Quel est l'autre?
Si vous ne voulez pas faire d% pour un entier, que pouvez-vous faire?
>> ETUDIANT: i.
>> JASON HIRSCHHORN:% i, exactement.
Ainsi, toutes les questions concernant l'itération à travers la matrice?
Donc ce qui arrive si nous faisons cela?
Au lieu de faire i est inférieur à trois, nous n'avons I est moins
supérieur ou égal à trois.
Qu'advient-il lorsque nous courons ce code?
Oui, Annie?
>> ETUDIANT: Ils vont imprimer trucs bizarres sur la quatrième ligne.
>> JASON HIRSCHHORN: Donc vous avez dit, est-il va imprimer des trucs bizarres sur le
quatrième ligne?
Quelqu'un at-il une réponse à sa question?
Donc les chances sont que lorsque nous arrivons à la -
si le quatrième tour à travers notre pour boucle, comme tu le pensais, Annie,
il sera scores support trois, ce qui Nous avons déjà pensé à ne pas
existons, et nous allons essayer et d'accès qui, de l'imprimer
out, de l'utiliser d'une certaine façon.
Donc, l'ordinateur sera probablement en colère contre nous.
Vous avez parfaitement raison.
>> Il pourrait quitter le programme tout à fait.
Il peut imprimer quelque chose vraiment bizarre.
Vous ne pouvez pas dire à coup sûr.
Les chances sont qu'il vont probablement se fâchent contre vous et tout simplement arrêter tout de suite.
>> Mais c'est une erreur commune que vous aurez où vous êtes juste à côté de l'un à
la fin, et c'est un bug qui sera vous tourmenter tout au long de votre codage.
Une façon que je voudrais faire est juste sur un tableau blanc, passer par chaque itération
de la boucle sur la main ou sur papier pour voir ce qui se passe, et puis vous
réaliser généralement, oh, attendez, je ne devrais pas sont allés à inférieur ou
égal à trois.
J'aurais dû m'arrêter à deux, ce qui est ce qui arrive si votre état de santé est moins
de trois.
Des questions jusqu'ici?
Sweet.
>> Donc, vous avez tous vos ordinateurs ouvert.
Nous allons vous donner deux à trois minutes pour écrire un programme qui
crée un tableau avec les nombres entiers un à cinq, puis imprime chaque
entier sur une nouvelle ligne.
Et si vous avez des questions, levez la main.
Je suis heureux de venir par.
Comme je le disais, nous allons prendre trois minutes pour écrire cela.
Tout le monde est OK, si je vais à un nouvelle fenêtre et fermer cette?
>> Je suis désolé si vous n'avez pas eu la chance à la fin, mais nous allons le faire
ensemble maintenant.
Donc, à l'écran, j'ai # include cs50.h, # include stdio.h.
Quelqu'un peut-il me dire ce que ces deux lignes font?
Michael?
>> ETUDIANT: Ils comprennent les bibliothèques qui CS50 fait et que Steve a
enregistré pour vous d'utiliser pour vous faciliter la vie.
>> JASON HIRSCHHORN: Donc, vous avez dit qu'ils inclure les bibliothèques, l'une qui CS50
fait, cs50.h, et qui est juste standard, livré avec
le paquet C, stdio.h.
Qu'entendez-vous inclure les bibliothèques, si?
Pouvez-vous être un peu plus précis?
>> ETUDIANT: Il fait en sorte que vous pouvez utiliser certains mots de code pour avoir un
fonctionner arriver sans avoir à passer et rendre la fonction c-même.
>> JASON HIRSCHHORN: Pouvez-vous me donner un exemple?
>> ETUDIANT: Comme printf est celui que vous pouvez utiliser.
>> JASON HIRSCHHORN: printf.
Donc, vous avez dit printf est l'un de ceux fonctions où plutôt que de devoir
printf écrire sur votre propre est printf inclus réellement dans stdio.h, de sorte que vous
peut simplement l'utiliser et d'assumer que cela va fonctionner.
En stdio.h, si vous avez ouvert ce fichier, serait-il comprendre comment printf
travaux, tout le code pour printf?
Pourquoi êtes-vous secouez la tête?
>> ETUDIANT: Parce que le fichier d'en-tête juste inclut la déclaration de fonction.
>> JASON HIRSCHHORN: Exactement.
Le fichier d'en-tête comprend tout la déclaration de fonction.
Donc, en gros, lorsque vous compilez ce, Faire frapper le comte, que nous ferons dans un
Deuxièmement, le compilateur sait que si vous utilisez printf, il existe printf.
Ça va être défini quelque part.
Ce n'est pas un problème pour vous de l'utiliser.
Et puis, plus tard, il va inclure le uns et de zéros qui contiennent réellement
printf de la mise en œuvre et les fusionner avec votre code.
Comment vous assurez-vous qu'il comprend l' uns et de zéros pour, disons, se string?
>> ETUDIANT: Obtenez chaîne est en cs50.h.
>> JASON HIRSCHHORN: C'est vrai.
Alors, qui dit obtenir chaîne existe, la déclaration de fonction.
Mais alors, les uns et de zéros, les binaires fichier qui contient effectivement le
mise en œuvre de chaîne get?
Comment vous assurez-vous que va avec votre programme?
>> ETUDIANT: passer le linker dans l'argument de ligne de commande.
>> JASON HIRSCHHORN: passer le linker dans l'argument de ligne de commande.
Comment pouvez-vous faire cela?
>> L'ÉLÈVE: C'est la L-line dans le cliquetis
>> JASON HIRSCHHORN: Exactement.
Vous dites-l CS50, non?
Cela inclut les uns et de zéros.
>> Etudiant: Mais Assurez-t- que, pour vous, non?
>> JASON HIRSCHHORN: Exactement.
Assurez-ce que pour vous, mais finalement, vous n'aurez pas faire, ou
vous aurez à faire un faire sur votre propre, de sorte que c'est une
bonne chose à retenir.
Si vous aviez l'intention d'utiliser l'un de ces autres bibliothèques, non seulement vous avez
à écrire # include et puis la bibliothèque.
Vous devez également relier po
Et ces deux choses sont différentes. -L CS50 est différent
que # include cs50.h.
>> Ensuite, nous avons int main vide accolades, et maintenant nous allons Code
à l'intérieur principale.
La première ligne que j'ai ici est un commentaire qui dit, créer un tableau
ints avec un à cinq.
Quel est le bon mot pour décrire ce que je avoir en ce moment sur l'écran, juste
commentaires à l'intérieur principal?
Comment appelons-nous cela?
>> ETUDIANT: Pseudocode.
>> JASON HIRSCHHORN: Pseudocode.
Merci, Jeffrey.
C'est tout à fait exact.
Pseudocode.
Avez-vous vu les gars pseudo avant?
Levez la main si vous avez déjà utilisé pseudo-problème réglé avant un.
Environ la moitié d'entre vous.
>> Je vous recommande fortement d'utiliser pseudo pour briser les problèmes en
plus petit, plus facile à mordre des morceaux.
Aussi, si vous faites le pseudo, vous que vos commentaires soient déjà largement
intégré, de sorte que vous n'avez pas à revenir en arrière et essayer de comprendre
ce que vous faisiez.
Alors quelqu'un peut me donner cette première ligne pour créer un tableau avec une ints
à cinq?
Vous?
>> ETUDIANT: Int, puis vous pouvez appeler peu importe le nombre, puis carré
tranche de cinq ans.
>> JASON HIRSCHHORN: numéros Donc int, carré support de cinq ans.
>> ETUDIANT: Equals, et puis des accolades.
>> JASON HIRSCHHORN: Equals, accolades.
>> ETUDIANT: Un, deux, trois, quatre.
>> JASON HIRSCHHORN: Un, deux, trois, quatre, cinq.
>> ETUDIANT: Et puis des accolades et puis point-virgule.
>> JASON HIRSCHHORN: Et bouclés accolades et les points-virgules.
Excellente.
Imprimez chaque int sur une nouvelle ligne.
Quelqu'un d'autre peut donner moi ce code, s'il vous plaît?
[? Matu? ?]
Allez-y.
>> ETUDIANT: Pour (
>> JASON HIRSCHHORN: Pour (
>> ETUDIANT: int i = 0
>> JASON HIRSCHHORN: int i = 0
>> ETUDIANT: Point-virgule i moins de cinq ans.
>> JASON HIRSCHHORN: Point-virgule, i inférieur à 5.
>> ETUDIANT: Point-virgule, i + +.
>> JASON HIRSCHHORN: Point-virgule, i + +.
>> ETUDIANT: parenthèses fermées, puis accolade ouverte.
>> JASON HIRSCHHORN: parenthèses fermées et deux accolades.
A l'intérieur des accolades?
>> ETUDIANT: Et puis printf "% d / n"
>> JASON HIRSCHHORN: Désolé, tenir le coup.
Printf "% d / n, citation fermé.
>> ETUDIANT: Et puis devis fermé, virgule, comte, support i.
>> JASON HIRSCHHORN: Virgule, comptage, le support i.
>> ETUDIANT: Désolé, numéros support i.
>> JASON HIRSCHHORN: Numbers, support i.
>> ETUDIANT: Désolé.
Et puis fermé entre parenthèses, virgule.
>> JASON HIRSCHHORN: Fermé parenthèses, virgules.
Je vais mettre ça.
Nous allons faire nombre.
Et comment puis-je lancer comte?
>> ETUDIANT: Backslash.
>> ETUDIANT: Point barre oblique -
>> JASON HIRSCHHORN:. / Compter, exactement.
Je vous remercie. . / Compte.
Un, deux, trois, quatre, cinq sur les nouvelles lignes.
On dirait que ça a marché.
Oui, Noah?
>> ETUDIANT: Vous pouvez également faire inférieure ou égal à quatre, comme i est inférieur à
ou égale à quatre?
Yat-il un avantage à faire moins de cinq, ou tout simplement une façon différente de
écrire?
>> JASON HIRSCHHORN: Donc la question vous est aurait pu faire i est inférieur ou
égal à quatre au lieu de i est inférieur à cinq.
Cela aurait-il travaillé les mêmes?
>> ETUDIANT: Il devrait.
>> JASON HIRSCHHORN: Oui.
Il serait tout à fait pu travailler le même.
Stylistiquement, il est généralement inférieure, et vous verrez dans une seconde lorsque
nous n'avons chaînes, vous pouvez utiliser quelque chose appelé strlen, que vous avez vu
avant, pour obtenir la longueur de la chaîne.
Et vous ne pouvez pas faire moins que ou égale strlen.
Vous pourriez faire moins ou égal strlen moins un.
Donc, c'est tout de même mieux à faire moins que strlen.
Oui?
>> ETUDIANT: Et dans le réel quiz, faire nous devons fournir des commentaires sur notre
Code ainsi?
>> JASON HIRSCHHORN: La question était en quiz, vous faire
avoir à fournir des commentaires?
Donc, nous allons parler davantage de questionnaires lorsque ils viennent, mais en général, une bonne
règle est lorsque vous êtes l'écriture du code, fournir des commentaires.
Si vous obtenez le code erroné, mais le commenter droit, vous pourriez obtenir un certain
crédit à la fois de moi si je me corrigeait vous sur un ensemble de problèmes ou sur un quiz.
Donc, les commentaires sont toujours bon à fournir.
Sweet.
Compter.
Excellent travail.
Passons.
>> Strings.
Strings.
Nous avons vu cela avant dans la leçon.
Cela a soufflé mon esprit quand je d'abord trouvé cela.
Il n'a probablement pas sauter de n'importe qui l'esprit ici, mais c'est OK.
>> Les chaînes sont des tableaux de caractères et ils finissent avec, comme vous le disiez plus tôt,
la terminaison nulle, ce qui est-ce / 0 caractère.
Si nous allons dessiner une ligne dans la conseil d'administration, nous allons dessiner ici.
Alors combien de temps est cette chaîne?
Désolé.
Combien de temps dure cette chaîne?
>> ETUDIANT: [inaudible].
>> JASON HIRSCHHORN: Quatre?
Pourquoi est-il quatre?
>> ETUDIANT: Parce que la cinquième place est pour le caractère nul.
>> JASON HIRSCHHORN: Donc, la cinquième place est pour le caractère nul.
Donc, si je devais courir sur strlen cela, il me donnerait quatre.
Corriger.
Et l'ensemble, cependant, si je devais initialiser ce tableau, combien de places
aurais-je demander de plus?
>> ETUDIANT: Cinq.
>> JASON HIRSCHHORN: Cinq.
Je dois demander des cinq, mais je ne peux seulement mettre quatre personnages ici
parce que je dois mettre cette null terminaison sur la fin.
Nous allons donc écrire dans "ohai» et mettre la terminaison nulle à la fin.
Nous disons ceci est une chaîne s est égal à cela.
Quel est l étrier zéro?
s tranche zéro, Annie?
>> ETUDIANT: O.
>> JASON HIRSCHHORN: O, exactement. s un support?
s tranche de cinq?
>> ETUDIANT: N'existe pas.
>> JASON HIRSCHHORN: N'existe pas.
Exactement.
Cool.
Une question sur votre compréhension chaînes comme des tableaux de caractères?
OK, alors.
Un programme plus pour vous les gars.
Ecrire un programme qui demande à l'utilisateur pour une chaîne imprime ensuite chaque
caractère sur une nouvelle ligne.
Prenons donc trois minutes pour écrire ce programme, et puis nous allons coder il
en tant que groupe.
>> Désolé.
Avez-vous besoin de voir cela?
>> ETUDIANT: Non
>> JASON HIRSCHHORN: OK.
Prenons une minute pour coder cela, ou au moins se lancer sur elle.
>> Ainsi, vous pouvez continuer à travailler, mais je vais de commencer à aller à travers elle.
Donc, comme avant, j'ai à l'écran # Include cs50.h, # include stdio.h.
int void main.
A l'intérieur des accolades de principaux, j'ai deux commentaires, pseudocodes.
L'un est demandé pour une chaîne de l'utilisateur.
La seconde est d'imprimer sur chaque caractère sur une nouvelle ligne.
Alors, Anna, pouvez-vous me donner demande pour une chaîne de l'utilisateur?
>> ETUDIANT: printf.
>> JASON HIRSCHHORN: printf?
>> L'ÉLÈVE: Oui.
(
>> JASON HIRSCHHORN: (
>> ÉTUDIANTS: "donnez-moi une corde.
>> JASON HIRSCHHORN: «donner moi un str - oups -
chaîne.
>> ETUDIANT: / n ") virgule.
>> JASON HIRSCHHORN: Fin de la chaîne, Les fermetures de parenthèses, virgules.
>> L'ÉLÈVE: Oui.
Et puis la ligne suivante, string s = Get chaîne.
>> JASON HIRSCHHORN: String s = Get chaîne.
>> L'ÉLÈVE: Oui.
Et puis ()
>> JASON HIRSCHHORN: ()
>> ETUDIANT: Point-virgule.
>> JASON HIRSCHHORN: Point-virgule.
Fantastique.
Donc, je vais me faire une chaîne et Je vais l'enregistrer dans quoi?
Quelle est la variable appelée que vous avez créé?
>> ETUDIANT: String s.
>> JASON HIRSCHHORN: La variable est appelée s.
Il est de type chaîne.
Exactement.
La prochaine chose que nous voulons est imprimer chaque caractère sur une nouvelle ligne.
Qui peut me donner ce code?
[Inaudible]?
Pouvez-vous me le donner?
>> ETUDIANT: Bien sûr.
>> JASON HIRSCHHORN: Faisons-le.
Et désolé.
Je n'aime pas répéter ce que vous dites parce que vous êtes bien faire les choses, mais je
avoir à le répéter afin que quand ils transcrire cela, ils peuvent obtenir tous
le texte sur les transcriptions.
Ainsi, vous pouvez juste continuer à parler.
Malheureusement, je n'ai pour le dire sur vous.
Je suis désolé, mais -
>> L'ÉLÈVE: C'est très bien.
Pour int i = 0
>> JASON HIRSCHHORN: Pour int i = 0
>> Etudiant: Je inférieure -
>> JASON HIRSCHHORN: Point-virgule.
>> ETUDIANT: Avant cela, peut-on mettre un variable, de sorte que vous obtenez la longueur du nom int?
>> JASON HIRSCHHORN: Oh, vous n'avez pas vouloir mettre la virgule?
OK.
Alors, que voulez-vous faire après zéro?
>> Etudiant: Je veux obtenir l' longueur de la chaîne de l'art et
définir ce à une variable?
>> JASON HIRSCHHORN: OK, Alors, comment dois-je faire cela?
>> Etudiant: Ainsi vous faites longueur int =
>> JASON HIRSCHHORN: int length =
>> ETUDIANT: S-T-R-L-E-N.
>> JASON HIRSCHHORN: S-T-R-L-E-N -
>> ETUDIANT: de l'art.
Entre parenthèses.
>> JASON HIRSCHHORN: (s).
>> ETUDIANT: Et puis je pense que vous devez mettre une virgule entre les deux ints.
>> JASON HIRSCHHORN: Un point-virgule après zéro?
>> ETUDIANT: Ouais.
Ensuite, mettez un point-virgule après cela, et vous dites, je inférieure à la longueur.
i inférieure à la longueur, ce qui est la variable.
>> ETUDIANT: Et puis virgule.
>> JASON HIRSCHHORN: Point-virgule.
>> ETUDIANT: i + +.
>> JASON HIRSCHHORN: i + +.
Il ya notre boucle.
OK, à l'intérieur de la boucle.
>> ETUDIANT: Et puis faire printf.
>> JASON HIRSCHHORN: printf.
>> ÉTUDIANTS: Les supports.
>> JASON HIRSCHHORN: les parenthèses, guillemets.
>> ETUDIANT: Parenthèses, citations,% c / n.
>> JASON HIRSCHHORN:% c, OK.
>> ETUDIANT: / n.
>> JASON HIRSCHHORN: / n.
>> ETUDIANT: citations fermés.
>> JASON HIRSCHHORN: citations fermés.
>> ETUDIANT: Virgule.
>> JASON HIRSCHHORN: Virgule.
>> ETUDIANT: S.
>> JASON HIRSCHHORN: S.
>> ETUDIANT: Bracket i.
>> JASON HIRSCHHORN: Bracket i.
>> ETUDIANT: Et puis parenthèses fermées.
>> JASON HIRSCHHORN: parenthèses fermées.
>> ETUDIANT: Et puis virgule.
>> JASON HIRSCHHORN: Point-virgule.
Fantastique.
Alors sauvons cela.
Assurez-vous épeler.
Oh boy.
J'ai un couple d'erreurs.
Première erreur à la ligne 11, il est dit: attendu expression, et c'est donner
me une erreur que le second int, il ya l'erreur.
Il ya une erreur autour.
Est-ce que quelqu'un sait ce que c'est une erreur?
Kurt?
>> Etudiant: Je pense qu'il est censé être une virgule et non un point-virgule.
>> JASON HIRSCHHORN: OK, une virgule au lieu d'un point-virgule.
Alors est-ce que tout ce que nous devons corriger?
>> ETUDIANT: Non
>> JASON HIRSCHHORN: Quoi d'autre devons-nous résoudre ce problème?
>> ETUDIANT: Nous devons comprendre .
>> JASON HIRSCHHORN: Inclure .
Où dois-je inclure cela?
>> ETUDIANT: Même endroit que vous, y compris les autres trucs, droit
après incluent stdio.h.
>> JASON HIRSCHHORN: Voyons voir si cela fonctionne d'abord parce que généralement, j'aime
de fixer d'abord une chose, puis exécutez , et puis voir les erreurs que nous obtenons.
Donc, nous allons effacer le terminal avec contrôle n, nous allons faire réalisez sort.
Donc, une autre erreur sur la ligne 11.
Virgule prévue.
Et je reçois encore erreurs sur cette ligne.
Donc, il ne m'a pas donné un message d'erreur indiquant qu'il ne comprend pas ce strlen est,
mais il me donne des erreurs sur cette ligne, alors quoi d'autre qui ne va pas?
Marquez?
Marcus.
>> ETUDIANT: Avez-vous d'enlever la deuxième déclaration int?
>> JASON HIRSCHHORN: Retirer le second int.
Essayons cela.
Maintenant, effacer le terminal.
Assurez-vous épeler.
Erreur.
Déclarant implicitement bibliothèque fonction strlen.
Alors maintenant, nous ne voyons que l'erreur.
Que devons-nous inclure?
>> ETUDIANT: .
>> JASON HIRSCHHORN: Inclure , nous ferons # include au sommet
de l'écran.
Sauvons, faire épeler.
Maintenant compilé.
Encore une fois, les choses dont nous avions besoin pour rappeler la ligne 12 dans notre boucle pour quand
nous sa mise en place, int i = 0, longueur = strlen (s).
>> Il s'agit d'une stratégie fantastique.
Le style de ce qui est excellent, l' conception de ce qui est excellent.
Nous pouvons entrer dans toutes ces raisons plus tard, mais de cette façon vous ne devez appeler
strlen fois au lieu de chaque fois que vous exécutez dans la boucle.
Cependant, vous devez utiliser une virgule là et vous n'avez pas besoin de nouveau int.
Si vous êtes à la fois ceux déclarant variables ensemble, vous
n'ont pas besoin de nouveau int.
Et puis, si vous allez utiliser strlen, ce qui est une autre bibliothèque
fonction non inclus dans stdio.h ou cs50.h, font
N'oubliez pas d'inclure string.h.
Kurt?
>> ETUDIANT: Alors si vous n'avez pas besoin d' dire ce type longueur est-ce que cela
signifie pas qu'il doit être un int?
Vous ne pourriez pas avoir deux différents types là-bas?
>> JASON HIRSCHHORN: vous pouvez donc avoir deux types différents.
La longueur est un int ici, cependant.
La longueur est un int parce que c'est virgule et puis la même chose.
>> Etudiant: Ainsi il suppose que ça va d'être le même que le premier?
>> JASON HIRSCHHORN: Exactement.
Nous n'allons pas le faire maintenant, mais vous peut inclure deux variables sur le
même ligne en utilisant un type de données.
Donc, int x, y créeraient deux variables.
Donc, int x, y, si nous faisons cela, il donne me d'une sortie variable x et y, car
nous ne les utilisons pas.
Donc, mettre vide avant est juste un astuce amusante, si vous n'utilisez pas
quelque chose, l'utiliser.
Mais comme vous le voyez, je crée X et Y sur la même ligne avec une virgule.
Il s'agit de créer deux entiers juste là.
Alors, oui, tout à fait possible de créer deux choses sur la même ligne
séparés par une virgule.
Débarrassons-nous de ceux qui, cependant.
>> Donc, il ya sort.
Merci les gars pour elle codant pour nous.
Faisons encore une fois, exécutez-le.
Donnez-moi une corde.
[Inaudible], vous avez plus de celui-ci.
Quelle est la chaîne?
>> ETUDIANT: Bonjour.
>> JASON HIRSCHHORN: Bonjour.
H-E-L-L-S, chacun des caractères sur une ligne.
Regarde grand.
Nous allons l'exécuter à nouveau.
En allant toujours à vérifier pour les cas de coin.
Qu'est-ce qu'un bon dossier de coin pour vérifier?
>> ETUDIANT: Un numéro?
>> JASON HIRSCHHORN: Un nombre.
Donc je mettrai en 1, et il affiche 1.
Ça ne demande pas de lettres, de sorte il semble que le nombre travail.
Bonne affaire de coin pour vérifier.
Quel est un autre bon coin cas à vérifier?
>> ETUDIANT: une chaîne vide.
>> JASON HIRSCHHORN: Hm?
>> ETUDIANT: Comme une chaîne vide.
>> JASON HIRSCHHORN: chaîne vide.
Donc, il ne faut pas mettre en rien.
Et ce qui est imprimé?
>> ETUDIANT: Rien.
>> JASON HIRSCHHORN: Rien.
On dirait que cela fonctionne.
Vous pouvez essayer d'autres cas de coin, mais généralement chiffres, une donnée est différente
grande d'essayer, ainsi est rien.
Rien, zéro, les négatifs sont toujours de grandes choses pour essayer de choses que vous
devraient essai, les choses vont certainement nous tester pour et chèque de 50 testera pour.
Une question sur spell.c?
>> OK, nous allons tête en arrière.
J'ai une autre programme pour vous les gars à écrire.
C'est ce qu'on appelle students.c.
Il s'agit d'un programme qui demande à l'utilisateur cinq noms, puis choisit aléatoirement
et imprime un des noms.
Ce programme est un peu plus impliqués que les deux derniers, nous avons écrit,
alors pourquoi ne pas nous prendre cinq minutes pour coder individuellement, puis nous
coder en tant que groupe.
>> Ce programme comporte aussi des choses vous n'avez pas vu avant, donc si
vous avez une question sur comment faire Je fais cela, levez la main.
Je viendrai et vous signale dans la bonne direction.
Mais nous sommes aussi faire parce que ce sera un bon moyen d'introduire une certaine
sujets qui sont difficiles.
>> Donc, cela fonctionne, non?
>> ETUDIANT: Ouais.
>> JASON HIRSCHHORN: Chaque fois que vous tournez dans un Jeu de problème, il ya plusieurs façons de faire
, mais certains sont plus élégant que d'autres.
Laissez-nous plonger po
# Include cs50.h.
# Include stdio.h.
void main int, accolades.
A l'intérieur des accolades, J'ai deux observations.
La première est, demandez à l' utilisateur pendant cinq noms.
Le second est, choisissez au hasard et imprimer l'un des noms.
Donc, nous allons faire le premier pas, demandez l'internaute pendant cinq noms.
Qui a demandé à l'internaute pendant cinq noms et peut me dire comment faire?
Seules deux personnes ont fait la première partie.
Trois personnes ont fait la première partie.
Quatre, cinq.
Tom, comment faites-vous?
>> ETUDIANT: Vous souhaitez déclarer une chaîne et puis le nom, tranche de cinq ans.
>> JASON HIRSCHHORN: String nommer tranche de cinq ans.
Alors, quelle est cette ligne faisant, Nom chaîne tranche de cinq?
>> ETUDIANT: Vous souhaitez déclarer un tableau de chaînes.
>> JASON HIRSCHHORN: Il s'agit d' un tableau de chaînes.
Combien de chaînes vont à m'intégrer ici?
>> ETUDIANT: Cinq.
>> JASON HIRSCHHORN: Cinq.
Excellente.
Nous allons l'appeler noms parce nous allons avoir plusieurs.
OK, maintenant?
>> ETUDIANT: Et puis vous avoir une boucle for -
>> JASON HIRSCHHORN: Pour boucle.
>> ETUDIANT: - pour i = 0.
>> JASON HIRSCHHORN: for (int i = 0.
>> ETUDIANT: Point-virgule.
>> JASON HIRSCHHORN: Point-virgule.
>> Etudiant: Je inférieur à cinq.
>> JASON HIRSCHHORN: J'ai moins de cinq ans.
>> ETUDIANT: Point-virgule.
>> JASON HIRSCHHORN: Point-virgule.
>> ETUDIANT: i + +.
>> JASON HIRSCHHORN: i + +.
>> ETUDIANT: Et puis parenthèses fermées.
>> JASON HIRSCHHORN: parenthèses fermées, et puis quelques accolades.
A l'intérieur des accolades?
>> ETUDIANT: Et puis printf.
>> JASON HIRSCHHORN: printf.
>> ETUDIANT: parenthèses ouvertes, name% d.
>> JASON HIRSCHHORN: Pardon?
>> ETUDIANT: Nom.
>> JASON HIRSCHHORN: Nom.
>> ETUDIANT: Et puis espace, puis% d.
>> JASON HIRSCHHORN: Nom, l'espace,% d.
>> ETUDIANT: Et puis / n, puis fermé.
>> JASON HIRSCHHORN: nom Donc, l'espace, % D / n, entre parenthèses fermées.
>> ETUDIANT: Virgule, i + 1.
Je suis désolé.
Citation fermé, puis virgule, i +1.
>> JASON HIRSCHHORN: Fermé citation, virgule, i +1.
>> L'ÉLÈVE: Oui.
Et puis la ligne suivante -
>> JASON HIRSCHHORN: i + 1.
>> L'ÉLÈVE: Oui.
Et puis la diapositive suivante est des noms support i.
>> JASON HIRSCHHORN: ligne suivante est des noms support i.
>> ETUDIANT: = get chaîne.
>> JASON HIRSCHHORN: = Get -
capitale G-E-T -
chaîne.
Oops, désolé.
>> ETUDIANT: Ouvert, entre parenthèses fermées puis -
>> JASON HIRSCHHORN: ouvert, fermé parenthèse.
>> ETUDIANT: Point-virgule.
>> JASON HIRSCHHORN: Point-virgule.
OK, si vous initialiser le tableau de cordes, les noms, puis passent par un
pour la boucle, et cinq fois d'imprimer certains demandera à l'utilisateur et ensuite le stocker
cinq cordes.
Quelqu'un at-il des ajustements à ce sujet?
Tom, je pense que tout le monde d'accord avec vous.
Semble assez bon.
OK.
Pourquoi avez-vous i +1, si?
>> Etudiant: Je veux dire, n'a pas être, mais i +1 de sorte qu'il est
nom d'une de nommer cinq.
Sinon, il serait nom zéro pour nommer quatre.
>> JASON HIRSCHHORN: Donc, vous n'avez i +1 parce que sinon il aurait
imprimé zéro à quatre, car c'est comme ça que les ordinateurs pensent, mais les humains
ne lis pas vraiment comme ça.
C'est une autre chose vous rencontrerez.
Parfois, lorsque vous imprimez quelque chose à l'utilisateur, vous aurez envie de faire un
peu plus joli, et de faire i +1 dans ce cas est une
moyen de faire encore mieux.
>> Je vois aussi cinq fois, le nom de chaîne est de cinq, i est inférieur à cinq.
Je sais où vous avez obtenu les cinq.
Vous avez obtenu de me dire vous cinq noms.
Mais si nous voulions rendre le code un peu plus robuste, une chose que nous
pourriez faire est ici, en dehors de int, nous pourrions faire quelque chose comme ça,
# Define, et nous pourrions faire NOMS 5.
>> Donc, fondamentalement, partout où j'écris capitale N, A majuscule, capitale M, E majuscule,
S majuscule, cette chaîne, il remplacera qui avec 5 dans le code.
Ou disons simplement appeler - nous allons il suffit d'appeler le NOMBRE.
Je suis donc définir tous les bouchons Nombre à 5.
>> Alors maintenant, chaque fois que j'ai le numéro 5, je peut le remplacer avec tous les capuchons NOMBRE.
Et maintenant, si je veux changer le nombre des noms, tout ce que je dois faire est
cette seule ligne, la ligne quatre, où j'ai # Define numéro 5, changer cela en 10,
ou changer cela à 4.
Lorsque votre code est long, plus vous n'êtes pas va se souvenir de tous les endroits que vous
mettez combien de noms que vous vouliez, et dans Afin de vous de ne pas manquer un, c'est
une bonne façon de le faire, pour trouver quelque chose là-haut, puis il suffit d'utiliser cette phrase
partout dans votre code.
Marcus?
>> ETUDIANT: Est-ce que stylistiquement préféré que de définir globalement un
n constants?
>> JASON HIRSCHHORN: Alors, c'est que stylistiquement préféré que le monde
la définition d'une constante n?
Donc, vous dites que vous pourriez faire, int nombre = 5?
>> ETUDIANT: Ont-ils consonnes en C ou pas?
>> JASON HIRSCHHORN: Ou const - à parts égales.
Donc, vous dites juste une variable globale?
>> ETUDIANT: Ouais.
>> JASON HIRSCHHORN: Donc, stylistiquement, il n'y a pas nécessairement un droit
réponse, mais deux d'entre eux sont mieux que de jeter ces aléatoire
nombre tout au long de votre code.
Nous les appelons les nombres magiques.
Quand je regarde votre code ou lorsque quiconque a lu à travers elle, ils
ne veulent pas seulement ces nombres aléatoires qui n'ont pas de sens.
Même le nombre 26, qui est généralement le nombre de lettres dans l'alphabet,
il est préférable de définir ALPHABET-haut et enregistrer le numéro 26 dans cette chaîne,
si cela fait sens.
>> Ou sur un problème posé, plutôt que - encore une fois, nous n'avons pas parlé de cela à
le temps, mais au lieu de simplement jeter dans un 25 partout ou un 10, vous pouvez
enregistrer le numéro 25 comme quart ou 10 comme DIME, et qui le rend plus facile pour les
quiconque a lu dans votre code à comprendre pourquoi vous avez choisi ce nombre.
Et aussi pour vous, si jamais vous voulez mettre à jour votre code, cela rend un peu
plus robuste.
Ouais?
>> ETUDIANT: Est ce code va également être disponible pour nous après?
>> JASON HIRSCHHORN: Tous ces codes que nous avons écrit ensemble sont
va être envoyé par courriel à vous les gars et disponible.
Oui.
Donc, demander à l'utilisateur pendant cinq noms.
Choisir au hasard et imprimer un des noms.
Qui a fait cette ligne?
C'est la ligne la plus délicate ici.
Désolé, Tom.
Vous avez fait un très bon travail, mais c'est un peu plus compliqué.
Marcus, aller de l'avant.
>> ETUDIANT: Eh bien d'abord, vous allez besoin d'inclure stdlib.h et time.h.
>> JASON HIRSCHHORN: Donc vous dites à le haut, comprend deux bibliothèques.
Vous voulez que je vous incluez S-T-D-L-I-B point H, la bibliothèque standard, et ce
était l'autre?
>> ETUDIANT: Time.h.
>> JASON HIRSCHHORN: # include time.h.
Donc, ce sont deux autres bibliothèques.
Je suppose que maintenant, nous allons utiliser les fonctions qui sont contenues dans celles-ci
deux, ce qui explique pourquoi vous pour les inclure?
>> ETUDIANT: Alors, vous êtes le premier allez vouloir écrire srand.
>> JASON HIRSCHHORN: srand.
>> ETUDIANT: (time (0)
>> JASON HIRSCHHORN: Désolé.
Srand (time (
>> ETUDIANT: 0.
>> JASON HIRSCHHORN: 0.
>> ETUDIANT:)), point-virgule.
>> JASON HIRSCHHORN: Une autre parenthèse fermée?
Virgule.
Je vais juste remplacer votre zéro avec NULL.
Ça va faire la même chose, mais généralement, vous verrez NULL, ce qui
nous en parlerons dans une seconde ligne.
>> ETUDIANT: Stylistiquement mieux?
>> JASON HIRSCHHORN: Généralement, les gens NULL droit, mais même chose.
>> ETUDIANT: Et puis le nom int.
>> JASON HIRSCHHORN: nom Int.
>> ETUDIANT: =
>> JASON HIRSCHHORN: =
>> ETUDIANT: Rand.
>> JASON HIRSCHHORN: Rand.
>> ETUDIANT: ()
>> JASON HIRSCHHORN: ()
>> ETUDIANT: nombre Modulo.
>> JASON HIRSCHHORN: Quel est modulo?
Le caractère?
Le caractère pour cent?
>> ETUDIANT: caractère de pourcentage.
Modulo numéro que vous avez défini en haut.
>> JASON HIRSCHHORN: Modulo NOMBRE.
>> ETUDIANT: Et puis virgule.
>> JASON HIRSCHHORN: Point-virgule.
>> ETUDIANT: Et puis nouvelle ligne, printf.
>> JASON HIRSCHHORN: printf.
>> ETUDIANT: (
>> JASON HIRSCHHORN: (
>> ÉTUDIANTS: "
>> JASON HIRSCHHORN: "
>> ETUDIANT:% s / n
>> JASON HIRSCHHORN:% s / n
>> ÉTUDIANTS: "
>> JASON HIRSCHHORN:% s / n "
>> ETUDIANT: Virgule, noms d'espace.
>> JASON HIRSCHHORN: Space -
>> ETUDIANT: Oh, je suppose, ce avons-nous l'appelons ici?
>> JASON HIRSCHHORN: Nous l'avons appelé noms.
>> ETUDIANT: support Open, nom.
>> JASON HIRSCHHORN: Ouvert support, nom.
>> ETUDIANT: support fermé.
>> JASON HIRSCHHORN: support fermé.
>> ETUDIANT:)
>> JASON HIRSCHHORN:)
>> ETUDIANT: Point-virgule.
>> JASON HIRSCHHORN: Point-virgule.
OK, nous allons sauver.
Faisons de ce code.
Étudiants.
Nous allons exécuter ce code.
Étudiants.
Non / étudiant.. . / Étudiants.
Nom d'un.
Nous dirons David.
Nommez deux, RJ.
Nommez trois, Rob.
Nom quatre, Lucas.
Nom de cinq ans, Joseph.
Et puis il imprime Joseph à nouveau.
>> Alors permettez-moi de passer ce message.
Permettez-moi de faire les mêmes noms.
David, RJ, Rob, Lucas, Joseph.
Et il me donna à David ce moment.
Alors, j'ai fait la même chose, mais il a donné moi une chose différente, et c'est
parce que, bien sûr, nous demandons pour un nom aléatoire.
Donc, je pense, basé hors de moi errance autour de la salle, que la plupart des gens
probablement obtenu la première partie droite, mise en place de ce tableau, puis se
tous les noms.
Je parle des lignes 10 à 16.
Mais les lignes 18 à 21 ne sont probablement certaines choses que vous n'avez pas vu avant,
nous allons donc passer par ceux-ci.
>> Cette ligne, srand temps NULL est essentiellement -
Désolé, Sautons une ligne, rand ().
Cela vous donne un nombre aléatoire, un nombre aléatoire.
Et si vous frappez rand de l'homme, qui beaucoup d'entre vous a fait -
M-A-N espace R-A-N-D -
dans le terminal comme cela, M-A-N espace R-A-N-D, appuyez sur Entrée.
Vous viendriez-vous au manuel et serait capable de lire que le rand
Sorties de commande num octets pseudo-aléatoires après l'ensemencement du nombre aléatoire
Générateur de fois.
>> C'est donc une description.
C'est ce que rand fait, donne vous un nombre aléatoire lorsque
vous appelez cette fonction.
Malheureusement, ce n'est pas vraiment aléatoire parce que si vous appelez simplement aléatoire
sans l'avoir des semences, certains point de départ, il sera toujours choisir
le même et il utilise une formule pour déterminer le prochain.
Donc, si vous appelez rand, il va juste vous donner la même chose.
Il sera très prévisible.
Il sera effectivement pas être aléatoire.
>> Donc ce que nous devons faire, par Marcus instructions à moi, étaient rand de semences
avec autre chose, c'est ce qui la fonction srand fait.
Elle graines rand avec quelque chose d'un peu plus aléatoire de la même chose, et
il ensemencement avec le temps NULL, ce qui est, tout simplement, par convention, le courant
temps en secondes.
>> Donc, vous êtes en supposant que tout le monde n'est pas va exécuter le code à l'exact
même seconde, il est donc fort à parier que temps NULL va être différent
chaque fois que le code est exécuté.
Fort à parier qu'ainsi, srand rand volonté de semences avec quelque chose de différent chaque
fois.
Donc, par convention, lorsque nous faisons voulons une nombre aléatoire, nous écrivons cette ligne,
srand temps NULL, pour nous donner une bien semence plus aléatoire, puis nous courons
rand, ce qui nous donne un nombre aléatoire.
Ouais?
>> ETUDIANT: Pouvez-vous dire ce que vous voulez dire par graines?
>> JASON HIRSCHHORN: Seed comme dans -
si rand va prendre un certain nombre et il va utiliser une partie
formule pour y arriver.
Donc, il va commencer par quelque chose et puis la transformer en quelque chose basé
hors de cette formule.
Si vous lui donnez toujours la même chose, il va toujours tourner dans le
même chose.
Alors que la première chose que vous donner c'est la semence.
Donc, vous voulez lui donner quelque chose différent de commencer avec, et il
va le transformer en quelque chose de différent.
>> Et puis finalement, la ligne 20, ce% est appelé
modulo, et qui est source de confusion.
C'est quelque chose qui est un peu différent ici que vous n'avez pas vraiment
avoir en mathématiques de la vie réelle.
Mais essentiellement, quand vous prenez un géant nombre et vous divisent en C, ce qui
arrive à la fin?
>> ETUDIANT: Il est tronqué.
>> JASON HIRSCHHORN: Il est tronqué.
Donc 20 divisé par 3, c'est quoi?
Qu'est-ce que le retour à vous, 20 divisé par 3.
Désolé, 10 divisé par 3.
Qu'est-ce que revenir à vous?
>> ETUDIANT: [inaudible].
>> JASON HIRSCHHORN: 10 divisé par 3 seulement renvoie 3, pas 3 reste 1.
Alors, que 10 modulo 3 retours est tout le reste, 1.
Donc, si vous voulez savoir ce que 10 divisé par 3 en fait c'était, vous le feriez
faire 10 divisé par 3, vous obtiendrez votre 3, et alors vous feriez 10 modulo 3, et
vous obtiendrez un 1.
Donc, vous rendriez compte que 10 divisé par 3 est égal à 3, le reste 1.
>> Et dans cette ligne, rand pourrait être n'importe quel nombre entier, pour l'essentiel.
Donc modulo dit, diviser par nombre, qui est dans ce cas 5.
Et si jamais vous divisez par un nombre, le entier doit toujours être inférieur à
ce nombre.
Donc si vous êtes en divisant par un nombre de 5, le reste va toujours être
zéro à quatre.
C'est juste la façon dont le calcul fonctionne.
>> Ainsi, un grand nombre moduloed par un plus petit Numéro reviendra toujours
reste et sera toujours retourner une nombre qui est inférieur au nombre que vous
divisé par.
Quelqu'un at-il des questions sur modulo, car il sera très,
très pratique, donc je veux m'assurer tout le monde comprend-il?
Cool.
Et nous avons vu que ce programme a fonctionné.
OK, passer.
>> Alors, la prochaine, nous allons entrer dans fonctions, et nous allons aller
le reste de ce genre de choses assez rapidement parce que je veux apprendre à
arguments de ligne de commande.
Donc, les fonctions sont essentiellement, Comme vous l'avez vu, les boîtes noires.
Ils prennent les choses dans appelées paramètres, ils font quelque chose pour eux, soit
modifier ou créer des effets secondaires, et enfin, ils crachent
quelque chose, ce qui est la valeur de retour.
Quelqu'un peut-il me donner une raison pourquoi nous devrions utiliser les fonctions?
Il ya quelqu'un?
Une raison pour laquelle nous aimerions utiliser les fonctions?
N'importe qui?
J'ai vu deux mains.
Ce qui est une bonne raison?
Marcus?
>> ETUDIANT: Si vous devez appeler le même morceau de code plusieurs fois.
>> JASON HIRSCHHORN: OK, si vous avez besoin d'appeler le même morceau de
coder plusieurs fois.
Jeff, avez-vous une autre raison?
>> ETUDIANT: Juste pour que vous pouvez coder moins.
>> JASON HIRSCHHORN: Vous pouvez coder moins.
Droit.
Si vous voulez faire quelque chose de beaucoup -
dans le code précédent, je pourrais avoir écrite obtenir string cinq fois, mais une
pour la boucle lui donne une apparence plus agréable et vous devez écrire moins de code.
Les fonctions sont une idée similaire.
Si je veux faire la même chose que beaucoup, le déplacer vers une fonction et appeler cela
fonctionner à chaque fois.
Cela va faire cette chose pour vous.
C'est une bonne raison d'utiliser les fonctions.
>> Donc, anatomie d'une fonction.
Une fonction sera généralement ressembler à ceci.
Il va commencer avec le type de retour, alors vous aurez le nom.
Ça va prendre les arguments, autrement connu que les paramètres, et à l'intérieur
ces accolades, vous aurez écrire votre code.
>> Nous avons vu une fonction beaucoup.
C'est principale.
Ici est le principal superpose que l'anatomie que j'avais auparavant.
Qu'est-ce que int ici signifie?
Qu'est-ce que cela signifie int?
Quand j'écris int main (void).
>> ETUDIANT: Type de retour?
>> JASON HIRSCHHORN: Pardon?
>> ÉTUDIANTS: Le type de retour.
>> JASON HIRSCHHORN: Int est l' type de retour, tout à fait exact.
Principal renvoie un int.
Quel est le principal?
>> ETUDIANT: Nom de la fonction.
>> JASON HIRSCHHORN: principal est l' nom de la fonction.
Exactement.
Et non avenue?
Quel est vide à l'intérieur des parenthèses?
>> ETUDIANT: Il ne faut pas une valeur externe.
>> JASON HIRSCHHORN: void So -
droit.
A l'intérieur des parenthèses, nous mettons l' paramètres ou les arguments les
fonction prend, ce qui se passe à l'intérieur de la boîte noire.
Lorsque vous écrivez vide, vous dites cela n'enlève rien po
Principal moyen de void main Alors int ne rien prendre po
>> A l'intérieur des accolades, nous avons quelques code, puis nous voyons à la fin
retourner zéro.
Qu'est-ce que le retour à zéro signifie?
Eh bien, nous avons parlé de type de retour.
Principal besoin de renvoyer un int.
C'est ce que cette ligne fait.
Elle renvoie un int, zéro.
>> Bien sûr, nous n'avons pas vu que beaucoup parce que dans la programmation que nous faisons avec
les machines que nous faisons et les compilateurs nous utilisons de nos jours, vous
n'ont pas besoin de cette ligne.
Principal est assez spécial qu'il sait lorsque vous atteignez la fin du principal, tout
renverra zéro si tout allait bien.
En fait, si quelque chose ne va pas bien, principal sera souvent retourner une autre
nombre signifiant que quelque chose n'allait pas avec votre programme.
>> Donc en général quand vous voyez le code, vous ne pas écrire retour à zéro, mais c'est bon
à savoir que ça se passe derrière le scènes parce que chaque fois que vous écrivez
un autre type de fonction, vous allez avoir besoin d'
inclure une ligne de retour.
Si vous dites que je vais retourne un int, vous devez
écrire retourner quelque chose.
Si vous dites non avenu ici à l' début, void main vide, pour
Ainsi, il ne revient pas rien - vide ne signifie rien -
vous n'avez donc pas besoin de cette ligne de retour.
Mais jamais vous écrivez quelque chose qui n'est pas nul pour le type de retour, vous devez
une ligne qui indique le retour et vous besoin de mettre quelque chose
qui correspond au type.
Vous avez des questions à ce sujet?
Sweet.
>> Portée.
C'est quelque chose que nous avons touché aussi bien.
Chaque variable, comme nous le savons, a une certaine ampleur, et c'est essentiellement
parler où la variable peut être ou peut ne pas être référencé.
Et je tiens à dire ce qui se passe entre accolades reste
à l'intérieur des accolades.
Ainsi, par exemple, si nous regardons ce code, nous définissons une variable globale
hors de main, un int, ici au sommet.
Nous demandons un autre INT A l'intérieur principal.
Nous avons quelques accolades plus bouclés, et nous appelons une autre int.
>> Nous avons trois A dans le code.
Ce ne sont pas la même chose.
J'ai créé trois variables distinctes.
Ensuite, à l'intérieur de ces bouclés intérieure accolades, je dis a = 4.
Qui a est que parler, l' une première, une deuxième,
ou la troisième?
>> ÉTUDIANTS: Le troisième.
>> JASON HIRSCHHORN: Il parle sur le troisième.
Tous ceux ya un fait peut être parlé dans ce cas particulier
par exemple parce que leur portée va tout dans ces accolades les plus intimes.
Toutefois, lorsque vous appelez les choses de la même nom, il ya quelque chose qui s'appelle la clandestinité.
Donc vous traitez qu'avec ou corriger ou utilisez le variable la plus récente, ou celle
le plus proche de vous.
Donc, à l'intérieur ici, cette troisième un est le plus proche à cette ligne, a = 4, de sorte qu'il
affecte le troisième.
Et la dernière ligne, a = 2, qui est un qui parle, la première, deuxième,
ou un tiers?
>> ETUDIANT: Second.
>> JASON HIRSCHHORN: Il parle sur le second a.
Bien sûr, le troisième un est le plus proche dans le code, mais le troisième a
n'existe pas à l'extérieur ces accolades.
Une fois que vous arrivez à ce fermé bouclés accolade, c'est comme il a disparu,
essentiellement.
Donc, les deux seuls que vous avez quitté sont ceux deux premiers, et bien sûr, maintenant
elle est la plus proche de la seconde.
>> Donc, c'est une bonne chose pour retenir sur la portée.
Par exemple, je suis sûr que vous avez rencontré cela dans une boucle Do While.
Si vous initialisez la variable à l'intérieur la boucle Do While et puis vous essayez d'
accès à l'extérieur, vous avez probablement obtenu un avertissement similaire, ce
variable n'existe pas.
C'est à cause de l'idée de la portée, que les choses n'existent que
l'intérieur de ces accolades.
Les accolades sont comme un câlin géant Vous donnez à votre code, est un autre
façon de penser.
>> Donc, c'est une autre fonction, quelque chose pour vous les gars à code, hellofunction.c.
Nous allons passer que pour l'instant, mais c'est quelque chose que je vous encourage à
pratiquer vous-même.
Écrire un programme dans lequel les principaux appels une autre fonction qui imprime une
salutation à l'utilisateur.
C'est en prenant essentiellement Bonjour tout le monde et abstraction que dans printf
une autre fonction.
Mais nous n'allons pas le faire dès maintenant parce que nous n'avons pas autant de temps
gauche, comme je l'aurais souhaité.
>> Donc déclaration de fonction.
Nous avons vu cela avant aussi.
Si vous voulez écrire une autre fonction, vous devez laisser l'ordinateur connaître et
principale savent qu'il existe.
Donc ce que nous faisons est au-dessus de principal, nous écrivons le type de retour, le nom et l'
paramètres, et ensuite vers le bas au-dessous principale, ici-bas, nous copions en fait que la ligne
et puis écrire le code.
Ainsi de cette façon, si vous appelez la fonction en principal en haut, le principal sait que
bonjour existe, par exemple, si je devais d'appeler bonjour, puis il se tourne vers
la mise en oeuvre ci-après.
Qu'advient-il si je ne comprend pas cette ligne en haut, nul bonjour (void)?
>> Si je ne comprend pas cette ligne et demande principales Bonjour, je suis
allez obtenir une erreur.
Je vais me faire une erreur parce que le compilateur ne sait pas
que cette chose existe.
Ceci est similaire à laquelle nous ne # include cs50.h.
Qu'est-ce essentiellement cs50.h fait est de mettre obtenir corde là-haut.
C'est mettre int obtenir là-haut.
C'est mettre tous ceux fonction prototypes avant principal de sorte que lorsque
vous les appelez dans le principal, principal sait que ces choses existent.
C'est ce que ces fichiers. H Ne.
Et si vous allez faire votre propre fonction, vous avez à vous assurer
vous mettez ce prototype là-haut.
Vous avez des questions au sujet de cette mesure?
>> arguments de ligne de commande.
C'est ce que nous allons terminer sur, et puis j'espère que nous allons
serrer dans certains pset.
Je ne sais pas si nous serons capable de se faufiler qu'en raison du temps, mais
avec vous les gars qui sont ici, et si vous les gars veulent dire après un peu, nous
peut aller plus à l'extérieur.
Mais nous allons en finir avec arguments de ligne de commande
pour les 15 dernières minutes.
Nous avons éveillé, Michael?
Tu es réveillé?
Bon.
Je ne sais pas si vous dormez avec les yeux fermés.
Il serait difficile.
>> arguments de ligne de commande.
Ce sont une façon de transmettre l'information dans un programme.
Finalement, nous rencontrons d'autres.
Mais essentiellement, nous allons nous arrêter écriture int main (void) si nous voulons
prendre quelques arguments de ligne de commande.
Nous allons écrire cette chose appelé int main (int argc,
chaîne argv, entre parenthèses.
Qui prête à confusion.
C'est beaucoup de lettres qui ne sont pas en Anglais humaine, donc nous allons
déballer dès maintenant.
>> Argc est synonyme de nombre d'arguments -
et encore, tous ceux-ci sera disponible en ligne -
et c'est le nombre d'arguments.
Argv est synonyme de vecteur d'argument, et ce sont les arguments eux-mêmes.
C'est un tableau de chaînes.
Nous avons effectivement vu un tableau des chaînes avant aujourd'hui.
Nous avons créé un dans le dernier programme nous avons codé.
>> Alors, voici un exemple.
J'écris. / Ohai CS50 section sur ma ligne de commande.
Argc dans ce cas est égal à 3.
Argv 0 support est ohai, argv support 1 est CS50, argv support 2 est partie.
Encore une fois, argc est le nombre d'arguments, et à vous désarçonner un peu
peu, nous comptons toujours le nom de l' fonction comme premier argument.
Donc dans ce cas, il ya trois arguments, le nom de la fonction
et puis ces deux-là que j'ai tapé po
>> Ensuite, nous allons sauver ceux arguments eux-mêmes dans argv.
Et encore une fois, comme nous l'avons vu, nous avons dans le dernier programme que nous avons codé.
Vous pouvez vous déplacer dans le tableau de argv et obtenir ces chaînes.
C'est essentiellement ce que nous avons fait au la fin de notre dernier programme.
Nous avons choisi un nom aléatoire et ensuite allés à Les noms support que ce soit et imprimé
la chaîne de caractères qui s'y trouvent.
>> En plus de simplement celui tableau, parce que cordes elles-mêmes sont des tableaux, comme
a parlé, vous pouvez avoir des tableaux des matrices, qui est
essentiellement ce argv est.
Une façon vous pouvez penser à c'est rangées et de colonnes.
Je peux dessiner ce moment.
Donc, argv -
ce n'est pas l'effacement.
Tirons sous ohai.
>> Donc, si je l'ai écrit dans la section ohai CS50, Je vais tronquer
section pour cet exemple.
Mais essentiellement, mon multidimensionnelle tableau, ohai CS50,
nous allons faire secte.
Donc ici, je peux accéder -
si je donne juste argv un numéro -
c'est faux.
Qu'est-ce qui ne va pas dans ce schéma?
>> ETUDIANT: commencer à zéro.
>> JASON HIRSCHHORN: il doit commencer par un zéro.
Je devrais également faire pivoter, mais puisque j'ai déjà dessiné, je suis
va le laisser là-bas pour l'instant.
Mais il commence à zéro.
C'est vrai.
Je suis désolé si c'est petit.
Vous les gars pouvez sorte de voir?
Donc, si je fais argv 0, je vais obtenir tous ohai.
Si je fais argv 1, je vais tout de CS50.
Si je fais argv 2, je vais tout de secte.
>> Mais maintenant, comme nous l'avons dit, les cordes sont des tableaux eux-mêmes.
Donc ce que je peux faire, c'est que je peux traiter cette comme un tableau multi-dimensionnel, et je
peut faire quelque chose le long des lignes de argv 0, 0, ce qui me donne juste l'
caractère 0.
Argv 0, 1, ce qui me donne juste h.
Argv 1, 3, ce qui me donne juste cette 0 ici à CS50.
>> Donc, parce que les chaînes elles-mêmes sont des tableaux, nous mettons
que, dans un autre tableau.
Nous avons maintenant tableau de tableaux, et nous peut indexer dans notre premier tableau et
alors index dans notre deuxième tableau.
Et comme vous le souhaitez, nous le faisons en mettant simplement les deux -
nous faisons les crochets juste juste à côté de l'autre.
Ainsi, dans cet exemple, argv 1 est CS50 et argv 1, 2, comme nous l'avons dit, est à seulement 5.
Quelqu'un at-il des questions sur tableaux multi-dimensionnels?
Vous faites génial.
Sweet.
>> Donc, nous avons un autre programme ici, et c'est la dernière chose que nous sommes
va faire maintenant.
Donc, je veux que vous écriviez un programme qui prend le nom complet de l'utilisateur, et deux seulement
deux arguments de ligne de commande, et enfin, imprimer un message d'accueil à l'
l'utilisateur qui comprend un premier nom.
Alors pourquoi ne pas vous prendre trois ou quatre minutes pour le faire, et puis nous irons
sur elle en tant que groupe, et alors nous allons terminer?
>> Et encore une fois, ici, quand nous disons prendre une le nom complet de l'utilisateur par la description
de ce problème, il devrait être commande arguments de ligne, ne pas utiliser obtiennent chaîne.
Ouais, Marcus?
>> Etudiant: Ainsi quand vous dites deux commandes arguments de ligne, c'est que, en plus de
. l'/ course, ou -
>> JASON HIRSCHHORN: Bonne question.
Faire, y compris l'. / Run, trois arguments de ligne de commande.
Ou y compris l'. / Personnalisé, en ce cas, parce que c'est le
nom de ce fichier.
Alors argc serait trois.
Mais je veux seulement deux arguments accordée au programme.
Je dois préciser que.
Je vais faire ce changement avant que je posterai ceux-ci et de les envoyer à vous les gars.
>> ETUDIANT: Que faire si vous avoir un prénom?
>> JASON HIRSCHHORN: Si vous avez un milieu nom, vous n'avez pas de chance.
Je suis désolé.
Ou si vous allez seulement par Shakira, vous êtes également hors de la chance.
Ouais?
>> ETUDIANT: Alors, quand les gens n'ont pas cs50.h, ne définissent argv
en tant que char argv étoiles?
Ou est-il appelé string toujours argv?
>> JASON HIRSCHHORN: Oui.
Alors chaîne, encore une fois, nous masque sur ce qui se passe exactement là-bas.
Cela va peut-être être déballés mercredi, mais bientôt.
C'est comme des roues de formation.
Parce que l'essentiel, c'est la même chose.
>> Prenons donc une minute de programme cela, et puis nous irons plus
en tant que groupe, puis comme je l'ai dit, conclure.
Et je pense qu'ils sont encore bonbons supplémentaire, si vous les gars devrait, espérons prendre
que, ou s'il vous plaît prendre cela.
>> Désolé si vous êtes encore à écrire, mais je veux plonger et nous
peuvent finir ensemble.
Alors j'ai écrit dans, # include cs50.h, # include stdio.h.
int main (void), accolade, bouclés corset, à l'intérieur de trois lignes de
pseudo, prendre le nom complet de l'utilisateur, deux et seulement deux ligne de commande
arguments, imprimer un message d'accueil à l' l'utilisateur qui comprend un premier nom.
>> Donc, la première, prendre le nom complet de l'utilisateur.
Qui peut m'aider à prendre le nom complet de l'utilisateur?
Comment puis-je faire partie?
Avez-vous les gars faire cette première partie?
Prendre le nom complet de l'utilisateur.
Eh bien, pour qu'une ligne de commande argumentation, que dois-je écrire?
Que dois-je changer de sujet ma déclaration de fonction?
>> ETUDIANT: Vous ne voulez pas qu'il soit vide plus.
>> JASON HIRSCHHORN: Exactement.
Je ne veux pas qu'il soit vide.
Que dois-je veux que ce soit?
>> ETUDIANT: argc Int.
>> JASON HIRSCHHORN: int argc.
>> ETUDIANT: String argv.
>> JASON HIRSCHHORN: String argv.
>> ETUDIANT: Support, support.
>> JASON HIRSCHHORN: Support, support.
C'est exactement ça, et c'est en fait comment je vais faire
le nom complet de l'utilisateur.
Ils vont le mettre là-dedans.
Alors que l'on a fait.
Alors maintenant, je veux deux et seulement deux arguments de ligne de commande.
Et Noé, ce qui est une manière que je peux vérifier le numéro de commande
arguments de ligne j'ai?
>> ETUDIANT: Vous faites une instruction if.
>> JASON HIRSCHHORN: Si déclaration, exactement.
Ce que je veux que l'état?
>> ETUDIANT: Si argc supérieur à 3.
>> JASON HIRSCHHORN: Si argc est supérieur à 3.
Si argc supérieur à 3, je fais quoi?
>> ETUDIANT: retour 1.
>> JASON HIRSCHHORN: retour 1.
Sera-ce en sorte que j'ai deux et seulement deux?
>> ETUDIANT: Non
Si argc est supérieure à 3 et inférieur à 2.
>> JASON HIRSCHHORN: Si argc est supérieure de 3 et argc est inférieur à 2.
Ce qui est une manière que je peux écrire ce à juste une ligne, ou sans l'aide de ce que
et opérateur booléen?
>> ETUDIANT: Il n'est pas égal à 2.
>> JASON HIRSCHHORN: Si argc n'est pas égal à 2.
Exactement.
Donc, si argc n'est pas égal à 2, qui me donnera ce programme,
personnalisé, quand je le lance, et cela me donnera combien
arguments de ligne de commande?
Combien vais-je vérifier?
>> Désolé.
Permettez-moi de reformuler cela.
Si argc = 2, combien de choses fait l'utilisateur écrire dans la ligne?
>> ETUDIANT: One.
>> JASON HIRSCHHORN: Juste une.
Donc, avant, vous aviez raison, Noah.
Que dois-je vraiment besoin d'y mettre?
>> ETUDIANT: Cela équivaut à 3.
>> JASON HIRSCHHORN: Argc n'est pas égal à 3.
Je veux égal à 3 parce que je veux personnalisée en plus des deux autres.
Donc, si argc n'est pas égal à 3, le retour 1.
Pourquoi dites-vous revenir 1?
>> ETUDIANT: Parce que signifie que c'est mal.
>> JASON HIRSCHHORN: Cela veut dire que c'est mal, Et qu'est-ce qui va le faire?
>> ETUDIANT: Re-demander à l'utilisateur.
>> JASON HIRSCHHORN: Ça va quitter le programme, il devra courir
encore une fois, mais nous n'avons rien ici pour demander à nouveau.
Je n'ai pas demandé cela.
Donc, c'est exactement ça.
Retour 1 juste stoppe le programme.
Grand.
>> Et imprimer un message d'accueil à l'utilisateur qui inclut leur prénom.
Comment puis-je faire cela?
Anna?
>> ETUDIANT: printf.
>> JASON HIRSCHHORN: printf.
>> ETUDIANT: ("
>> JASON HIRSCHHORN: (
>> ÉTUDIANTS: "bonjour
>> JASON HIRSCHHORN: "bonjour
>> ETUDIANT:% s
>> JASON HIRSCHHORN:% s
>> ETUDIANT: / n
>> JASON HIRSCHHORN: / n
>> ÉTUDIANTS: ",
>> JASON HIRSCHHORN: ",
>> ETUDIANT: Argv
>> JASON HIRSCHHORN: Pardon?
>> ETUDIANT: Argv
>> JASON HIRSCHHORN: Argv
>> ÉTUDIANTS: Les crochets 1.
>> JASON HIRSCHHORN: crochets?
>> ETUDIANT: 1.
>> JASON HIRSCHHORN: 1.
>> ETUDIANT: Et) virgule.
>> JASON HIRSCHHORN:) virgule.
Ne courons cela.
Assurez-vous personnalisé.
. / Personnalisée.
Il vient de quitter.
Pourquoi at-il quitté?
>> ETUDIANT: Vous n'avez pas mis tous les arguments.
>> JASON HIRSCHHORN: je n'ai pas mettre tous les arguments po
Regarde grand.
Vous les gars cloué.
Encore une fois, vous êtes allé dans argv et vous vérifié au argc début.
Ce sont deux importants choses à retenir.
Ainsi, dans nos deux dernières minutes avant nous partir, nous n'aurons pas à pset deux, mais
comme je l'ai dit, si vous voulez rester après pendant 10 minutes, je serais heureux d'y aller, il
plus avec vous les gars de la logique pour ces ensembles de problèmes.
Nous avons eu beaucoup de couvrir aujourd'hui donc je n'ai pas eu à leur disposition.
En général, je préfère inclure qu'à la fin.
Donc, si vous voulez rester dans les parages, rester dans les parages pendant 10 minutes.
Nous le ferons.
>> Puis, comme je l'ai mentionné au début, pset zéro et un, nous allons obtenir ce
rétroaction, vous envoyez dès que possible.
Le but est d'obtenir une rétroaction pset, la partie commentaires,
avant pset deux est due.
Donc, si vous avez fait des erreurs ou stylistiquement, les choses pourraient être mieux,
vous aurez l'information de sorte que vous ne fera pas les mêmes choses dans pset deux.
Et puis, à l'avenir, vous aurez tout de vos commentaires pset et commentaires
retour avant le prochain est due.
>> Enfin, si je pouvais mettre dans un autre fiche de rétroaction.
Ceci est votre premier article.
C'était ma première section l'enseignement de cette année.
Allez-y.
Ecrire choses, bonnes et mauvaises, et je vais l'utiliser pour faire
section mieux la prochaine fois.
Et enfin, encore une fois, si vous avez besoin quelque chose, faites le moi savoir.
Je suis plus qu'heureux de vous aider les gars.
Si vous voulez juste des bonbons, je aura bonbons supplémentaire.
Je suis heureux de vous l'apporter.
>> Cela va être un parcours étonnant.
C'est l'un des, si ce n'est pas mon favori Bien sûr, j'ai pris de toute ma vie,
et j'espère que ce sera celui merveilleux pour vous.
Donc je veux faire tout en mon pouvoir pour faire de cette impressionnante pour vous.
Je vais envoyer un e-mail si vous êtes dans ma section ou Noé, et
va essayer de planifier avec chacun des vous les gars un temps de vérifier dans plus de la
deux prochaines semaines afin que je puisse obtenir un sens de ce que votre fond CS est,
et il m'aidera aussi à adapter ces sections afin de mieux répondre à vos besoins.
C'est donc ce que j'ai alignés.
Encore une fois, je vous verrai à l'extérieur si vous voulez être là.
Ce fut deux semaines section.
Merci les gars tellement.