JASON HIRSCHHORN: Bienvenue, tout le monde, à la semaine 10. C'est une semaine excitante car demain Quiz 1, que nous aurons dans une seconde. Aujourd'hui, dans l'article, nous allons aller plus quelques ressources pour le test, et alors je vais répondre à toutes des questions vous les gars ont. Et nous allons enfin terminer par certains problèmes pratiques. Nous pouvons passer toute la section répondre aux questions. Nous pouvons passer toute la section aller sur des problèmes pratiques. Nous allons simplement se dilater pour remplir le espace et le temps que nous avons. Alors, j'ai mis cette liste chaque semaine, mais il est particulièrement important cette semaine. Pour l'étude, si vous n'avez pas commencé déjà, oh boy. Mais j'espère que vous avez déjà commencé. Et vous allez à travers les matériaux et les ressources énumérées ici. Je recommande vivement un certain nombre de ces derniers. En particulier, les notes de cours sont extrêmement important et utile. Le study.cs50.net offre une grande amorce sur un terrain de les sujets que nous avons abordés. Il a aussi quelques grands pratiquer problèmes. Et puis, Google est aussi très bien. Je ne sais pas ce que vous l'utilisez pour. Mais l'utilisation de Google, aussi bien. Tendez la main à moi si vous avez des questions, commentaires ou préoccupations. Regardez au-dessus de la session d'examen diapositives de la nuit dernière. Ou, si vous avez un peu de temps, voir la vidéo. Ils fournissent beaucoup d'utiles matière et de l'information. Et essayer de couvrir, sinon la totalité, de nombreux les sujets que nous avons abordés et que vous pourrait voir sur le quiz. Parlant du questionnaire, qui sera demain. C'est 75 minutes. Beaucoup d'entre vous le prennent à 1 heures, et certains d'entre vous sont prendre à 5h30. Pour le moment vous le prendre et le emplacement que vous prenez, assurez-vous vous consultez le document sur la page d'accueil CS50.net. N'oubliez pas que vous pouvez obtenir un 8 1/2 de 11 feuilles à emporter avec vous. Souvent, les gens ne l'utilisent pas Fiche du tout pendant le test. Mais vraiment, il est incroyablement outil d'étude utile. Donc mettre ensemble cette feuille est ce J'ai passé probablement trois ou quatre heures fais quand je faisais mes études pour CS50, et C'était de loin le plus utile manière que je pourrais étudier pour le quiz. Donc, même si vous avez d'autres personnes de guides d'étude à regarder et utiliser comme références, je recommande fortement faire votre propre guide d'étude, en mettant ce genre de choses ensemble. Cela aide vraiment à apprendre la totalité du matériau. Last but not least dans cette section, après le test demain il ya une plus exposé - lundi prochain. Il ya une section plus, pas à côté Mardi avant Thanksgiving, mais le Mardi après que. Nous nous réunirons ensemble pour une finale au revoir parti et aussi faire un peu de frais les choses pour vous les gars excité au sujet d'autres études en informatique. Il ya un projet de plus, un plus juste, une plus hackathon. Nous approchons de la fin de CS50, qui est passionnant - mais aussi, si vous êtes comme moi, un peu triste. Avant de passer, quelqu'un at-il des questions sur ce nous avons couvert jusqu'ici? OK, bien revenons sur quelques questions que vous avez pour le quiz et sujets nous pourrions couvrir. Donc, c'est une liste que j'ai mis en place. Il est loin d'être exhaustive, mais nous l'espérons, vous rafraîchir la mémoire si vous avoir quelques questions sur l'un de ces sujets, ou si vous avez des questions sur problèmes pratiques de quiz dans les années passées. J'ai eu quelques questions qui étaient envoyé à moi, mais je veux tenir à distance sur ceux d'une seconde. Est-ce que quelqu'un a des questions, problèmes qu'ils ne comprenaient pas, réponses qu'ils ne comprenaient pas pour nous aider à démarrer? Avi. PUBLIC: Pouvez-vous revenir sur DOM et Ajax vraiment rapide? Comme quoi nous avons besoin de savoir ou devrais- comprendre à leur sujet? JASON HIRSCHHORN: Je vais répondre à généralement cette question de, que dois-je besoin de savoir sur le sujet donné x? Parce que j'ai l'impression que beaucoup d'entre vous vont me demander, ou sont curieux à ce sujet. Donc, dans la mesure où le sujet était couverte en cours, ou de l'article, ou sur study.cs50.net, un problème défini, vous devrait être familier avec elle. Donc, vous n'avez pas besoin de connaître tous les types de l'étiquette qui est disponible au format HTML ou chaque type d'attribut ou la propriété vous pouvez donner quelque chose en CSS. Mais si vous l'avez vu dans un exemple de conférence, si vous l'avez vu dans un problème ensemble, vous devriez probablement familier avec elle, en particulier les choses que vous avez vu en cours. Donc, nous avons discuté le document modèle objet un peu en section, d'autant plus dans la leçon. Vous devez être familier avec autant de celui-ci. Et vous devez être familier avec Ajax dans la même mesure. Nous n'avons jamais vu incroyablement avancée ou exemples compliqués d'Ajax, de sorte vous n'allez pas être posées faire quelque chose d'incroyablement compliqué. Mais vous pourriez être invité, comment puis-je faire un appel Ajax en utilisant jQuery? Qui est quelque chose que vous avez vu un certain nombre de reprises, aussi bien dans l' session d'examen et en cours, et c'est seulement deux lignes de code-ish. Donc, c'est quelque chose que vous devriez être familier. Mais encore une fois, pour l'ensemble de ces sujets, si vous avez vu avant, il est un jeu équitable. Et nous pourrions vous demander - de toute évidence, nous sommes va vous poser des choses que vous n'ont pas vu avant. Codage quelque chose que vous n'avez pas vu avant. Qui ne veut pas dire que vous n'avez pas vu les outils pour résoudre ce problème avant. Vous avez vu ces outils. Par exemple, sur Quiz 1, si vous devez coder strlen. Nous n'avons pas codé strlen avant. Mais vous savez comment utiliser une boucle for, vous savez comment l'utiliser si les conditions. Vous savez comment écrire les variables en C. Ça va être la même chose ici. Vous n'allez pas être invité à faire tout ce que vous n'avez pas vu avant, mais vous pourriez être invité à, comme, mettre quelque chose ensemble d'une manière nouvelle, ou résoudre un type de problème différent. Désolé, ce n'était pas spécifique à votre question, mais je ne peux pas répondre au sujet chaque sujet unique que vous faire ou n'ont pas besoin de savoir. Mais aussi, désolé, dernière chose à ce sujet. Nous avons passé beaucoup plus de temps sur les listes de liens que nous avons sur Ajax. Vous n'avez pas utilisé Ajax dans un ensemble de problème. L'une des caractéristiques essentielles de ce problème réglé c'était listes de liens. Et nous avons passé beaucoup de temps en cours et la section de l'utiliser. Donc, les chances sont liste de liens viendra plus souvent sur le quiz de l'Ajax volonté. Ou questions ayant à voir avec lien liste vaudra plus de points. Ainsi, vous pouvez certainement se concentrer et étroit dans des choses qui sont plus susceptibles de venir parce que nous avons passé plus de temps sur eux. OK d'autres questions? Ouais. PUBLIC: Pouvons-nous revenir sur l'utilisation de fonctions anonymes en JavaScript? Je suis un peu confus sont à ce sujet. JASON HIRSCHHORN: Donc en JavaScript - Je suis en train de penser comment je pouvait écrire ce sur - nous allons donc en fait d'ouvrir ce code. Donc, c'est le code que nous avons fait la semaine dernière. Et vous avez vu cette avant si vous étaient ici dans la section la semaine dernière. Ou vous avez vu quelque chose semblable à cela avant. Mais vous pouvez regarder cette première ligne. C'est ainsi que vous commencez - tout le monde a vu cela avant. Si vous voulez mettre un peu de code JavaScript, vous mettez à l'intérieur de cela, en supposant vous utilisez JQuery. Cela revient à dire, ne rien faire jusqu'à ce que le document de chargement. Et puis, Curt, vous voir ici nous faisons quelque chose comme ça - fonction paren ouverts, fermés parenthèse. Donc, nous ne donnons pas ce fonctionner un nom. Nous n'allons pas définir cette fonction est censé exécuter, puis appeler un tas de fois. Nous disons simplement que ce document prend déjà une fonction. Un couple de choses à faire. Et nous ne voulons pas passer le temps lui donnant un nom ou enregistrer pour perpétuité. Nous voulons juste faire quelques choses. Donc, une fonction de tri anonyme de sert à cette fin. Lorsque vous n'allez pas utiliser quelque chose encore et encore, vous n'avez donc pas besoin pour lui donner un nom - que vous venez de vous voulez l'utiliser une fois - vous voulez simplement dire fonction, pour exemple, dans ce cas, et vous êtes juste définir quelque chose qui vous pouvez donner un nom. Comme, nous pourrions tirer de cette fonction sur et lui donner un nom, puis appeler ce fonctionner ici. Mais nous n'avons pas besoin de le faire parce que nous ne faisons pas vouloir perdre du temps en lui donnant un nom ou perdre quelque chose dans notre espace de nom. Et vous verrez que beaucoup de choses. Par exemple, nous voyons que beaucoup dans ce code, mais vous avez vu cette avant quand vous cliquez sur quelque chose - exécuter ce type de code. Nous pourrions définir le code que nous voulons à courir lorsque l'on clique, dans ce cas, cette identification, comme une fonction distincte et puis exécutez cette fonction. Mais dans ce cas, nous sommes en train de sauter cette étape et le déplacer dans ici et juste pour définir tout que nous voulons produire et ne lui donnant un nom. Cela peut toujours pas répondu à votre question. PUBLIC: Non, il le fait. Je veux dire, je suppose que je fais tout simplement pas vraiment obtenir pourquoi il serait un fonctionner du tout, cependant. Parce que ce n'est pas vraiment appelé. Il n'a pas vraiment de nom. JASON HIRSCHHORN: C'est une fonction dans le sens qu'il s'agit d'une série d'étapes, comme vous mettriez dans une fonction. Et puis c'est pourquoi nous appelons il fonction anonyme. Nous n'allons pas lui donner un nom. Nous n'allons pas perdre à essayer à nommer, mais nous avons pu. Les fonctions anonymes, vous peut toujours donner un nom. Ainsi, par exemple, ce code ici, nous pourrions mettre ce code dans un fonction et ensuite appeler cette fonction ici. Au lieu de cela, nous disons, nous n'allons pas à se soucier de cela. Nous allons simplement écrire tous ici. C'est comme, parfois, quand vous écrivez une boucle quatre C - vous les gars ont vu cela auparavant - peut-être vous êtes en parcourant un forloop i est égal à 0. I est inférieur strlen. Ou vous allez à travers certains tableau, vous pouvez économiser tableau l'indice i d'une certaine variable. Et vous utilisez cette variable. Donc, vous n'avez pas besoin de réécrire tableau support i maintes et maintes reprises. Et c'est un peu comme une variable muette. Ce n'est pas servir à grand-chose d'autre que rendre votre code un peu plus propre et plus facile à lire. Fonction similaire ici. Rend juste un peu plus facile, mais fonctionnellement n'y a aucune différence. Est-ce que cela répond à votre question? PUBLIC: Oui. JASON HIRSCHHORN: OK .. Mario? PUBLIC: Hier, ils ont souvent mis fonction parenthèses événement. Est-ce que cela veut dire quelque chose? Ou est-ce pour des choses comme qu'ils feraient document.ready événement de fonction. JASON HIRSCHHORN: Nous l'avons vu, et encore une fois, ce sont les petites choses qui probablement que je ne veux pas passer trop de temps sur. Parce que parfois, je ne veux pas que les gens se flippé qu'ils n'ont pas entendu parler de ces choses que beaucoup. Mais nous avons un peu parlé gestionnaires d'événements. Donc, quelque chose se passe, puis cette fonction est exécutée. Et puis, nous voulons aussi savoir quelques détails sur ce que qui s'est passé dans ce cas. Donc penser à problème posé 4. C'est probablement la meilleure façon de comprendre que dans cassure. Il y avait un peu de code - comme un événement se produirait, mais événement peut signifier beaucoup de choses. Si pourrait signifier la souris est cliqué, il pourrait signifier que vous frappez une flèche, et cetera, et cetera. Mais tout cela est enregistré dans ce générique truc qui s'appelle événements. Et puis on peut dire, est cet événement cette chose? Ou est-ce l'événement cette chose? Ou, ce qui est arrivé sorte de à cet événement? C'est pour ça que vous créez cette variable là pour sauver cette information supplémentaire sur ce qui s'est exactement passé que vous allez vouloir utiliser dans la fonction. Mais encore une fois, c'est probablement l'un des choses moins importantes pour être super familier. OK, ce que d'autres ont des questions de personnes eu, ou des pierres d'achoppement ils ont rencontré lors de l'examen? Nous allons revenir à cette liste. Qu'en est-il au cours des quiz de pratique, si les gens ont pris ceux déjà? Quels ont été les problèmes que déclenché vous les gars vous? Je sais pertinemment que l'an dernier questionnaire a été vraiment difficile. PUBLIC: Pouvez-vous expliquer ce que une attaque par injection SQL est? JASON HIRSCHHORN: Bon, d'accord. Donc, nous en avons parlé un peu. Il ya une conférence sur la sécurité. Et encore une fois, comme je l'ai mentionné plus tôt, il s'agit d'un côté. Mais vous serez frustré sur le quiz quand vous lisez une petite deux points question, et vous êtes comme, quand je n'ai jamais appris cela? Toutes ces choses dans ces conférences que vous ne pensiez pas que vous deviez le savez, ou vous pourriez passer sur parce ils n'ont pas eu à faire avec le ensemble de problèmes, ceux qui seront probablement venir à nouveau sur le questionnaire. Donc, cool, des choses amusantes que vous venez de pensait David disait pour vous profiter, il vous a dit de vous profiter et de vous faire juste être super heureux de l'apprentissage tout il est d'apprendre sur l'informatique. Ces choses viennent aussi sur des questionnaires. Donc, même ces petites choses qui n'ont pas directement liés à votre problème ensemble, comme vous les gars sont familiarisés avec ces Quiz 0, sera probablement venir. Et c'est un bon exemple de quelque chose. Donc, une injection SQL attaques, c'est quand vous obtenir des informations de l'utilisateur et vous voulez l'insérer dans une table à l'aide un insert de l'instruction SQL, mais vous ne pas désinfecter l'entrée à l'avance. Alors, évidemment, nous avons vu instructions SQL. Je vais ouvrir jusqu'à - Allons - Nous passons maintenant à l'examen - Je crois, qui couvrait? Je pense Samala fait. Ainsi, nous pouvons obtenir - PUBLIC: Où avez-vous trouvé ça? JASON HIRSCHHORN: Donc, si vous allez à CS50.net, quiz, puis vous pouvez défiler sur et obtenir des diapositives de la session d'examen. Mais vous pouvez voir que c'est un bon exemple d'une attaque par injection SQL. Nous prenons des informations de l'utilisateur et ils nous donnent une chaîne, puis nous vouloir insérer cette chaîne dans une base de données. En général, nous allons assainir que entrée, ce qui signifie qu'il ya une certaine caractères qui sont dangereux. Par exemple, dans la chaîne de requête, ces citations - guillemets simples ou doubles - signifier quelque chose. Ils signifient la fin de cette chaîne ici. Et donc si l'utilisateur vous donne un seul ou un guillemet, ils pourraient être en essayant de déclencher votre requête SQL et insérer des mauvaises choses en elle. Et s'ils le font, ils pourraient gagner le contrôle de votre base de données ou faire des choses que vous ne voulez pas qu'ils fassent. C'est pour cela que chaque fois que nous prenons SQL requêtes, nous désinfecter l'entrée avant mettre dans la base de données, qui signifie que nous échappons à ces personnages. Nous en parlerons dans un instant. Mais bref, une injection SQL attaque est si vous ne le faites pas - si vous ne prenez pas soin de l'entrée ils vous ont donné avant de mettre votre base de données, ils peuvent, comme vous voyez en bas ici, exécuter une requête qui, en fait - ils ont mis dans leur code ici et cette ligne de sélection ici sélectionnera tout de la table indépendamment de ce que le mot de passe est donné. Parce que vous avez la ou 1 est égal à 1. C'est donc essentiellement, longue histoire courte, un moyen de prendre en charge la base de données. La question, alors, pour vous les gars, est où en p ensembles 7 avez-vous de désinfecter tous les entrées de vos requêtes SQL? Où est-ce que l'étape se produire? Où pouvez-vous empêcher l'injection SQL attaques de passe dans p mis 7? Ouais. PUBLIC: Crypt? JASON HIRSCHHORN: Donc, il n'a pas été crypte. Nous n'avons pas fait ce que vous faites pour cette problème particulier défini, mais il arrive dans la fonction d'interrogation. Nous avons écrit pour vous, et nous avons pris soin de la désinfection des entrées pour vous. Mais dans les années passées, les élèves ont eu pour taper les entrées sur leur propre. En p ensemble 7, beaucoup d'entre vous - permettez-moi de m'ouvrir un autre fichier. Donc vous remarquerez ici beaucoup d' personnes, en problème posé 7, n'ont pas appelé cette fonction sur les chaînes. Cette fonction, htmlspecialchars, nouveau - cette chaîne peut avoir certaines choses que dans HTML signifie quelque chose d'autre. Comme un corset, un carré ou un angle support signifie quelque chose en HTML. Et si vous imprimez que sur la écran ou si vous venez de prendre cela et imprimer que sur votre HTML, qui pourrait faire quelque chose que vous ne vous attendez pas. Donc htmlspecialchars va sur tous ceux caractères qui ont spéciale réunion et leur échappe. Donc, il est imprimé comme le texte vous voulez voir, plutôt que vissage de votre HTML. Nous avons appelé cette fonction dans l'en-tête. Et beaucoup de gens a oublié de appeler cette fonction dans le code que vous écrivez. Ainsi, par exemple, si un nom de magasin a eu un équerre en elle et que vous avez oublié d'appeler cette fonction, cet angle support aurait jeté de ce que votre code HTML ressemblait. Mais l'appel de cette fonction échapper que si elle imprime effectivement comme un équerre et ne jetez pas votre code HTML. La même raison que nous avons vu, parfois, barres obliques avant guillemets dans un ligne printf parce que nous ne voulons pas que le guillemets en bas de la chaîne. Nous voulons les imprimer Départ à l'écran. Donc, tout cela est la même idée. Est-ce que cela répond à votre question? PUBLIC: En quelque sorte. JASON HIRSCHHORN: Avez-vous avoir un suivi? PUBLIC: Je suppose que l'injection SQL attaque a à voir avec ça? Je ne comprends pas comment les deux sont liés. Pourquoi voudriez-vous faire les specialChars? JASON HIRSCHHORN: OK, donc le SQL attaque par injection, c'est quand vous injectez certaines chaînes malveillants dans quelqu'un d' programme, et ils ont juste prennent et fonctionnent la requête SQL avec une chaîne vous leur avez donné. Comme vous pouvez le voir ici, que pourrait être problématique. Ainsi, la manière vous empêchez contre qui est vous prenez leur chaîne qu'ils donnent vous - si cette chaîne ici - et vous désinfecter. Vous échappez toutes les choses qui sont potentiellement problématique. Donc, vous ne les interprétez pas comme quelque chose cela signifie quelque chose. Et un exemple de cela avec HTML est cette fonction. Donc, c'est la même idée ici. Et je viens de vous montrer d'autres exemples de situations où vous avez vu cette idée avant. D'échapper à l'entrée d'utilisateur avant l'impression il avec un écran ou de le mettre l'intérieur d'une instruction SQL. PUBLIC: Donc dans ce cas, l'utilisateur est de jouer avec le programmeur. JASON HIRSCHHORN: Oui. Avec toutes ces attaques de sécurité, c'est toujours généralement à l'utilisateur, ou quelqu'un, essaie de gâchis avec vous, le programmeur. Et ce sont des moyens que vous pouvez prévenir contre eux. PUBLIC: J'ai donc une question sur les fonctions de hachage. Dans Quiz 1 à partir de 2011, il ya deux questions sur hash à sens unique. Et je me demandais juste ce que cela signifiait. JASON HIRSCHHORN: OK, qui quiz? 2011? PUBLIC: Ouais. PUBLIC: Quiz 1? PUBLIC: [inaudible]. C'est comme le hachage de mot de passe. Ce n'est pas de mettre les choses - JASON HIRSCHHORN: Qu'est-ce que la page était-il? PUBLIC: Je pense que c'était 9 ou 10, ou les deux. JASON HIRSCHHORN: Très bien, aller de l'avant, Curt. Vous pouvez répondre parce que nous regardons. PUBLIC: Je pense qu'il parle sur le hachage d'un mot de passe. Comme, quand quelqu'un entre dans un mot de passe, vous transformer en une chose cryptée. C'est le hachage du mot de passe, qui est différente d'une fonction de hachage qui met quelque chose dans une table de hachage. JASON HIRSCHHORN: Voyons voir. Laisse-moi ôter jusqu'à ce qu'ils donner comme réponse. Et puis nous allons marcher à travers elle. Alors Curt a donné un excellent exemple d'un hachage unidirectionnel. Lorsque nous avons vu cela avant, nous prendre le mot de passe et tournez - rappelez-vous, en p ensemble 7, quelqu'un pourrait avoir un mot de passe qui est juste un mot de passe, mais alors il se cryptées en certains vraiment chose de long. Le hachage unidirectionnel signifie qu'il est très facile pour passer d'un mode à l'autre, mais il est très difficile d'aller de l'autre le chemin du retour. Et si vous le savez, quand vous étiez vérifiez les mots de passe des personnes en difficulté set 7, vous prendriez leur - Ainsi, par exemple, disent qu'ils voulaient changer leur mot de passe, vous leur demandez pour leur ancien mot de passe. Vous avez pris de leur ancien mot de passe. Vous avez chiffré il. Et puis comparé les deux chiffrages au lieu de l'original unencrypting un, parce que c'est vraiment difficile de passer par là. Ouais. PUBLIC: Comment en profondeur va de notre compréhension de TelNet à être? JASON HIRSCHHORN: Si il a été mentionné brièvement conférence, une brève compréhension. Encore une fois, revenir à la réponse à la question de Avi - plus les choses se présentent, le plus probable il est vous devez être super familier avec eux. Si ils ont seulement sont en cours, c'est juste un endroit. Mais si ils viennent en cours, section, et un problème réglé, alors vous ont probablement besoin d'être super familier avec eux. J'ai donc eu une question de tout à l'heure - c'est a l'automne 2010 - Quiz 1, nous allons tirer vers le haut - cette question sur les piles et les files d'attente, que nous avons fait passer un peu juste de temps parler en conférence, même même si nous n'avons pas vraiment jamais frapper à la section. Donc, cette question est de vous donner une série de commandes et vous demander ce que est imprimé dans ce cas. Donc, c'est une question tout à fait raisonnable qui pourrait être demandé de vous les gars, et puis vous les gars devraient être en mesure d'y répondre. Alors pourquoi ne pas vous regardez pour 30 secondes, et puis si quelqu'un veut proposer des réponses à moi, et puis nous marchons à travers elle. Tout droit qui a une réponse à la question 27? Ouais. PUBLIC: Est-il 1, 2, 3, 3? JASON HIRSCHHORN: C'est exact. 27 vaut 1, 2, 3, 3. Alors regardons comment nous sommes arrivés que. Tout d'abord, nous disons, si s est une file d'attente, ce qui est imprimé? Alors q est premier entré, premier sorti. Nous avons déjà vu cela. Nous avons vu l'image du peuple d'attente à l'Apple Store pour acheter certains produits. Les premières personnes sont les premières personnes sur. Les premières choses à une file d'attente sont les premières choses. Donc, si nous poussons quelque chose dans une file d'attente, vous appuyez sur le 1, puis nous sautons le 1. Pop signifie simplement sortir. Dans ce cas, il suffit de prendre quelque chose. Nous prenons la première chose, c'est un 1. Nous allons donc mettre les choses nous imprimer vers le bas ici. Ce n'est plus dans notre file d'attente. Ensuite, on pousse sur un 2 et 3, et nous pop off la première chose. Encore une fois, parce que c'est une file d'attente. Nous obtenons donc un 2, puis nous avons mis sur un autre 3 et appeler à nouveau pop. Notre 3 est premier. Et puis nous avons eu tout un tas de d'autres choses et appel local. Mais encore une fois, puisqu'il s'agit d'une file d'attente, premier entré, premier sorti. Nous prenons la première chose qui n'a jamais été mis po C'est notre 3. Et, dans ce cas, nous ne nous inquiétons pas sur toutes ces autres choses. Donc, c'est s'il s'agit d'une file d'attente. Une question sur une file d'attente? Une pile est différent. Quelle est l'acronyme nous avons pour comprendre une pile? PUBLIC: dernier entré, premier sorti. JASON HIRSCHHORN: LIFO, je pense. Dernier entré, premier sorti. Donc, nous avons vu un exemple de pile de plateaux dans une salle à manger. Quel que soit le plateau est au-dessus est ramassé. Et puis si nouveaux plateaux sont , ils se mettent sur le dessus. Et puis tout ce qui est sur Top Obtient ramassé. Donc, ces plateaux sur la puissance en bas y rester pendant un certain temps. Dans ce cas, encore une fois, nous allons dessiner cela. Nous poussons un, si un est en première ligne. Et nous pop quelque chose sur. Et il n'y a qu'une seule chose là-dedans, si nous passons une ici. Puis nous avons mis sur 2 et 3 et nous pop quelque chose sur. Mais encore une fois, puisqu'il s'agit d'une file d'attente - ou c'est une pile, plutôt - nous prenons tout ce qui était en dernier. Tout ce qui est en dernière vient en premier. Et 3 est en dernier. Nous avons donc le 3 là-bas, alors nous avons mis sur un autre 3 et nous pop à nouveau quelque chose. Enfin, on met sur la 4, 5, 6, et 7, et ici nous pop. Et parce que c'est une pile, nous prenons tout ce qui était mis en dernier et à écrire qui ici-bas. Donc nous nous retrouvons avec 1, 3, 3, 7. Quelqu'un at-il des questions sur piles ou des files d'attente, ou cet exemple? OK. Revenons à la liste des sujets. Pas de cette façon, de cette façon. Quelles autres questions que les gens ont? PUBLIC: Je ne sais pas à quel point c'est, mais j'ai été confondu par la différence entre différents types de langues comme le balisage, compilées, interprété. JASON HIRSCHHORN: C'est une bonne question. Je pense que c'est assez important, donc nous allons passer rapidement. Les grandes langues que nous avons vu jusqu'à présent sont C, PHP et JavaScript, en termes de langages de programmation. HTML, comme vous l'avez dit, n'est pas un langage de programmation. C'est un langage de balisage. Et puis nous avons CSS, qui est aussi pas un langage de programmation. Nous avons également vu SQL, ce qui n'est pas un langage de programmation ou l'autre. Donc SQL vous permet d'écrire requêtes pour une base de données. HTML est un langage de balisage. Il définit la façon dont les choses sont structurées. Et CSS vous permet de coiffer les choses. C'est probablement la mesure de ce que vous besoin de savoir à propos de ces trois. Mais il est plus intéressant de chiffre les différences entre C, PHP, et JavaScript. Donc l'une des plus grandes différences, comme vous l'avez dit, est de savoir comment ils sont compilée, ou quel que soit est l'équivalent. Donc C est compilé. Nous serions toujours exécuter un compilateur. Et puis où sont vos erreurs lorsque vous exécutez le compilateur C? Où est-ce que vous le montrer erreurs dans votre code? Comment savez-vous qu'il ya une erreur dans votre code en C? PUBLIC: Il vous montre dans le terminal. JASON HIRSCHHORN: Il vous montre dans le terminal vous compilez. Et s'il ya des erreurs, il ne sera pas réellement le compiler. Donc, vous savez qu'il ya des erreurs à droite loin, à l'avance, avant de même exécuter votre code. Bien sûr, vous pouvez exécuter votre code et obtenir une erreur de segmentation, mais c'était probablement parce que vous avez fait une certaine logique bêtise. Mais votre code avec technique tous corrects et pourrait fonctionner. Donc le code C est compilée à l'avance. Qu'en est-il du code PHP? Où étaient les erreurs dans votre code PHP? Comment avez-vous su que vous aviez des erreurs dans votre code PHP? PUBLIC: Exécutez temps? JASON HIRSCHHORN: Oui, lorsque vous irait à elle, vous devez exécuter la code PHP dans le dos. Et puis vous afficher un écran. Vous pourriez voir des choses sur le dessus, mais vous verriez alors, comme certains orange, table de laide. Et il vous donnera un numéro de ligne et par exemple, blah, blah, blah, ce genre de choses ne fonctionne pas. Donc, PHP est interprété ligne par ligne et exécuté sur le serveur. Et le résultat est envoyé à vous. Grand. Exécuté dans la ligne de serveur en ligne puis envoyé à vous. Et si il ya une erreur, il va envoyer vous l'erreur, mais vous pourriez avoir obtenu des choses à l'avance. Donc, certaines d'entre elles pourraient avoir travaillé, mais plus tard, des trucs pourrait ne pas avoir pas fonctionné. Qu'en JavaScript? Où avez-vous vu des erreurs JavaScript? En p set 8, quand vous avez obtenu une erreur, comment saviez-vous? Où serait-il apparaître? PUBLIC: Dans la console, en bas. JASON HIRSCHHORN: Dans le la console, sur le fond. Il serait également vous donner l' numéro de la ligne, et il serait apparaître sur le fond. Et JavaScript n'a pas été exécuté sur le serveur. JavaScript a été envoyé à votre ordinateur, et puis quand il était temps de lancer le JavaScript, le JavaScript était exécuter ligne par ligne sur le client, de votre côté. Il n'est pas le serveur, du côté du client. Et de même, il était exécuter ligne par ligne. Et puis quand vous obtenez une erreur, il apparaître au fond. De même pour PHP, certaines d'entre elles pourraient exécutez, et vous pourriez obtenir un erreur plus tard. En outre, un peu de PHP contrairement, si vous avez une erreur JavaScript - dites que vous ne l'avez pas le droit code pour une boîte d'alerte - vous pouvez conserver le fonctionnement de votre programme. Le message d'alerte ne fonctionnera pas, mais votre programme serait bien. Juste peut-être cette fonction serait un échec. Donc, il ya une partie de la plus grande différence en termes de la façon dont ces langues, ou la manière dont le code de programmation vous écrire réellement évalué. Il ya aussi d'autres différences dans termes de - la plus grande différence nous avons vu en termes de variables dans les différentes langues. Alors quelqu'un peut-il me donner une différence entre les variables dans les trois langues? Oui. PUBLIC: En C, ils sont de type strict. Dans les deux autres, ils sont faiblement typé. JASON HIRSCHHORN: Et qu'est-ce que cela signifie? PUBLIC: C'est en C, vous devez déclarer le type de la variable lorsque vous déclarez la variable, comme interbool ou char. JASON HIRSCHHORN: Excellent. En C, nous avons toujours eu à mettre un type d'une variable. Et nous ne pouvions pas vraiment types de piles. Vous ne pourriez pas faire un nombre entier en plus d'une chaîne. Mais comme nous l'avons vu dans ces autres langues, vous avez réellement peut mélanger les types, et vous n'avez jamais vraiment à donner quelque chose d'un type jamais. Alors, comment savons-nous les choses sont des variables en PHP et JavaScript? PUBLIC: En PHP, ils commencent avec un signe de dollar. En JavaScript, lorsque vous déclarez eux, vous devez avoir un bar. JASON HIRSCHHORN: Droit. Donc, en PHP, ils commencent avec un signe de dollar. En JavaScript, ils doivent avoir un bar, bien que parfois ils n'ont pas vraiment avoir barre. Mais c'est correct. C'est donc une grande différence entre les variables. Je pense que ce sont probablement, au large de la dessus de ma tête, les deux plus grands les différences entre ceux-ci trois langues. Mais, ouais. PUBLIC: Et la portée des variables C est restreinte aux accolades, où les autres, c'est juste comme, il meurt si elle est en fonction seulement, mais sinon, C'est - JASON HIRSCHHORN: Droit. Donc, la portée est légèrement différente en C. Comme Vous souvenez-vous, les accolades définissent la portée des variables. Donc, si elle a été définie à l'intérieur d'un si état, qui est à l'intérieur d'une boucle for, la variable n'existe que là. En JavaScript, si une variable est définie l'intérieur d'un état, si - l'intérieur d'une boucle - ça existe pour cette fonction, mais il ne sera pas exister en dehors de cette fonction. Alors portée est un peu plus souple dans JavaScript et PHP. Que répondre à la question? OK, d'autres questions? Nous pouvons faire plus de quatre minutes des questions, nous sautons dans le codage. PUBLIC: Peut-on aller dans Ajax et parler de ce que c'est? JASON HIRSCHHORN: Parlez-en à Avi après. Il a posé la question plus tôt. PUBLIC: Mon mauvais. JASON HIRSCHHORN: Pas de soucis. PUBLIC: Quel est exactement JSON? JASON HIRSCHHORN: Qu'est-ce que JSON? Quelle est votre question? PUBLIC: Juste très rapidement, la différence entre impression et l'écho en PHP. JASON HIRSCHHORN: Pourquoi pensez-vous pas google la différence entre la copie et l'écho? Légère différence. Non pas que les grandes d'un accord. Mais vous devez certainement google, et cela vous donnera une bonne réponse. JSON, probablement plus d'une affaire. Stands pour JavaScript Object Notation. Et quand nous avons vu JSON utilisé? Quand avez-vous vu - pourquoi ne savez-vous même le mot JSON? Quand avez-vous vu? PUBLIC: Quand nous recevions cours de la bourse pour le financement. JASON HIRSCHHORN: Donc vous avez vu quand vous receviez cours de la bourse pour le financement. Et pourquoi avez-vous vu? PUBLIC: Quand nous étions recherchons toutes les informations que est venu dans ce format. JASON HIRSCHHORN: Donc, vous obtiendrez - ouais. Allez-y. PUBLIC: informations [inaudible] à partir d'un objet? JASON HIRSCHHORN: deux personnes mis en place est la réponse nous recherchons. Vous souhaitez obtenir des informations de cette autre page. Et vous espérez que lorsque vous êtes obtenir cette information, il serait qui vous est présenté dans un certain type de format normalisé. Tout le monde est probablement familier avec des valeurs séparées par des virgules. Vous pouvez exporter une feuille de calcul Excel ou n'importe quel type de feuille de calcul en tant que liste de valeurs séparées par des virgules. Et les virgules divisent tous les différents domaines. JavaScript Object Notation - JSON - est un autre type de normalisé disposition des choses. Et c'est souvent la façon dont nous mettons information de nos requêtes Ajax. Donc dans ce cas, nous avons eu sur le site Yahoo. Ils reviennent de choses à nous dans un objet JSON. Et puis, nous le savons, parce que c'est une norme, ce que c'est va ressembler. Donc, nous pouvons parcourir le tableau qui est renvoyée à nous, le tableau de objets qui nous sont retournés. Nous n'avons probablement besoin de connaître les clés, mais ils vous donnent généralement documentation sur le site quand vous aller chercher quelque JSON notation pour eux. De même, vous pouvez JSON coder un objet. Donc, il ya une fonction JSON souligner encodage. Et si vous pouvez prendre un objet qui que vous avez créé, JSON encoder, et passer à quelque chose d'autre, si vous voulez. Et JSON décodage existe aussi pour un but similaire, ou pour le but opposé. PUBLIC: Avons-nous besoin de savoir coder pour les tables et les essais hachage? Ou devons-nous juste de comprendre comment ils sont utilisés, sur le plan conceptuel? JASON HIRSCHHORN: Alors, levez la main si vous avez une table de hachage pour p fixé 4 avec une liste de liens. Ou p mis 5. C'était donc une grande majorité des gens. P a placé 5, 6, qui sait. Il ya longtemps. Ainsi, la grande majorité d'entre vous a fait hash tables avec des listes de liens. Et parce que c'est probablement le plus approche commune, et parce que nous avons passé beaucoup de temps à faire des listes de liens et hachage tables, vous devriez probablement être assez familier avec la façon de coder une table de hachage et une liste de liens. Et si vous repensez à ce problème ensemble, ce n'était pas vraiment aussi fort que vous attendiez. Et il y avait beaucoup moins Code que vous attendiez. Je dirais que vous devriez savoir coder une table de hachage ou une liste de lien. Non pas que vous seriez demandé que, nécessairement, mais vous devriez certainement savoir que. Aussi, si vous regardez à travers des quiz dernières, il ya eu beaucoup de questions sur l'écriture des fonctions sur listes de liens ou des listes doublement chaînées. Cela semble venir chaque année. Insérer à droite sur une liste de lien, à droite Supprimer une liste de liens, insérer droit pour une liste doublement chaînée, et cetera. Donc, je me sens très à l'aise dire que vous devriez le savoir. Pour essayer, je dirais que vous devriez sait certainement comment cela fonctionne, et peut-être donner une pseudo pour savoir comment pour le code et de le configurer. Mais il ne serait pas la pire chose dans le monde si vous ne saviez pas comment coder en C. Il serait grand si vous savais comment coder en C, mais je pense probablement pseudo pour un essai serait le plus vous auriez besoin à savoir pour un essai. PUBLIC: crédit supplémentaire? JASON HIRSCHHORN: Et même avec, si nous aller dans les arbres binaires de recherche, vous pourriez besoin - et vous l'avez vu dans le passé, nous avons fait beaucoup de - vous savez comment arbre binaire de recherche fonctionne. Vous devriez être en mesure de en créer un en pseudo-code. Mais parce que la grande majorité des gens ne pas le faire sur le problème ensemble, je dirais que c'est probablement moins important que vous sachiez comment coder et mettre en place un arbre comme ça. D'autres questions? En outre, nous pouvons leur demander tout au long de comme nous passons par quelques problèmes. OK, nous allons passer à autre chose. Passer cette diapositive pour le moment. Parlant d'arbres, c'est la première Ma question pour vous les gars. Parce que c'est un problème. Je dirais qu'il est très probable que vous aurez obtenir un tel problème sur votre quiz vous demandant de coder un certain type d'insert, supprimer, recherche, pour un type de la structure de données que nous avons vu. Cela revient chaque année et nous avons passé un beaucoup de temps de la deuxième moitié de cette semestre aller sur ces types de données. Donc maintenant, j'ai défini un noeud dans un arbre binaire de recherche. Et ce que je voudrais que vous fassiez est donnée un arbre binaire de recherche qui commence à ce nœud racine étoiles, compléter la mise en oeuvre de la fonction ci-dessous, qui se trouve être une fonction de recherche. Et le faire avec et sans récurrences. Donc, je veux que vous écriviez deux fonctions. Un faire avec récurrence, un faire sans récurrence. Et ne croyez pas que le racine sera non nulle. Nous sommes donc à la recherche de l'entier i dans l'arbre à partir de la racine, et nous avons besoin d'écrire ce récursive et de façon itérative. Ouais. PUBLIC: Donc, vous voulez nous retourner vrai si nous le trouvons, et faux si nous ne trouve pas. JASON HIRSCHHORN: Comment saviez-vous? Comment saviez-vous que? PUBLIC: je demandais d'abord, mais j'étais en supposant, parce qu'il dit bool à le début de la fonction. JASON HIRSCHHORN: Droit. Il dit bool, donc je n'ai pas même besoin d' vous dire ce que j'attends de revenir parce qu'il dit là. Mais c'est vrai. Retour, vrai ou faux. Alors avant de commencer, je vous recommande, si vous n'êtes pas familier avec arbres binaires de recherche, en tirant rapidement une photo d'elle pour obtenir votre compréhension, à droite. Ce sera également vous aider lors de l'écriture votre code et vérifier. Encore une fois, vous n'avez pas non plus que beaucoup temps sur le quiz pour faire toutes les choses que nous vous demandons de faire. Ainsi l'écriture de code pseudo est très utile. Et nous donnons généralement environ - si le pseudo-code est parfaitement correcte, c'est généralement de 50% sur une question. Donc ce n'est pas une règle absolue, mais si vous écrivez simplement pseudo et c'est correcte, il est généralement de 50%. Donc, je recommande toujours - si vous êtes pressé par le temps, ou même si vous essayez simplement de le comprendre - en commençant par le pseudo-code. Et enfin, si vous pouvez écrire ce tout en C, ce serait fantastique. Alors disons prendre trois minutes à travailler sur ce programme. Et puis nous allons écrire pseudo pour une seule fois, puis nous allons coder de manière récursive puis de manière itérative. Si vous avez des questions, n'hésitez pas sans lever la main. Heureux de se promener et d'y répondre avant de commencer en tant que groupe. Reprenons, et nous allons Pseudocode la version récursive de cela, et puis nous allons coder. Ainsi, une fonction récursive a besoin de deux choses. C'est peut-être une question qui vous pourriez être invité. A besoin de deux choses. Qui peut lever la main et me dire ce que les deux choses récursive fonction doit? Par définition, il a deux choses. Quels sont ces deux choses? De nouvelles mains. Oui, Alden. PUBLIC: Je ne sais pas exactement si cette terminologie, mais - JASON HIRSCHHORN: Je suis heureux vous lever la main. PUBLIC: Il a besoin d'un scénario de base, et il a besoin d'une étape récursive. JASON HIRSCHHORN: Parfait. Il a besoin d'un scénario de base et une étape récursive. Alors, quel est notre scénario de base ici? PUBLIC: F racine est égale à égal nulle. Désolé, juste en pseudo-code, si c'est nul. Si la racine est nulle. JASON HIRSCHHORN: Si la racine est nulle. C'est excellent. C'est notre scénario de base. C'est ce que nous allons de vérifier à chaque fois. Et le cas de base est la première chose que vous faites. Si vous frappez le cas de base, vous avez terminé. Maintenant nous avons besoin de notre appel récursif, et je être prêt à parier que nous devons un couple récursive appelle ici. Parce que c'est un arbre, et nous pourrait aller de multiples façons. Donc, si la racine est nulle, nous sommes bons. Que proposez-vous? Et maintenant, je vais commencer à crier sur vous les gars, parce que je sais que vous tous le savent. Mais Annie, ce qui devrait la ligne suivante soit? Et si nous l'avons trouvé? Que faisons-nous? PUBLIC: Si nous avons trouvé? JASON HIRSCHHORN: Ou ce devrait être que - me donner le pseudo de l' ligne où nous l'avons trouvé. PUBLIC: Si i est égal à la racine i? JASON HIRSCHHORN: Et alors que faisons-nous? PUBLIC: Retour vrai. JASON HIRSCHHORN: Très bien. Donc, si i est i - oh, ils sont tous les deux appelés i. Cela devient confus. Mais si i est je retourne vrai. C'est probablement la prochaine chose que nous devrions faire. Fait sens. OK, maintenant, nous n'avons pas fait notre récursive appeler encore, cependant, car un récursive appel rappellerait cette fonction. Donc, ce qui devrait la prochaine ligne de pseudo-être? Anna. AUDIENCE: Le côté gauche. JASON HIRSCHHORN: Soyez précis, cependant. Il s'agit d'un arbre binaire de recherche, ainsi que ne contrôle le côté gauche entraîner? PUBLIC: Donc noeud - Je suis désolé, racine. Et puis, flèche gauche. Noeud, noeud, désolé. Je ne lis pas correctement. C'est ce qu'on appelle nœud, non? JASON HIRSCHHORN: Il sera appelé racine dans cette fonction, mais de toute façon. Le côté gauche - ouais? PUBLIC: Si ce n'est pas égal i, alors nous allons appeler la fonction de nouveau? JASON HIRSCHHORN: C'est exact. Si ce n'est pas égal i, nous allons d'appeler à nouveau la fonction. Mais de quel côté de l'arbre allons-nous pour appeler la fonction de nouveau? PUBLIC: Sur le côté gauche. JASON HIRSCHHORN: Nous ne sommes pas toujours va appeler la gauche, si elle n'égale pas. PUBLIC: Oh, désolé. Appel à droite. JASON HIRSCHHORN: Nous voulons savoir spécifiquement, bien que - rappelez-vous, dans un arbre binaire de recherche, tout à le côté gauche est plus petite. Tout à droite côté est plus grand. Donc ce n'est pas juste - oui, aller de l'avant. PUBLIC: Si c'est moins de i, alors - si c'est sur la gauche - JASON HIRSCHHORN: Donc, si ri est inférieur à - si notre nombre est inférieur à i, ce côté voulons-nous aller? PUBLIC: Nous voulons aller sur le côté droit. JASON HIRSCHHORN: Nous voulons aller - permettez-moi d'attirer un arbre rapide. Si cela est 5, ce sera 3. Donc, si ri est inférieur à cinq, ce qui côté voulons-nous aller? PUBLIC: Désolé, quoi? JASON HIRSCHHORN: Notre nombre est inférieur au nombre que nous sommes regardez en ce moment. PUBLIC: Oh, alors nous voulons pour aller sur le côté gauche. Ouais. Désolé. JASON HIRSCHHORN: Exactement. Pas de soucis. Dans la recherche arbre, tout binaire est inférieure à la gauche, plus grande est à droite. Donc, si notre nombre est inférieur à i nous vérifions - parce que vous voyez dans l' noeud, il a un i - alors vous voulez aller à gauche. Et c'est facile. Qu'est-ce que l'autre ligne de pseudo- nous avons besoin d'écrire? Carlos? PUBLIC: La même chose, vous passez juste à un signe supérieur à et allez vers la droite. JASON HIRSCHHORN: Pouvez-vous dire une fois de plus? PUBLIC: Si notre nombre est supérieur que i, allez vers la droite. JASON HIRSCHHORN: Excellent travail sur le pseudo-code. Faisons-le dans le code réel. Et encore, ce pseudo sera probablement vous, parce que c'est correct, 50% sur cette question. Mais ce pseudo se traduit également par un l'une, essentiellement, dans le code. Alors laissez-nous le faisons en C. Qui peut donner moi la première ligne de code? En fait, d'abord, avant que je ne , permettez-moi m'arrête - PUBLIC: J'ai une question. Pourquoi avez-vous en retrait de la ligne je vous ai donné? JASON HIRSCHHORN: Parce que Je ne pouvais pas écrire. Je ne sais pas. Vous avez raison. Cette ligne devrait être là-bas. OK, voici notre fonction. Et laissez-moi m'arrête, également, notre définition d'un noeud. Qu'advient-il si nous n'avons pas écrire typedef? Quelqu'un sait-il? PUBLIC: Il ne serait pas compiler. JASON HIRSCHHORN: Il serait compiler, ouais. PUBLIC: Serait-il juste de déclarer un Ainsi au lieu d'en faire une nouvelle tapez vous pouvez déclarer multiple instances d'? JASON HIRSCHHORN: Donc, il ne serait pas savoir - il ne serait pas simplement déclarer un type. Vous pouvez encore faire beaucoup de noeuds. PUBLIC: Mais serions-nous pas à écrire noeud de structure à chaque fois? JASON HIRSCHHORN: C'est exact. Vous n'avez pas à écrire noeud struct à chaque fois, au lieu de simplement nœud. Mais avec typedef, vous pouvez simplement écrire noeud à chaque fois. OK, qui n'a pas donné - ouais, Avica. PUBLIC: Si la racine est égal à égal null, retourne false. JASON HIRSCHHORN: Grand, et c'est notre scénario de base. Ligne de code suivante. Quelqu'un qui n'a pas donné moi une ligne de code encore? Ouais. PUBLIC: Root flèche i est égal égal à i. Puis retourner true. JASON HIRSCHHORN: Très bien. Ligne suivante? Ouais. Quelqu'un d'autre? Et puis vous pouvez aller. PUBLIC: Sinon, si la racine flèche i est inférieur à je reviens fonction appelée trouvaille racine - JASON HIRSCHHORN: Désolé. PUBLIC: Retour trouvaille racine des points à gauche virgule i. JASON HIRSCHHORN: Donc, si ri est plus que la chose dans l'arbre, nous voulons allez vers la gauche? PUBLIC: Non, je n'avais que commuté. JASON HIRSCHHORN: Lequel? PUBLIC: Non, ouais. J'ai moins de signer là-bas. JASON HIRSCHHORN: droit, si ri est moins que ce qui est à la racine - notre racine actuelle - nous envie d'aller vers la gauche. Et quelle est la dernière ligne, vous? PUBLIC: Essentiellement la même chose, sauf basculer le supérieur ou égale à moins de la gauche vers la droite et. JASON HIRSCHHORN: Excellent. Quelqu'un at-il des questions à ce sujet? Ainsi, certaines autres choses qui seraient ont eu raison, c'est que pourrait être la-ltiff. Guess, techniquement, aucune de ces vraiment besoin aussi d'être-ltiff. Aussi, il ya probablement seulement un cas ici. C'est donc probablement votre dernier cas. Vous n'avez même pas besoin que-ltiff. Mais sans doute bon d'écrire il, pour être clair. Ouais. PUBLIC: Donc, vous ne pensez pas que le test - si nous faisons des erreurs, par exemple, dans la syntaxe - petites erreurs de syntaxe - comment est-ce que se prendre dans le quiz? JASON HIRSCHHORN: Généralement sur le quiz, petite erreur de syntaxe ou petit erreurs de style ne vous perdez pas de points. Donc, si vous avez oublié un point-virgule ici, il serait OK. Si vous avez oublié de fermer cette parenthèse, ce serait OK. Erreurs de syntaxe énormes qui modifient la signification fonctionnelle de votre code considérablement, vous pourriez obtenir enlevé des points pour. Ou, plus généralement, à vous de classement si oui ou non votre fonctions de code, même - pas sa conception tellement, et pas son style. Voyons maintenant coder un processus itératif version de trouvaille. Donc ça va être assez semblable, mais il y aura certainement d'être certaines différences importantes. Cependant, notre pseudo- peut probablement aller - nous pouvons encore prendre une ligne de la pseudo et comprendre ce que l' ligne est dans ce cas. Ainsi, dans une version itérative, ce qui pensez-vous, Julia, devrait être la première ligne? PUBLIC: Encore une fois, en booléen itératif, vous avez besoin de mettre en place une boucle, non? JASON HIRSCHHORN: OK. PUBLIC: Donc, pour que, k, pour x est égal à 0, x est inférieur à i. Ou non, x est inférieur à l' taille de l'arbre. JASON HIRSCHHORN: L'arbre. Nous ne savons donc pas vraiment la taille de la arbre, et nous ne savons pas vraiment pour combien de fois nous pouvons aller, si ce n'est une type de boucle qui peut être différent mieux dans ce cas? PUBLIC: Si d'autre? JASON HIRSCHHORN: Si d'autre ne peut pas être une boucle. Donc, ce qui est un type de boucle, nous pouvons juste aller jusqu'à certains cas, est atteint? Quel est le seul autre type de boucle en C en plus une boucle? PUBLIC: Bien. JASON HIRSCHHORN: Bien, exactement. Dans une boucle de temps, ne besoin de savoir comment - une boucle while et boucle peuvent faire l' exactement la même chose, mais la bonne chose sur une boucle while est que nous n'avons pas besoin de savoir comment notre grand arbre est. Nous allons donc aller jusqu'à quoi? PUBLIC: Jusqu'à il est égal à la taille des - JASON HIRSCHHORN: Eh bien, c'est très semblable à notre cas récursif. Donc - PUBLIC: Bien racine i n'est pas égal à i. JASON HIRSCHHORN: C'est vraiment tout près. Alors que la racine i - nous allons essayer. Je ne pense pas [inaudible] où root i n'est pas égal à i. Nous pourrions avoir besoin de changer un peu peu, mais qui sonne comme il est assez bon, pour l'instant. Donc, nous allons le faire. Aussi, rappelez-vous, nous ne pouvons pas assumer par la question. Vous ne supposez pas que le racine sera non nulle. Alors, que pensez-vous de la très première chose que nous devrions faire est? PUBLIC: Il suffit de faire la même chose qu'avant. Si la racine est égal à égal null, retourne false. JASON HIRSCHHORN: Très bien. Ainsi, il pourrait être nul. Donc, nous voulons nous débarrasser de tout de suite. Et puis nous sommes chèque aller si racine i n'est pas égal à i. Donc, disons que nous sommes à la recherche de cet arbre pour 3, racine i n'est pas égal à i, maintenant nous sommes dans notre boucle while. Que voulons-nous faire? Et encore, ça va être assez similaire à notre version récursive. Ouais. PUBLIC: Donc vous voudriez parcourir, ou continuer dans l'arbre aussi longtemps que la racine n'est pas égale à zéro. JASON HIRSCHHORN: Tant que l' racine n'est pas égal à null? AUDIENCE: Le tableau de bord de la racine i n'est pas égal à zéro. Juste la racine, oui. En tant que la racine est pas égale à la valeur null. JASON HIRSCHHORN: Donc, vous voulez de changer cela en racine n'est pas égal à zéro? PUBLIC: Ouais. PUBLIC: Nous pourrions combiner ceux-ci, non? Nous n'avons pas besoin de si, au départ. JASON HIRSCHHORN: OK, donc si nous ne - si nous les combinons, donc nous allons faire tandis que la racine n'est pas égale à zéro, et si la racine se trouve être nulle au en commençant, que faisons-nous ici? PUBLIC: Retour faux. JASON HIRSCHHORN: Très bien. Donc, dans les deux sens sans doute auraient travaillé. Il s'agit d'une manière différente, et ce qu'il associe. Mais encore une fois, si vous avez de toute façon, nous sommes ne va pas à décoller conception des points sur le questionnaire. Mais cela semble bon. Ainsi, alors que la racine n'est pas égal à null, ce qui est la première chose que nous voulons vérifier? Quelqu'un d'autre? Null, quelle est la première chose? PUBLIC: Si ri est inférieur à - oh, je suppose, si nous avons déjà trouvé dans la racine. Donc, si la racine flèche i est égal à i - JASON HIRSCHHORN: Désolé? PUBLIC: Si racine flèche i est égal égaux i - JASON HIRSCHHORN: Que faisons-nous? PUBLIC: Retour vrai. JASON HIRSCHHORN: Très bien. Et quelle est la prochaine? Jeff, quelle est la ligne de code suivante? PUBLIC: Si i est inférieur à la racine flèche i, alors la racine est égal à la racine flèche gauche. JASON Hirschhorn: égaux Root racine flèche gauche. Donc, c'est probablement le plus grand différence dans cette itératif version telle opposé à l' Version récursive. La version récursive, nous appeler à nouveau la fonction. Nous mettrons à jour racine lorsque nous appelons la nouvelle fonction. Ici, nous ne demandons pas une nouvelle fonction. Nous tout simplement la mise à jour racine dans cette fonction. C'est excellent. Et quelle est la dernière ligne de code? Oui, Mario? PUBLIC: égaux profondes Autres racine flèche vers la droite. JASON HIRSCHHORN: Désolé? égaux racines: PUBLIC racine flèche vers la droite. JASON HIRSCHHORN: Pourriez-vous également écrire quelque chose comme ça? PUBLIC: Je n'ai aucune idée. JASON HIRSCHHORN: Vous ne pouvez pas. Vous ne pouvez pas faire égale plus. OK, donc cela semble bon. Pourquoi ne faisons-nous pas juste que pour le nettoyer. Cela ressemble beaucoup, et cela pourrait fonctionner. Et nous éclater. Si racine gauche était juste nulle ou racine était nulle, nous venons ici. Racine serait égal à zéro. Nous aimerions sortir de notre boucle, et nous reviendrons sans fausse. Ainsi, lorsque nous sortir de la boucle, nous return false. Et encore une fois, la boucle while était parfait ici parce que nous ne savons pas comment la taille de notre arbre est. Nous avons essayé d'écrire la boucle, mais nous rendu compte que vous avez à comprendre comment elle est grande à l'avance. Ouais. PUBLIC: Si ce n'était pas un binaire arbre de recherche, il serait réel math-y à écrire de manière itérative, non? Comme si c'était un arbre, mais pas nécessairement - si ce n'était pas plus petite à gauche, et tous les plus à droite. Il serait vraiment difficile à parcourir, non? Nous aurions à sauver ce qui était auparavant dans l'arbre et revenir en arrière, et des trucs comme ça. JASON HIRSCHHORN: Si ce n'était pas un binaire arbre de recherche, si c'était juste un arbre et les choses n'étaient pas triés comme ceci - et nous avons réalisé plus tôt, quand Anna a nous aider que ce qui triée nous aide beaucoup - nous aurions besoin, oui, toujours enregistrer où nous étions auparavant. Mais il pourrait y avoir un grand nombre de où nous étions previouslys. Il pourrait y avoir un grand nombre de nœuds parents. Probablement la meilleure façon de le faire serait être de continuer à pousser les choses sur un certain type de pile ou file d'attente. Vous n'auriez plus besoin de coder ce parce que c'est un problème difficile. Mais vous poussez des choses sur une pile ou la file d'attente et puis pop-les et puis les évaluer. Et alors quelque chose d'autre où vous êtes en train de mettre les nœuds, et puis créer, et ensuite, recherche à travers cela. C'est peut-être la meilleure façon de le faire. OK, des questions au sujet de ce problème? PUBLIC: C'est sur une note liée. Aurons-nous à comparer les temps d'exécution pour les tables de hachage, binaire arbres de recherche, et cetera? JASON HIRSCHHORN: Probablement. Alors, faisons que très rapidement. Exécutez temps pour la table de hachage - ce sont les autres? Arbre binaire? PUBLIC: Lien listes. JASON HIRSCHHORN: OK, faisons insert. Quel est le grand O de l'insert sur une table de hachage? Quelles sont les hypothèses vous faites? PUBLIC: Vous insertion au au début de la liste de liens. JASON HIRSCHHORN: Probablement la première hypothèse est il n'y a pas de collisions. S'il n'y a pas de collisions, alors le temps d'insertion est une. Si il ya des collisions, et vous êtes faire le chaînage séparé et en insérant au début de la liste de liens, puis insertion est également constante. Si vous faites une table de hachage, mais vous avoir une méthode différente de traiter des collisions, ce qui est une autre méthode? Quoi de est une méthode différente de traiter avec collision dans une table de hachage? PUBLIC: programmation linéaire. JASON HIRSCHHORN: programmation linéaire. Nous allons donc continuer à chercher pour la prochaine place libre. Ce n'est pas le temps d'insertion constante. Vous pourriez avoir à passer par l'ensemble de la table, de sorte que pourrait être grand O de n. Ouais. PUBLIC: Sinon, il suffit de chaînage? JASON HIRSCHHORN: Nous avons fait chaînage séparé. C'était le premier. C'est ce que la liste de liens. Le nom de fantaisie est le chaînage séparé. Il pourrait s'agir de tout type de structure de liste il nous arrive de faire dans la liste de lien. Encore une fois, l'insertion sur une table de hachage pourrait être la constante de temps. Qu'en est-insertion sur une file d'attente d'empilage? PUBLIC: N'est-ce pas constante? JASON HIRSCHHORN: Il est temps constant. Vous êtes juste à la pousser. OK. Insertion, quelles étaient les autres? Sur un essai? Quelle est grand O d'insertion sur un essai? PUBLIC: La longueur est constante. Longueur de la plus longue - la longueur du mot vous insérez. JASON HIRSCHHORN: Désolé? Attends, si ce que j'ai entendu? Vous avez dit - ce que vous avez dit? Quelle a été votre réponse, Marcus? PUBLIC: La longueur du mot vous insérez des caractères, en supposant que c'est un essai de caractère. JASON HIRSCHHORN: OK, donc la longueur du mot. Nous faisons l'hypothèse que c'est une chaîne de caractères. Vous avez dit quelque chose de différent, cependant. Vous avez dit que la longueur du mot le plus long. PUBLIC: C'est juste constante, non? JASON HIRSCHHORN: Pourquoi ce soit constante? PUBLIC: Comme, si vous utilisez grand O notation, il ne varie pas fondée sur le nombre de choses que sont déjà dans le coup. JASON HIRSCHHORN: Donc, nous serions dire qu'il est temps constant. C'est insertion constante, et c'est parce que cette idée - dire que nous avons un mot qui est 45, ou un mot qui est 60, qui a un nombre constant. Et il serait tout simplement être inséré en temps constant. Dans la pratique cependant, il ne serait pas, évidemment, arriver en une milliseconde, par exemple. Mais nous dirions grand O est constante pour un essai. Et c'est l'un de ses plus grands avantages. Qu'en est-il l'insertion dans une liste de lien? Juste un générique, liste de liens classés? Ouais. PUBLIC: J'avais une question. Sur le test, seraient-ils jamais de nous le demander temps d'insertion qui est quatre étapes, ou quelque chose? Ou est-ce juste - quand vous dites le temps d'insertion est un, cela signifie simplement constante de temps? JASON HIRSCHHORN: Oui, ils le feraient toujours demander, est-il grand O de n? Big O de log n? N carré constant. Ce sont vraiment la seule ceux que vous devez savoir. Qu'en est-il sur l'insertion triés liste de liens? PUBLIC: J'avais une question - une question - JASON HIRSCHHORN: Quelle est la réponse à cette question, si? PUBLIC: Attends, qu'est-ce que vous demandez? JASON HIRSCHHORN: Ce qui est grand O de insertion dans une liste de liens triés? PUBLIC: Un? Pas d'attente, pas d'attente, n. JASON HIRSCHHORN: N. ailleurs la liste de lien. Et quelle était votre question? PUBLIC: Donc vous écririez o de k ou o 1 pour le - JASON HIRSCHHORN: Oh. Je voudrais écrire o 1, probablement. Il y avait une autre structure de données cela aurait été bien. Arbre, arbre de recherche binaire. Dans les insertion sur une arbre binaire de recherche? PUBLIC: Connectez-vous. JASON HIRSCHHORN: Alors, quel est le pire cas dans un arbre binaire de recherche? Donc, si nous nous trouvons à commencer à 5, et tous les nombre est supérieur à 5, puis nous avons 5, 7, 9, 11, et ainsi de suite. Dans ce cas, il s'agit simplement d'un lien liste, et nous avons besoin d'insérer tous le moyen à la fin. Alors il est grand O de n. Cela pourrait être notre pire des cas sur un arbre binaire de recherche. Évidemment, vous n'auriez jamais construire un arbre de recherche binaire dans la 5 avec milieu, sachant 5 serait être le plus petit nombre. Mais il pourrait être, si vous êtes à partir de zéro. Toutes les questions sur ce avant que je passer à une autre question? C'est une bonne question. Je ne sais grand O de - PUBLIC: Qu'est-ce que sur la recherche pour ces quatre? JASON HIRSCHHORN: Certainement nous ne recherche et de tri. Nous avons fait tous ces algorithmes, à droite. Attendez, c'est que pour Quiz 1? Était-ce couvert - avez-vous déjà que question sur Quiz 1? La grande exécution de O de recherche binaire, tri par insertion, tri à bulles? PUBLIC: Ouais. JASON HIRSCHHORN: Si vous aviez que question sur Quiz 0, les chances sont que vous ne obtenir exactement la même question sur Quiz 1. Pourrait être encore bon à savoir ceux. Vous devez savoir si tout va bien gh déjà. Mais d'autres runtimes logarithmiques sont probablement bon à savoir. Les choses qui ne sont pas couverts sur Quiz 0. Comme tous ces opérateurs sur ces types de données abstraits. OK, passons à autre chose. Celui-ci devrait être assez rapide. Et c'est une nouvelle langue que nous n'avons pas en fait codé en avant. Il s'agit d'une question demandant pour coder en PHP. Ainsi, considérer le tableau PHP ci-dessous. Ecrire codes PHP et / ou HTML tel qu'il délivre un tableau à deux colonnes avec FO noms et des maisons. Vous n'avez jamais fait cela avant, ce problème spécifique. Mais cela devrait être très familier ce que vous avez fait dans le problème réglé 7. Donc, je serais prêt à parier que vous serez demandé de coder quelque chose en PHP qui est très similaire à ce que vous fait en ensemble de problèmes 7. Tout d'abord, un tableau n'est pas aussi précis. Quel type de réseau est-il? PUBLIC: associatif. JASON HIRSCHHORN: C'est un tableau associatif. Et quelle est la différence entre une tableau associatif et un objet? PUBLIC: Un tableau d'objets a un indice d'entiers, et un tableau associatif est un indice d'une chaîne, ou quelque chose comme ça. JASON HIRSCHHORN: Donc, un tableau de objets aient des indices de entiers, mais un objet a des champs. Il a les noms des champs comme nommer, maison, étudiant. Avez-vous une idée? PUBLIC: Eh bien, associatif tableau est en PHP, non? Et l'objet est en JavaScript? JASON HIRSCHHORN: Honnêtement, il n'y a pas différence entre les deux. Tous les deux ont des chaînes comme les clés, et peuvent ont pratiquement tout ce que la valeur. Différentes langues appellent un chose tableau associatif une chose un objet. Donc, honnêtement, il n'y a pas de véritable différence, mais il ya certainement quelque différences syntaxiques entre les deux. Ouais. PUBLIC: Donc est objet également codé sous le capot comme une table de hachage, alors? JASON HIRSCHHORN: Ce que vous faites dire, codé sous le capot? PUBLIC: On nous a dit que associative tableau était techniquement une la table de hachage. Donc, est objet aussi techniquement une table de hachage? JASON HIRSCHHORN: Je ne vais pas pour répondre à cette question. Je vais revenir à vous sur ce point. Mais je ne pense pas de soit de ceux qui, comme cela. Mais, de toute façon, un tableau associatif et objet, en général, les gens utilisent les termes de façon interchangeable. Dans ce cas, la partie cool est que vous pouvez utiliser les touches. Strings les clés, plutôt que seulement des chiffres simples. Donc, je vous ai parlé ce pendant un certain temps. Heureusement, certaines personnes ont obtenu commencé à ce sujet. Nous allons écrire un peu de PHP et HTML code, de sorte que nous obtenons une à deux colonnes table avec des noms et des maisons TFs. OK, je voudrais également un en-tête ramer sur ce tableau. Donc, je vais aller droit dans ce. Nous allons déposer, nouveau, et nous allons - OK. Comment puis-je commencer un tableau? Quel est le mot-clé, Michael, pour commencer une table? PUBLIC: Tableau. JASON HIRSCHHORN: Tableau. Et si j'ouvre une étiquette, ce qui dois-je? PUBLIC: Une tête? Ou, je suppose, de la classe. JASON HIRSCHHORN: Alors, désolé. Supposons que nous avons déjà écrit doctab, HTML, tout ça. Mais si j'ouvre cette étiquette de table, ce qui dois-je écrire? pour valider le HTML? PUBLIC: Fermez-le. JASON HIRSCHHORN: Fermez la balise. Comment puis-je écrire une balise de fermeture table? PUBLIC: Dot slash table. JASON HIRSCHHORN: Slash table, grand. Est probablement logique d'écrire à la fois de ceux ensemble parce vous avez à faire. OK, si je veux un en-tête ligne, comment faire J'écris une ligne d'entête avec des titres? PUBLIC: Est-il moins de 10 h à proximité - TR, ouais. JASON HIRSCHHORN: TR? PUBLIC: Alors même chose, la barre oblique, ouais. JASON HIRSCHHORN: OK, et me donner deux colonnes. PUBLIC: T D? JASON HIRSCHHORN: OK. Je veux deux colonnes. Est-ce à me donner deux colonnes? Combien de colonnes est-ce? Une. Donc, nous allons Copiez et collez ce. Donc en fait, sur le quiz, tout ce code que nous avons écrit jusqu'ici était effectivement donné à vous. Mais vous devriez sans doute encore savoir comment l'écrire. Ouais. PUBLIC: Votre maison est entre les deux. JASON HIRSCHHORN: Boom. Il faut aller là, non? Bon appel. Encore une fois, tout ce code est en fait qui vous est donné sur le quiz réelle. Mais c'est amusant à écrire, et vous doivent savoir comment l'écrire. Donc, c'est là que vous devez pour commencer votre code. Que devons-nous écrire ici? Désolé, je dois changer le nom de ce fichier. Donc, nous avons sauvé dans un fichier HTML., pas dans un fichier PHP.. Ces choses ne rien dire dans un fichier PHP.. Nous sommes donc dans un fichier HTML.. Quelle est la première chose J'ai besoin d'écrire? Je veux mettre un peu de PHP code dans une page HTML. PUBLIC: PHP, comme une autre carotte et point d'interrogation PHP, non? JASON HIRSCHHORN: Très bien. Et comment puis-je finis qui? PUBLIC: Avec un point d'interrogation. JASON HIRSCHHORN: C'est très bien. C'est la première chose que je dois faire si je veux de mettre un peu de code PHP ici. PUBLIC: J'ai pensé que PHP. fichier HTML pourrait prendre. JASON HIRSCHHORN: Ouais. Un fichier PHP. Peut prendre un certain HTML et affiché. C'était mon mauvais. J'essayais juste d'imiter ce qu'il était sur le questionnaire. OK, désolé de vous confondre. Oui, practice.HTML. Maintenant, nous allons mettre du code PHP po Quelle est la première ligne de code PHP je devrais écrire? Je vais passer par ce tableau et d'en faire une table. Ouais. PUBLIC: Vous pouvez soit utiliser un H boucle ou une boucle. JASON HIRSCHHORN: OK, ce voulez-vous utiliser? PUBLIC: Je voudrais utiliser une boucle for. Pour, puis vous faites signe de dollar i est égal à 0 point-virgule dollar signer i inférieur à 2. Et puis virgule i dollar signer i plus plus. JASON HIRSCHHORN: Comment faire vous savez utiliser un 2? PUBLIC: Parce qu'il y avait deux tableaux associatifs au sein de la plus grande tableau associatif. JASON HIRSCHHORN: Donc, la grande chose de pas un tableau associatif. La grande chose est juste un tableau normal. Mais vous avez raison, il ya deux tableaux associatifs l'intérieur de notre réseau plus important. C'est pourquoi vous utilisez deux. Je me sens mal à l'aise en supposant que ils sont deux, alors c'est quoi une façon d'écrire ce sans en supposant qu'ils sont 2? PUBLIC: [inaudible]? JASON HIRSCHHORN: OK, comment écrivez-vous que? PUBLIC: Foreach signe dollar tfs ou comme signe dollar tf. JASON HIRSCHHORN: OK, donc pour chaque TFS TFS, je souhaite, maintenant encore une fois, avoir ma table. Alors, qui peut me donner la prochaine ligne de code? PUBLIC: Imprimer, puis dans citations, fin de support de tr support, fin de citation. parenthèses de fin, point-virgule. JASON HIRSCHHORN: OK, et Qu'est-ce que va faire? PUBLIC: Il va dire, nouvelle ligne. Il va mettre l' marquer une nouvelle ligne. JASON HIRSCHHORN: droit, ce PHP, comme nous avons parlé plus tôt - ce PHP va être évalué, puis il va imprimer à ce fichier un Table de remorquage, puis que HTML sera évaluée. Nous ne faisons que copier ce HTML que nous avions ici. Ouais. PUBLIC: [inaudible]? JASON HIRSCHHORN: Désolé? C'est ici. Automne 2012. Ne regardez pas les réponses, nous allons le résoudre ensemble. Donc, nous imprimons ligne de la table. Alors vous êtes probablement dans le swing de choses. Quelle est la prochaine ligne de code que nous devons écrire? Assam, donne-moi la prochaine ligne de code. PUBLIC: Vous avez besoin du nom de la tf. Tf supports guillemet ouvert nommer crochets fermés. JASON HIRSCHHORN: Donnez-moi leur nom. PUBLIC: Vous devez imprimer que. [VOIX interposition] JASON HIRSCHHORN: OK, comment puis-je l'imprimer? [VOIX interposition] JASON HIRSCHHORN: il me manque quelque chose maintenant. Qu'est-ce que je suis absent? PUBLIC: Vous avez besoin d'un signe de dollar. JASON HIRSCHHORN: Qu'est-ce autre qui m'échappe? Tout ce que nous avons imprimé jusqu'à présent est la tr. PUBLIC: Fermez le tr après. JASON HIRSCHHORN: Donc, nous avons besoin pour fermer la tr après. Qui voit ce qui nous manque sur la ligne 16? Ouais, Anna. PUBLIC: Vous devez ouvrir un td et accolades. JASON HIRSCHHORN: Et où mettons-nous accolades? PUBLIC: Autour du nom de tf. JASON HIRSCHHORN: Comme ça? PUBLIC: Ouais. Et puis fermez le td. JASON HIRSCHHORN: Comme ça? PUBLIC: Avez-vous besoin guillemets marques à côté des accolades? JASON HIRSCHHORN: Juste ici? Non, vous n'avez pas. Donc, c'est exactement ça. Ouais. PUBLIC: Donc la différence entre ce et encatenating avec des points est, si vous utilisez des points, vous devriez avoir la guillemets, puis un point, alors le point - JASON HIRSCHHORN: C'est exact. Donc, vous dites qu'il ya une ultime façon d'écrire ce genre. Qu'est-ce que l'opérateur de concaténation en JavaScript? PUBLIC: Un signe plus. Vous avez oublié de mettre le bouclés corset. JASON HIRSCHHORN: Très bien. Et il ya une ligne de plus des disparus de code. Qui peut me donner la dernière ligne code qui nous manque? PUBLIC: Juste exactement la même chose, juste avec la maison à la place du nom. Grand JASON HIRSCHHORN: Très bien. Et votre syntaxe est exactement ce qu'il faire avancer les choses dans un tableau associatif. Ainsi, dans le questionnaire réelle, vous êtes effectivement donné jusqu'à ici. Donc, ce code vous a été donné. Tout ce que vous aviez à écrire étaient les quatre lignes et n'oubliez pas de fermer la balise table. Vous avez fait effectivement tout cela et plus. Ouais. PUBLIC: Donc, il serait fonctionnellement même si vous venez d'avoir ce que tout en un appel d'impression grand, non? Et puis il suffit de concaténer sur, et cetera? JASON HIRSCHHORN: Comme ça? PUBLIC: Ouais. Il n'aurait tout simplement pas l'air bien si vous étiez regarder quand vous êtes inspection l'élément sur votre site, non? JASON HIRSCHHORN: Je suis d'accord. Si j'ai chargé cette page, je serais en mesure de voir ce code PHP, jamais? PUBLIC: Non JASON HIRSCHHORN: Non Et en fait, je ne veux pas. PUBLIC: Ce n'est pas HTML, non? Donc, vous pourriez être en mesure de - JASON HIRSCHHORN: Donc ce serait PHP évaluer côté serveur. PHP est toujours évaluée côté serveur, de sorte vous n'êtes jamais en mesure de voir le code PHP. PUBLIC: Mais vous seriez en mesure de voir le résultat des impressions. JASON HIRSCHHORN: Droit. Et il ne pourrait pas honnêtement mettre tout cela sur la ligne. Il peut formater bien pour vous, ou il peut mettre sur une ligne. Claire. Mais oui, bon point. PUBLIC: Comment se fait il ya pas de mise en évidence de texte pour l'une des commandes PHP? Parce que je me souviens avoir vu cela. JASON HIRSCHHORN: Parce que c'est un Fichier. HTML ici au sommet. Là vous allez. PUBLIC: Si nous avons la méthode initiale le pour les boucles, à droite, si nous voulu accéder à un tfs, serions-nous faire support de tfs 0 support, puis [Inaudible]? JASON HIRSCHHORN: Vous serait - si vous dites pour la boucle, vous ferait en signe dollar tfs support 1 ou i, à droite. Ou le signe dollar je ferme support puis crochet guillemets, ouais. OK, excellent. Nous avons une question rapide. Sept minutes, donc je veux pour aller sur celui-ci. Ceci est un autre exemple. Nous sommes maintenant une toute autre langue. Nous avons du code HTML. C'est une sorte de petit à l'écran, mais Je veux que vous regardez à travers ce vraiment rapidement, et quelqu'un peut me dire, si je devais charger cette page web, ce que je voudrais voir? Décrire tout sur cette page Web. Noé? Qu'est-ce que je vois? PUBLIC: Code à l'extrémité avant du Google avec une sensation pour le texte et une bouton d'envoi. JASON HIRSCHHORN: Et qu'est-ce dirait le bouton? PUBLIC: Soumettre. Oh, la recherche. Je suis désolé. JASON HIRSCHHORN: Il dirait recherche. Rappelez-vous, nom. Qu'est-ce que nous utilisons le nom de? Cet attribut de nom, ce qui est celui utilisé pour? [VOIX interposition] PUBLIC: C'est son nom pour quand il est cliqué? JASON HIRSCHHORN: C'est possible. Mais que voyons-nous en général - pourquoi donnons-nous ce nom file d'attente? Pourquoi ne voit-on cela? Ouais. PUBLIC: N'est-ce pas devenu index de la variable super-globale? JASON HIRSCHHORN: Oui, généralement quand Ce formulaire soumettra, et alors où serait-ce à présenter? Qu'est-ce que la page? Noé, ce que la page serait-ce soumettre à? PUBLIC: Je ne suis pas sûr. JASON HIRSCHHORN: Où pourrions nous pouvons le trouver? Où trouvez-vous ce page, il soumet? Quelle ligne de code? PUBLIC: Action de formulaire. JASON HIRSCHHORN: Exactement. Action. Donc, il se soumet à la page de recherche. Recherche barre oblique inverse. Donc, c'est exactement ça. Quelle est la méthode? PUBLIC: Get. JASON HIRSCHHORN: Get. Exactement. Ainsi nous lisons ce. Cela va être une forme. Vous avez parfaitement raison. Deux choses sur la forme, le titre de l' page et le haut serait Google. Voici donc deux questions que vous devriez être en mesure de répondre sur cette page. Si ce code html vit à ce site et l'utilisateur saisit bug dans ce texte champ ici, ce sera URL l'utilisateur se trouve sur soumettre le formulaire? Donc, nous avons ce droit ici. Je vais revenir à cette page, si. Je vais écrire cette première partie. Tout le monde peut voir ici? OK, Mario, vous pensez que vous savez? Qu'est-ce que la page? PUBLIC: recherche Backslash. JASON HIRSCHHORN: Je vais pour descendre ici. OK, barre oblique inverse question de recherche marque q est égal bug. Quelqu'un a une autre suggestion? Ouais. Alors, comment pouvons-nous obtenir? Eh bien, nous avons vu cela avant. Et vous êtes arrivé à l'heure. Vous aviez raison, Noah, que le l'action nous dit ce Cette page nous allons. Nous savons aussi ce procédé. Nous faisons get. Et la différence entre GET et POST est que d'être témoin dans l'URL et après ne fonctionne pas. Donc, si j'ai écrit après là, dans la méthode, ce serait différent? PUBLIC: Il serait juste être la recherche de barre oblique. JASON HIRSCHHORN: Il serait juste être réduire la recherche. Rien ici ne se produirait. Mais parce que c'est un obtenir, l'URL s'affiche comme suit. Nous voyons d'abord un point d'interrogation et nous voyons le nom et la valeur. Dire qu'il y avait un autre champ de texte et Je lui ai donné un nom de r et je saisir un valeur, chenille. Qu'est-ce que cela ressemble maintenant? J'ai encore une zone de texte, je donne un nom de r et une valeur de chenille. PUBLIC: Après barre vous avez la chenille et commercial. JASON HIRSCHHORN: C'est pas esperluette. PUBLIC: Ou tout simplement ce que et le symbole. JASON HIRSCHHORN: Ouais, non. Vous aviez raison, j'avais tort. C'est comme un g. PUBLIC: Caterpillar. r est égal à chenille, désolé. JASON HIRSCHHORN: Est-il pas r là-dedans? PUBLIC: Non, il est. JASON HIRSCHHORN: Nous parlerons à ce sujet après la classe. C'est exactement ça. Donc le et est correcte. Et alors vous pourriez avoir beaucoup de ceux-ci, et ils seraient tous enchaînés ainsi que et. Donc, c'est exactement ça. Il ya une autre question. Dessinez DOM de ce code html, à partir avec le document. Nous pourrions le faire en deux minutes. Nous allons le faire ici. Je vais revenir à cette page. OK, nous commençons avec le document. Quelle est la prochaine? Ainsi, lorsque vous lisez à travers - PUBLIC: HTML. JASON HIRSCHHORN: HTML est prochaine. Nous allons aller tag par tag. Quoi de HTML après? PUBLIC: Head. JASON HIRSCHHORN: Head. Qu'est-ce après la tête? PUBLIC: Titre. JASON HIRSCHHORN: Titre. Et le titre a une valeur de Google, mais je ne vais pas écrire que dans pour le moment. OK, d'où vient corps aller? PUBLIC: aussi se détacher de l'HTML. JASON HIRSCHHORN: Exactement. Corps se détache d'ici. Est-ce que tout le monde voir pourquoi c'est le cas? Vous devriez être en mesure de comprendre ce, trop, même si je n'ai pas eu cette belle indentation. L'indentation sorte de le donne loin, mais vous pouvez voir que la balise de tête a été fermé, ce qui signifie probablement que nous ne peut pas descendre ici. Nous devons revenir à ce que C'était juste avant la tête tag, ou en vertu de cette. Nous sommes même avec l'étiquette de tête. Et sous le corps va formulaire. Sous forme, il ya deux entrées. OK. C'est tout ce que j'ai. Quiz 1 est demain. Je suis tellement excitée pour vous les gars. Ça va être une explosion. Si vous avez - PUBLIC: [applaudissements] JASON HIRSCHHORN: Oh arrêtez, arrêtez. Mais non, je plaisante. Si vous avez des questions, droit après l'article, je serai dehors. Si vous avez des questions ce soir, n'hésitez pas à appeler, email, Gchat, transporteur me Pigeon. Bonne chance pour demain. Passez de bonnes vacances de Thanksgiving, si je ne vous vois pas avant. Et je vais vous voir après Thanksgiving le mardi pour notre finale section fête jamais. PUBLIC: [inaudible]. JASON HIRSCHHORN: Très bien. OK, je vais voir les gars à côté semaines, ou d'environ deux semaines. Et bonne chance pour demain.