ALLISON BUCHHOLTZ-AU: Hey, tout le monde.
Bienvenue à la section.
Aujourd'hui va juste être tout questionnaire examiner pour votre quiz mercredi.
Je l'espère le monde se souvient que ils ont un quiz mercredi.
Et si vous ne l'avez pas, eh bien, maintenant que vous avez été rappelé.
Donc, assurez-vous que mercredi vous vous présentez pour la classe ou comme d'autres hébergements
nécessaire.
Les gars, vous allez être génial.
Ça va être génial.
Et je vais faire tout mon possible pour vous aider à préparer aujourd'hui pour votre quiz
maintenant.
Et aussi dans le cas où vous ne savez pas, il ya une grande session d'examen de cours
aujourd'hui à 7 heures Laboratoires du Nord-Ouest salle B103.
Vous pouvez me voir pour un rappel comme Je vais animer une partie de la session d'examen
aussi.
Donc, si vous ne pouvez pas obtenir assez de moi maintenant, vous pouvez venir ce soir.
>> Très bien, alors commençons par le commencement.
Juste quelques conseils de quiz avant fait plonger pour avis.
Donc, comme pour tout examen, la pratique va certainement vous aider.
Il ya des examens du passé six ou sept ans là-bas,
de sorte que ya beaucoup de pratique matériel pour vous les gars d'avoir.
Et en fait, aujourd'hui est vraiment juste va se passer sur tous les sujets
que vous les gars avez des questions sur ainsi que de travailler à travers les problèmes pratiques
de questionnaire zéro.
Alors je vais vomir questionnaire zéro l'an dernier ici,
et nous pouvons travailler par des problèmes que vous les gars aimeraient.
>> Ainsi la pratique.
Vous allez commencer à le faire aujourd'hui.
Code de papier.
Donc oui, si tout le monde pourrait effectivement sortir
papier, qui sera grande, parce que vous n'êtes pas
allez avoir votre ordinateur sur le examen et écrivant le code à la main
est souvent beaucoup plus difficile que vous pourriez vous attendre.
Vous êtes habitué à juste voir et saisissant,
et vous avez votre compilateur vous aider quand vous avez des erreurs,
mais vous ne recevez pas que sur l'examen.
Donc, il est vraiment important de fait être capable d'écrire le code,
et que la mémoire musculaire de faire à la main va vraiment vous aider.
>> Nous allons donc faire un peu près.
Il est lundi.
Votre examen est le mercredi.
Mais si vous avez le temps, certainement prendre un
des examens de l'année dernière ou la année avant sous la contrainte de temps
d'une heure et demie.
Il suffit de frapper à une heure et une moitié de temps,
et vous asseoir, et travailler seulement par les problèmes
comme si vous y étiez prendre, parce que l'un
des plus grandes choses que nous entendons parler les questionnaires est qu'ils sont très longues.
Il est un lot de matériau.
Il ya beaucoup de questions, et la plupart des gens ne peuvent pas terminer.
Je sais que je ne l'ai pas totalement fini mes quizz quand je pris la classe.
>> Sur cette note, comme un moins section à l'aise,
comprendre que ce cours est destiné pour répondre à des gens de tous les niveaux.
La raison pour laquelle nous avons vous divisez moins à l'aise, quelque part entre les deux,
et plus confortable est de sorte de le rendre plus équitable.
Et si vous êtes moins à l'aise, il est pas nécessaire en soi pour que tout.
Comme si vous receviez tout, vous auriez probablement
être dans la section la plus à l'aise.
Alors, évidemment, ne pas battre jusqu'à vous trop dur si vous ne pouvez pas terminer l'examen.
Croyez-moi, je ne le fais pas.
Je suis encore un concentrateur.
Je suis encore en contribuant à l'enseignement du cours.
Vous serez très bien.
Bien.
Et enfin, de dormir un peu.
Évidemment, avec tout examen nous disons toujours cela.
Gavage la nuit avant et sans dormir
pas-- ne peut-être que si qui fonctionne pour vous, allez-y.
Mais, pour la grande majorité des gens, dormir un peu,
laisser reposer votre cerveau et de récupérer avant de venir à l'examen
va vraiment vous aider.
Aussi il y aura presque sûrement bonbons à l'examen,
si vous avez à la hâte.
Les gars, vous allez faire une grande.
Ça va être bien.
Et maintenant, dans la prochaine heure et demie, je va essayer de vous Prep mieux que je peux.
>> Je dois donc les lames de fond toutes les sections jusqu'à présent.
Je ne vais pas passer par chacun d'eux parce que ce est pas
réalisable en une heure et demie et que de travailler à travers les problèmes pratiques.
Ainsi, au lieu que je dois une liste de sujets.
Ce sont toutes les choses que nous pourrions vous interroger sur.
Si il ya quelque chose qui saute vraiment sur
que vous voulez aller sur, que vous tiens moi d'aller sur le plan conceptuel,
Je peux essayer de donner vous un aperçu il.
Ou si vous voulez sauter à droite à action pratique des problèmes ensemble,
nous pouvons le faire.
Il est à vous les gars.
Il n'y a pas que beaucoup d'entre vous.
Donc, il ya tout ce que vous les gars aiment faire.
Je veux être le plus utile pour vous les gars.
Donc, je vais vous laisser vous regardez.
>> PUBLIC: Une chose est le tableau que nous gardions
dire sur la pile et le tas.
Juste l'idée derrière que et ce que cela signifie.
ALLISON BUCHHOLTZ-AU: Ouais, OK.
Ceci est d'autant façon à le fin, alors laissez-moi faire défiler.
>> PUBLIC: Nous ne devons pas le faire maintenant, mais peu importe.
>> ALLISON BUCHHOLTZ-AU: Il y avait anything-- celui-ci.
Est-ce genre de flou pour les gens?
PUBLIC: Ouais, je seconde que.
Et pouvons-nous également ne débordement de tampon?
ALLISON BUCHHOLTZ-AU: débordement de tampon?
Dáccord.
Donc débordement de tampon est assez facile de simplement parler.
Il est essentiellement tampons que vous pensez de la mémoire de tableau que vous avez, non?
Nous parlons habituellement d'environ débordement de tampon lorsque
vous n'êtes pas vérifier combien l'utilisateur met en, non?
Et l'idée étant avec débordement de tampon est
ils mettent en loin trop de données pour l'espace
que vous avez alloué pour eux, non?
>> Donc, si vous dites, donnez moi quelque message, nous sommes
en supposant qu'ils vont donner nous un message de longueur raisonnable.
Peut-être une ou deux lignes, ainsi de suite.
Donc, nous ne vérifions pas.
Au contraire, ils nous nourrissent dans un tout le livre qui est un message,
et qu'il déborde la quantité de espace que nous avons prévu pour cela.
Et ce qui se passe est qu'il pourrait écraser endroits que ça ne le supposait.
>> Donc, je sais professeur Malan a déclaré quelque chose à propos des attaques de type buffer overflow.
Voilà donc où la volonté entrée de l'utilisateur une certaine quantité massive de données dans l'espoir
qu'il écrase passé la fin de votre tampon
et remplace quelque chose-- Je me demande Je nous ai les diapositives ici.
Je ne pense pas que nous avons ces diapositives ici.
Mais au fond, il écrase une partie de mémoire
qui lui permet d'accéder à des parties de votre ordinateur
que vous ne seriez pas ont normalement accès.
>> La plus grande chose avec débordement de tampon est juste
à comprendre qu'il qui se passe quand vous n'êtes pas
vérifier combien votre utilisateur met en.
Lorsque vous n'êtes pas genre de protéger contre cela.
Et à sa plus simple expression chose, il est juste votre utilisateur
l'entrée d'une quantité massive de données dans une tentative
pour remplacer une certaine sécurité partie de votre mémoire.
Voilà tout ce qu'il est.
>> Donc ce ici, pile et le tas.
Fondamentalement tout cela est est juste une représentation de mémoire
et où les choses sont stockés.
Voilà vraiment une sorte de tout ce que vous devez savoir.
Les choses les plus importantes que vous devez savoir sont
that-- laissez-moi voir si il ya un better-- ici.
Voilà donc la pile ici.
>> Donc pile a à voir avec l'ensemble de vos fonctions
que vous appelez à un moment donné.
Et ce qui est important de se rappeler aller hors de la semaine dernière avec malloc
est que vous ne devez pas vraiment contrôle nécessaire sur elle.
Tout dépend du moment où certains fonctions exécutent.
Et quand ils exécutent, ils avoir ce qu'on appelle des cadres de pile
qui montent ici.
>> Donc tout type de produit sans aucun apport réel de vous.
Vous écrivez votre programme, et vous laisser tourner,
et la pile de type prend soin de lui-même car il a besoin.
Donc, si en principal que vous appelez cube, qui sera passé ici.
Cela va créer un cadre.
Mais il n'y a rien que vous faites explicitement pour créer ce cadre de pile autre que
écrire la fonction pour commencer, OK?
>> Quel est votre type de sous contrôle est le tas avec malloc.
Donc, lorsque vous quelque chose malloc, vous prenez de la mémoire dans le tas.
Et qui est la mémoire que vous avoir, par manque d'un meilleur mot,
contrôle explicite sur, car rappelez-vous avec malloc
il est fondamentalement il jusqu'à ce que vous dites le contraire.
Pour ceux d'entre vous qui section regardé la semaine dernière,
il est là jusqu'à ce que vous lui dites de s'en aller.
Il sera là à moins que autrement dit pas.
Ainsi, le tas est juste quelque chose vous pouvez penser que la mémoire
que vous avez le contrôle sur.
Et ce ne sont que la deux grandes choses différentes.
>> En dehors de cela, vous ne devriez pas avoir à trop se soucier de la pile et le tas
des questions ou généralement plus juste si vous avez des paramètres locaux
ou une fonction serait-il sur la pile ou le tas.
Évidemment, dans ce cas, il serait la pile.
Si vous allouer de quelque chose, où est ce que viennent-ils?
Le tas.
Si vous regardez quiz de pratique, ceux sont généralement le type de questions
dont ils disposent.
>> Vous ne devez pas vous inquiéter trop à ce sujet.
Vous obtenez en plus explicitement sur pile et le tas
plus tard ou dans d'autres classes CS.
Il suffit donc d'avoir une sorte de idée générale de ce que cela est
sera bon, que je juste un peu de passa.
Tous les autres sujets?
Oui?
>> Public: Pouvez-vous revenir sur pointeurs de nouveau très rapidement?
ALLISON BUCHHOLTZ-AU: pointeurs?
Voulez-vous conceptuel Vue d'ensemble de pointeurs
ou pratiquez-vous avec des pointeurs?
PUBLIC: Un peu comme la syntaxe.
ALLISON BUCHHOLTZ-AU: La syntaxe?
Ouais.
OK, nous y arrivons.
Oui, si cela est juste un peu de quelque chose quand vous avez une fonction récursive,
chaque fois que la fonction récursive est appelée, il ajoute simplement un autre cadre de pile.
Quasiment un exemple de la façon dont vous faites pas vraiment
avoir le contrôle de la images sur votre pile.
>> OK, les pointeurs.
Tout droit, créant ainsi des pointeurs.
Rappelez-vous, il est juste de type étoile.
Donc, quel que soit le type de données que vous allez être en montrant.
Ce serait donc un pointeur vers un int.
Ce serait un pointeur sur char.
Ce serait un pointeur sur un flotteur.
Donc, il est fondamentalement ce que vous voulez qu'il soit pointe vers,
étoiles est la façon dont vous déclarez le curseur, OK?
>> Mais puis obtient évidemment un peu difficile quand vous avez pointeur
ou vous avez jouer que ce soit.
Ainsi, la grande différence est lorsque vous declaring--
nous avons donc some-- si cela prend un certain int étoiles.
Donc, cela est certain pointeur appelle à un int x, non?
Alors rappelez-vous ce que cela fait est-ce le système appelle x.
Et cela va avoir une certaine adresse, non?
Donc disons que ceci est notre adresse.
Pointeurs contenir des adresses.
Donc ce que cela dit est que, à ce emplacement, nous stocker un int.
>> Donc, une autre façon que nous pouvons penser ceci est que cela est quelque int.
Nous avons pas vraiment affecté à rien encore, mais il est juste un int.
Donc, nous pouvons faire est que si nous ne star du x est égal à 5, cela devient un 5, OK?
Ce me dit d'aller à tout ce qui x est pointant, alors allez à cette adresse
et le rendre égal à 5.
Donc, nous attribuons 5 à cette adresse, non?
>> Et puis si vous faites cela, ce qui nous donne l'adresse de.
Ceci est l'adresse de l'opérateur.
Alors, quelle est l'adresse de x?
Nous ne savons pas.
Nous avons pas attribué il une adresse.
Nous pourrions dire qu'il est some-- maintenant nous avons donné il une adresse, si l'adresse est de 4.
Et en fait, si nous passons par quelque chose comme ça, un peu ce que nous avons fait.
Ainsi, à travers ici-- travail je trouve ça aide si vous dessinez des pointeurs.
Si vous êtes sur votre examen, je recommande fortement boîtes dessin.
>> Donc, cette première, int x est égal à 5.
Cela signifie simplement que nous avons une certaine placer en mémoire est de 5, non?
Et notre table nous dit ici qu'il est à l'adresse 0x04.
Et puis nous créons quelque pointeur.
Donc, nous allons décomposer un à la fois.
Donc, cela crée une certaine boîte à un int, non?
Il va tenir certains adresse d'un il.
Donc, cela est certain pointeur.
Et cette craie est vraiment petit.
Nous avons donc une certaine pointeur ici.
Et notre table nous dit qui est l'adresse est 0x08.
Laisser refroidir.
Et nous affectons à l'adresse de x.
>> Rappelez-vous, les pointeurs contenir des adresses, OK?
Donc, si nous voulons tenir x, nous avons d'utiliser l'opérateur d'adresse, qui
est l'esperluette, pour obtenir l'adresse de x, qui, dans ce cas, 0x04.
Et puis si nous avons certains copie int, cette juste
crée une autre boîte que détient une copie int appelé.
Et si nous assignons à this-- si cela est le référençant.
Donc, il me dit d'aller à tout ce qui Adresse pointeur contient.
Pointeur contient l'adresse, de sorte que nous allions là-bas,
et nous disons, OK, ce qu'il ya dedans?
Il est 5.
Donc copie devient 5.
Donner un sens?
>> Qu'est-ce que si je tentais de céder cela juste pour le pointeur.
Qu'est-ce que le pointeur en fait égal?
Il serait tout simplement ce que pointeur contient, non?
Et puis si je l'ai fait?
Qu'est-ce qui copie maintenant?
>> PUBLIC: 0x08.
ALLISON BUCHHOLTZ-AU: Yep, le Adresse de notre pointeur.
Une partie de ce que doit être ré-expliqué?
Laisser refroidir.
Il ya certainement une très problème du plaisir sur un questionnaire
que nous pouvons au cours de cette vous donne plus pratique.
Les gars de la semaine dernière peut vous dire qu'il était pas si mal que ça.
Nous avons traversé un ensemble graphique, et tout le monde a fait de grandes.
>> OK, donc ce est aperçu la syntaxe des pointeurs.
La plus grande chose est de comprendre comment pour les créer, faire référence,
et l'adresse de, OK?
Laisser refroidir.
Les autres sujets avant nous plongeons dans la pratique.
Aussi, si nous allons à travers les problèmes pratiques
et il ya quelque chose que vous voulez un recyclage, nous pouvons le faire aussi.
Avez-vous quelque chose?
>> PUBLIC: Structures et listes liées.
ALLISON BUCHHOLTZ-AU: Structures et les listes chaînées, OK.
Donc structures.
Nous allons vraiment au cours de cette nuit trop.
OK, donc structures.
Structures sont essentiellement juste une façon pour vous de tenir
plusieurs valeurs de types différents.
Donc, avec un tableau nous sommes resserré à un type de données.
Notre réseau a soit juste être des nombres, ou tout simplement être caractères, ou tout simplement être flotteurs.
>> Mais peut-être vous avez besoin de contenir plus que cela.
Peut-être que vous avez besoin de hold-- si vous parlez d'un étudiant,
vous allez avoir leur maison, leur numéro d'identification, leur âge, leur lieu de résidence,
droit?
Et tous ceux qui sont différentes sortes de types.
Donc, vous ne pouvez pas stocker ceux tout dans un tableau.
>> Donc ce que vous pouvez faire est de vous peut créer une structure, qui
vous pouvez penser que votre propre type de données à caractère personnel.
Ainsi, au lieu d'avoir juste ints et au lieu d'avoir juste flotteurs,
vous pouvez avoir un étudiant de type a tous ces domaines en elle.
Donc, la façon dont nous initialisons nos struct est-- fait
depuis mon écriture est terrible, nous vont passer à la dactylographie.
Woo.
>> OK, donc si nous voulons créer un struct-- Je vais juste vers le bas ici.
Ignorez le principal dans tout ce que nous utiliserons plus tard.
Ainsi, la manière que vous voulez faire il est avec typedef struct.
Et Appelons cet étudiant parce que ce que je servais.
OK, si vous êtes signifie typedef la définition d'un nouveau type, OK?
Il ya des nuances dans quand vous faites juste une structure par rapport à une structure de typedef.
Pour toutes les intentions et fins, les gars sont juste
allons supposer qu'ils sont environ la même et juste
utiliser typedef struct pour l'instant.
Il va devenir beaucoup plus apparent dans votre prochaine P défini quelles sont ces différences,
mais je ne pense pas que vous devez inquiéter à ce sujet en ce moment.
Je préférerais vous savoir comment créer un,
accéder, et affecter la fonction [? valeur. ?]
>> Un nouveau type de structure, et nous l'appelons étudiant.
Ainsi, après nous avons terminé la création de ce, pour toutes fins utiles,
vous aurez un type appelé étudiant.
Et vous pouvez penser à lui comme un type comme un int ou un float, ou un car.
Il est juste un autre type, OK?
>> Ainsi, dans celui-ci, qu'avons-nous?
Nous avons peut-être un nom.
Alors peut-être que nous voulons un nom de chaîne.
Et nous avons peut-être un int qui est une pièce d'identité.
Et nous avons un autre en qui est le numéro de téléphone.
Et nous avons some-- voyons.
Que pourrions-nous avoir?
Nous avons une chaîne de caractères à sa maison.
Toutes les choses que l'étudiant a.
>> Donc, cela crée une structure maintenant.
Alors, comment pouvons-nous créer un étudiant?
Si nous avons une variable qui est allons parler ici Walker,
donc nous nous sommes juste have-- vais appeler ce marcheur.
Il a besoin d'un type.
Quel est votre type?
Public: étudiants.
ALLISON BUCHHOLTZ-AU: Student.
Donc, cela crée seulement un objet, vous pouvez penser qui a toutes ces choses.
Vous venez de créer un étudiant marcheur.
Alors maintenant, nous devons être en mesure d'attribuer tout cela, non?
Donc ne Quelqu'un se souvient comment nous accédons à l'intérieur d'une structure?
PUBLIC: Période.
ALLISON BUCHHOLTZ-AU: Période Exactement.
Donc, si nous voulions attribuer lui un nom, nous pourrions le faire.
Évidemment, cela être-- cette partie serait ici
être à l'intérieur principal, de sorte que effectivement permettez-moi de le faire.
Déclarer ce haut principal si que nous pouvons utiliser dans principal.
Alors maintenant, je veux qu'il fasse ID, et nous allons faire un peu de là-bas,
et puis nous allons assigner une maison.
Bam.
Laisser refroidir.
>> Alors maintenant, nous devrions jamais besoin de l'accès rien plus tard peut-être on-- nous--
si jamais nous avons besoin d'accéder à quoi que ce soit, disons simplement faire une copie ID int.
Et je veux copier ID Walker dans cette.
Comment pourrais-je le faire?
Vous devez accéder à l'intérieur du marcheur struct à [? aller à cela?] [? E?].
Et de la même manière que nous lui a attribué ici, comment
pourrions-nous y accéder quand on veut donner cette valeur à quelque chose d'autre?
PUBLIC: Walker.id.
ALLISON BUCHHOLTZ-AU: Oui, exactement.
Voilà donc à peu près tout vous avez besoin de savoir pour les structures.
Vous avez juste besoin de penser à comme autre variable.
Fondamentalement, un créer votre propre type de variable, OK?
Vous l'utilisez pour déclarer des variables en aucune façon.
Voici marcheur est toujours une variable.
Il a juste un étudiant de type maintenant la place d'un type int, ou une chaîne de type,
ou un type char.
Si il y avait un moyen facile de parler sur Structures, il est littéralement juste un
créer votre propre type de données qui vous permet de groupe
Tous ces différents type de données ensemble.
Est-ce que cela a un sens?
Dáccord.
Cela et l'accès à des points.
À peu près tout ce que vous avez besoin.
>> OK, d'où vient mon PowerPoint aller?
Ce est ici.
Eh bien cela est bizarre.
Aha.
OK, cool.
Toutes les autres choses ou avons-nous vouloir se diriger à la pratique?
Pratiquer?
Dáccord.
Impressionnant.
Je vais quitter cette.
Si à tout moment pendant questions pratiques,
Je suis heureux de réorganiser et passer par les choses.
Donc je dois questionnaire zéro ici.
Si vous voulez les gars à tirer l'installer sur votre ordinateur,
tout comme prendre cinq minutes pour parcourir.
Peut-être choisir un sommet questions que vous voulez aller sur.
Si vous les gars ne pouvez pas décider, nous allons simplement commencer lentement à travailler à travers eux,
mais je suis sûr qu'il va y avoir une certaine questions que vous êtes particulièrement
désireux de parler et avoir me travaille à travers avec vous tous.
Il suffit donc aller de l'avant et prendre cinq minutes.
Faites défiler.
Et ceci est le test à partir de 2013.
>> PUBLIC: Zero?
>> ALLISON BUCHHOLTZ-AU: Ouais, quizz zéro.
Nous ne faisons pas un questionnaire choses.
Nous le ferons dans quelques semaines.
Aussi pour ceux d'entre vous qui est venu à la fin, nous avons bonbons,
Donc, ne vous voulez les gars bonbons?
>> PUBLIC: Bien sûr.
>> ALLISON BUCHHOLTZ-AU: Je suis juste va passer autour.
Hey, les gars si vous obtenez ici début, vous obtenez plus de bonbons.
Ce est très bien.
Ben, tu veux des bonbons?
Vous voulez un peu de ceux-ci?
Il ya aussi le cas Snickers quelqu'un veut Snickers.
Je vais les laisser ici et ici.
Sentez-vous libre.
Voulez-vous plus?
Public: tous ensemble.
Merci.
>> ALLISON BUCHHOLTZ-AU: et moi avons eu une belle petit tas là au début.
Vous les gars avez à prendre le jeu et Je arrivez à avoir une partie quiz classement.
Il est le chaos.
900 examens.
Ça va être tellement amusant.
Va être génial.
Je suis assez sûr que ce soit une de la plus grande liaison personnel
nuits de l'année.
Quelqu'un at-il fait zéro questionnaire de l'année dernière encore par curiosité?
>> PUBLIC: Les parties de lui.
>> ALLISON BUCHHOLTZ-AU: Les parties de lui, OK.
Avez-vous des questions sur l'un d'eux?
PUBLIC: je l'ai déjà est allé à des heures de bureau.
Merci bien.
ALLISON BUCHHOLTZ-AU: Eh bien, je l'espère il est encore un peu utile.
Quand êtes-vous allé les heures de bureau pour cela?
PUBLIC: Mon TF leur avait cet après-midi.
ALLISON BUCHHOLTZ-AU: Oh.
Qui est votre TF?
PUBLIC: Fred [? Wujaya?].
ALLISON BUCHHOLTZ-AU: Il ya tellement de facteurs de transcription.
Donc, beaucoup.
Bien.
Quelqu'un at-il pour commencer que je peux Notez que nous voulons travailler?
Je suppose que les pointeurs une avec la table.
Allez-y.
>> PUBLIC: Peut-être que l'interrupteur un.
ALLISON BUCHHOLTZ-AU: Donc, le numéro 12?
Je suppose que le numéro 8 et 9 sont probablement ceux que les gens veulent aller sur.
>> Public: Et 10 et 11.
>> ZAMYLA Chan: Et vous les gars savent vous obtenez une page de notes, non?
>> PUBLIC: Ouais, donc ce sont nous a permis de mettre sur ce point.
>> ALLISON BUCHHOLTZ-AU: Vous êtes autorisé à mettre ce que vous voulez.
Et il peut être saisi.
Pour autant que je me souviens, la nôtre ont été typés.
>> PUBLIC: Vous pouvez faire arrière et les deux côtés?
>> ALLISON BUCHHOLTZ-AU: Oui, des deux côtés.
Donc, quelque chose comme le tas et [? arrière?] tas, votre course
fois.
Utile.
Peut-être que peu de choses sur pointeurs pour vous rappeler.
Syntaxe des choses.
Ayant tout juste comme un squelette programme peut être super utile.
Je sais que je toujours oublié exactement ce que Je devais écrire pour int main,
parce que je toujours il suffit de copier coller de mon précédent P ensemble
ou il est déjà là, alors Je jamais vraiment écrit il,
afin d'avoir ce que peut être super utile.
>> OK, alors pourquoi ne pas nous commencer avec le numéro 8 alors?
Bien.
Dáccord.
Ainsi, considérer le programme ci-dessous.
Alors, évidemment, quand nous voyons pointeurs, il est probablement
une bonne idée de commencer à dessiner, non?
Je veux savoir où tout mon de gros morceaux de craie sont allés.
Ceci est assez ennuyeux.
>> Nous avons donc ici une fonction d'échange cela va prendre deux pointeurs.
Donc dans ce cas, ils devrait en fait être de commutation
choses par rapport à notre échange d'origine fonction qui a seulement pris dans les copies.
Alors qu'est-ce que ça va faire est-- nous allons commencer avec principal,
parce que ce où 1 est.
>> Donc, nous avons un certain int x 1.
Nous avons certains y qui est égal à 2.
Et puis nous avons un certain échange qui va prendre ceux-ci.
Et nous allons voir ce que nous avons ici.
Et dans notre table-- oh boy.
Comment vais-je faire cela?
Je vais faire ma table ici.
À peine faire là.
A peine la faire.
1, 2, 3, 4, 5, 6, 7.
Et ils nous donnent que 1 est 1, et 1 2.
Laisser refroidir.
Impressionnant.
Donc 3.
Et il n'y a [? un 1.?]
>> Bien.
Et puis l'adresse de x est 0x123.
Et y est Ox127.
Laisser refroidir.
Bien.
Je veux que vous travaillez sur ce gars pour un travail juste like-- sur ce
avec les gens autour de vous.
Je voudrais avoir dit que alors que je mettais en place.
Travailler.
Essayez de travailler sur elle par vous pendant quelques minutes,
et puis je vais travailler dessus avec vous.
Parce que la seule façon dont vous êtes vraiment va apprendre est de faire vous-même.
Pas de soucis.
Bonne chance.
>> OK, pourquoi ne pas nous lentement commencer à travailler à travers cela.
Donc tout le monde a, après la ligne une, x est égal à 1.
Après la deuxième ligne, X et y sont 1 et 2, à droite?
Laisser refroidir.
Donc, la ligne de trois où les choses devenir intéressant bien sûr.
>> Donc, ce que nous avons fait ici est que nous avons maintenant échangé.
Nous disons que x et y ont ces points, ou ils ont l'adresse de x et y,
droit?
Donc dans ce cas, trois, quelle est la valeur de a?
un avait été adopté en a été donné la valeur de l'adresse de x, non?
>> PUBLIC: 1?
>> ALLISON BUCHHOLTZ-AU: Donc, nous l'ajouterons à la x?
Quelle est l'adresse de x?
>> PUBLIC: 0x123.
>> ALLISON BUCHHOLTZ-AU: Exactement.
Mais ce qui est réellement un pointage de?
Si nous étions à déréférencer un, quelle valeur serait-il nous donner.
PUBLIC: 1.
ALLISON BUCHHOLTZ-AU: Il serait nous donner une, parce que ce
nous disons est d'aller à cette adresse, dites-nous quelle est la valeur.
Donc, ce qui serait b?
>> PUBLIC: 0x127.
ALLISON BUCHHOLTZ-AU: Exactement.
Donc, il est l'adresse de y.
Et puis quoi [? déréférencement? ?]
PUBLIC: 2.
ALLISON BUCHHOLTZ-AU: OK, donc maintenant quatre.
Nous avons dit est equal-- bien maintenant, nous avons fait int température est égale à l'étoile d'un.
Donc ce qui change?
Il ya une seule chose qui change ici.
Qu'Est-ce que ce est?
>> PUBLIC: Temp.
ALLISON BUCHHOLTZ-AU: La température.
Donc, nous pouvons réécrire tout cela.
Une bonne stratégie pour ces est juste Comprendre
Quels changements, car le plus souvent il ya une seule chose qui est
va changer à un moment donné, OK?
Nous avons donc attribué température.
>> Maintenant, notre prochain point, cinq, nous ont fait une étoile égale à Star B.
Donc ce qui change aujourd'hui?
>> PUBLIC: Star a.
>> ALLISON BUCHHOLTZ-AU: Star a, so tout le reste reste la même.
Et ce ne étoile à égal?
>> PUBLIC: 2.
ALLISON BUCHHOLTZ-AU: 2.
Belle.
Impressionnant.
OK, et puis nous avons maintenant Commencer B est égal à température.
Donc, la seule chose qui change est l'étoile b.
Tout le reste demeure le même.
Et ce qui est étoiles b égal à maintenant?
Et vous avez complété le tableau.
Parce que maintenant, à la fin, si nous disons x et y, nous savons qu'à ce point--
nous savons que lorsque nous changé jouer un à 2,
ce que l'ont fait est-il dit OK, à 0x123 répondre ici, changer.
Ce était maintenant de 2.
Et puis, à ce stade, nous avons dit OK, allez à l'étoile b.
Alors, allez à l'adresse indiquée 0x127 et en faire un 1.
Alors maintenant, à la toute fin lorsque nous revenons en fait pour principal,
nous avons en fait que x est égale à 2 et y est égal à 1.
Tout le monde bien avec qui?
OK, cool.
Numéro 9.
Les gars, vous travaillez sur ce point.
Je vais mettre en place un conseil d'administration afin que nous puissions tirer à travers elle.
Ça va être une explosion.
Les grandes tables peuvent être vraiment effrayant, je sais.
Mais si vous prenez juste les une ligne à un temps, ils obtiennent beaucoup moins effrayant.
Bien.
>> Donc, vous savez que cela aura traversé principal en premier, non?
Initialise x et y, et puis tente de les échanger.
Ainsi, même swap est au-dessus, véritable façon dont il va est que nous sommes en train de vivre principale,
et puis qu'il appelle à échanger, d'accord?
Donc, tout le monde le sait.
>> Alors que l'on vous faire les gars veulent commencer?
Quelqu'un est-il vraiment sûr sur l'un d'eux?
Ou même partiellement sûr?
Pourquoi ne pas commencer avec x?
Que pensons-nous x est?
>> PUBLIC: 1.
ALLISON BUCHHOLTZ-AU: 1.
Alors pourquoi est 2.
Tout cela parce que le grande distinction ici
est que nous sommes seulement passant copies dans, non?
Nous ne sommes pas en passant par référence.
Ainsi, même à la fin de ce programme X et Y
sont restés les mêmes, parce qu'ils ne sont que des copies de la fonction d'échange.
Ils ne modifient pas, non?
>> Alors que dire de a, b, et la température?
>> PUBLIC: un est b.
>> ALLISON BUCHHOLTZ-AU: une est b.
Donc dans ce cas, un était x, qui est une, non?
Donc, ici, nous allons marcher à travers elle.
Donc, au début, une et b sont 1 et 2 et indéfini.
Donc, à l'origine temporaire obtient attribué à un, de sorte temp est une.
a est égal à B, donc nous obtenons 2, et b est égal à température.
Maintenant nous en voyons une.
>> PUBLIC: Dans les unes précédente échangés esperluette x et y esperluette.
Qu'est-ce que cela signifie exactement?
ALLISON BUCHHOLTZ-AU: Donc, cela signifie que vous êtes de passage par référence.
Cela signifie donc que vous êtes réellement passant dans les adresses de l'endroit où
x et y sont stockées.
PUBLIC: Mais vous n'êtes pas échange de l'adresse.
ALLISON BUCHHOLTZ-AU: Vous n'êtes pas la permutation des adresses.
Vous échange ce qui est en eux.
Comme ce qui est à cette adresse, et voilà pourquoi cela fonctionne.
Versus dans ce programme ici ce vous faites est vous créez des copies.
Donc, vous avez x et y qui existent que leurs propres variables ici.
Mais alors, quand vous passez les contrats de swap, il est
comme si vous créez toute cette autre série.
Donc, vous n'êtes jamais réellement x et y toucher.
>> PUBLIC: Si esperluette x est ce qui est en l'adresse de x, ce qui aurait étoiles X?
>> ALLISON BUCHHOLTZ-AU: Ampersand x est ce qui est en l'adresse de x, puis star-- bien,
dans ce cas, x est un pointeur.
PUBLIC: Oh, OK.
Donc, vous ne le faites parce qu'il est pas un pointeur.
ALLISON BUCHHOLTZ-AU: Droit.
Vous ne pouvez faire des étoiles quelque chose qui est un pointeur.
Peut-être que vous pourriez le faire à des choses qui ne sont pas, mais la compilation vous que
font que les choses folles qui se passerait.
Et je ne suis pas exactement que ce qui se passerait.
Vous pouvez toujours prendre le Adresse de quelque chose,
mais vous ne pouvez pas déréférencer quelque chose qui est pas un pointeur.
Si cela fait sens, qui est une bonne distinction d'avoir.
>> Donc, pas trop mal, non?
Les tables sont espérons obtenir un peu moins effrayant.
Bien.
Ah, ceux amusantes.
Alors maintenant, écrire votre propre code.
Donc, je vais vous laisser travailler les gars sur ce pendant environ quatre minutes,
et alors nous pouvons parler sur les façons de l'aborder.
Sentez-vous libre de parler aux gens autour de vous.
Aussi ce qui est intéressant.
Il est comme un toutes les filles section pour le moment.
Très excitant.
Sauf pour Chang.
Mais Chang fait pas vraiment partie de l'article.
Impressionnant.
Parfait.
Je vais donc vous donner quelques conseils.
Dans le cas où vous avez plus d'un caractère, où
vous avez quelque chose d'autre comme 123 ou 1000 quelque chose,
vous devez être en mesure de boucle par et convertir chacun de ceux-ci.
Donc, il ya un couple moyens que vous pourriez le faire,
mais vous allez certainement avoir une boucle quelque part là-dedans à boucle
à travers eux, ce qui est un peu comme le cadeau
avec même si vous appelez STRLEN qui est un peu comme oh
peut-être que vous voulez utiliser la longueur de la chaîne d'une manière quelconque.
>> Bien.
Alors qu'est-ce que vous en pensez peut-être l'une des premières choses que nous voulons faire?
Il ya quelques cas ici nous devons tenir compte, non?
Soit nous avons quelque chose qui est nul.
Qu'avons-nous?
Cas.
Null.
Nous avons le cas où il a autre chose que 09, non?
Alors disons que il a des lettres.
Ou nous avons le cas qui est valable.
Trois cas de penser.
Alors, qui pensez-vous peut-être le plus facile de prendre soin de la première?
PUBLIC: Null.
ALLISON BUCHHOLTZ-AU: L'affaire est nulle.
Alors, que ferions-nous là?
PUBLIC: [inaudible].
ALLISON BUCHHOLTZ-AU: Ouais.
Et qu'est-ce que je veux faire?
>> PUBLIC: return 0.
>> ALLISON BUCHHOLTZ-AU: Exactement.
Impressionnant.
Dáccord.
Donc maintenant le cas où il a des lettres et le cas où il est valide.
Nous pouvons réellement prendre soin cela dans une boucle, OK?
Donc, une façon de faire it-- ce qui pourrait être un moyen simple pour vérifier si elle est valide.
Il faudrait passer par chaque lettre et quoi faire?
>> PUBLIC: Vérifier si elle est in--
>> ALLISON BUCHHOLTZ-AU: Oui, vous pouvez vérifier si elle est comprise entre 0 et 9, non?
Ensuite, dans le cas qu'il est valide, nous sommes
va finir par itération notre chaîne de toute façon, non?
Alors, pourquoi ne pas essayer et les combiner en un seul.
Nous allons parcourir tout au long de la chaîne, et que nous
ce faire, nous allons d'abord faire une vérification pour voir si cette lettre
ou si ce caractère est valide.
Dans ce cas, nous allons effectuer le opération que nous avons besoin de le convertir.
Sinon, il reviendra 0, non?
>> Donc, avant de faire cela, nous souhaiterez probablement une variable
que nous pouvons revenir à la fin que ça va être notre valeur réelle.
Nous allons donc à initialiser une certaine valeur à 0.
Et voilà comment nous commençons.
Je vais donc à se débarrasser de cette.
Alors, comment allons-nous itérer cette chaîne.
Public: Pour boucle.
ALLISON BUCHHOLTZ-AU: Une boucle for.
Alors, quel est notre pour?
>> PUBLIC: i est 0.
ALLISON BUCHHOLTZ-AU: Mm-hm.
Et que sommes-nous itération jusqu'à ce que?
>> PUBLIC: longueur de str de l'art.
>> ALLISON BUCHHOLTZ-AU: OK, rappelez-vous maintenant il ya une meilleure façon. [Inaudible].
>> PUBLIC: Oui, nous pouvons faire n est égal.
ALLISON BUCHHOLTZ-AU: Exactement.
>> PUBLIC: i est inférieur à n.
ALLISON BUCHHOLTZ-AU: Et pourquoi voudrions-nous faire cela?
Vous rappelez-vous la raison?
PUBLIC: Nous avons le recalculer.
ALLISON BUCHHOLTZ-AU: becasue cette façon vous seulement avoir à calculer strlen fois.
Si vous faites i est inférieur à strlen s, que ses moyens, il recalcule
la longueur à chaque fois vous exécutez la boucle,
qui est pas un coût énorme de l'énergie, mais il est
meilleures pratiques pour essayer de faire des choses comme ça une fois.
Sauf peut-être vous avez une chaîne fou cela change à chaque itération.
Mais si elle va rester la même, l'enregistrer.
Bien.
Et puis je plus plus.
Impressionnant.
Nous sommes sur la bonne voie.
PUBLIC: Très rapidement.
Tout d'abord, alors disons que nous venons Ai-je moins de strlen de s,
qu'ils nous classement sur la conception à tous ou seulement est correcte?
Ils ne sont pas.
Nous classement sur la rectitude pour des quiz pour autant que je sais.
Je ne peux pas faire un plein sur garantie, mais la plupart du temps,
grande majorité est correcte, parce que vous êtes sous beaucoup de contrainte de temps.
Conception signifie généralement vous avez le temps de réfléchir
sur l'élégance de votre situation.
>> OK, donc nous nous parcourons.
Nous devons donc vérifier soit à voir si ce caractère est valide
ou si nous pouvons effectuer notre normale [? A à I?] fonction.
Nous pouvons vous soucier de ce que qui est en une seconde.
Alors pourquoi ne pas take-- si quelqu'un peut penser
sur un moyen de vérifier à voir si cela est valable.
Nous savons que ça va être certains si la condition, non?
Et rappelez-vous ceci est en ASCII, alors comment pourrait
nous voyons si elle est à 0,1, 2, 3, 4, 5, 6, 7, 8, ou 9.
PUBLIC: Si alpha.
>> ALLISON BUCHHOLTZ-AU: Donc, si alpha serait seulement nous faire savoir si elle est une lettre.
Et si ils nous donnent un symbole, il est pas encore tout à fait aller vérifier.
Donc, si vous tirez votre ASCII table, nous savons que de 0 à 9
sont dans un segment.
Dites-moi les numéros qu'ils correspondre à la mesure du possible.
Public: 40.
>> ALLISON BUCHHOLTZ-AU: Donc, la plage est comme 40--
PUBLIC: Peut-être.
48 à 57.
Je ne suis pas sûr.
>> ALLISON BUCHHOLTZ-AU: 40 à? 57
>> PUBLIC: 48, je pense.
ALLISON BUCHHOLTZ-AU: 48 à 57.
Donc, nous savons que ceux ASCII symbols-- si la valeur ASCII est pas
entre 48 et 57, il est pas valable, non?
Ainsi pourrions-nous utiliser pour notre avantage peut-être?
Comment allons-nous faire cette lettre, d'abord?
Comment sommes-nous accédons ce ce personnage?
>> PUBLIC: s i support.
>> ALLISON BUCHHOLTZ-AU: Mm-hm.
Parce que nous pouvons penser chaînes comme des tableaux, rappelez-vous.
Alors, que voulons-nous dire?
Nous voulons dire si cette est-- Je vais vous donner un indice.
Il est un peu moins de.
Qu'est-ce que vous pensez que ce doit être inférieure à?
Public: 57?
>> ALLISON BUCHHOLTZ-AU: 47, non?
Mais il représente également que vous un 0 individuellement [? rayons?], parce que ce
le caractère 0.
Vous pouvez aussi mettre 47.
Avoir la table ASCII, comme voyez-vous, est juste quelque chose
vous devez avoir sur votre feuille de quiz.
>> Donc, si tel est le cas, si elle est une moins de 0-- pas nécessairement et.
Il va seulement soit être inférieur ou supérieur à 9.
Ainsi, vous pouvez remplir ce dernier pour moi?
Donc, ou s de i est ce que, Rhea?
>> PUBLIC: Supérieur à 9.
>> ALLISON BUCHHOLTZ-AU: Il.
Cela fait-il sens à tout le monde, comment nous sommes arrivés là-bas?
Ces problèmes, ils sont comme une fois que vous voir les solutions, il est comme oh, OK.
Et voilà pourquoi la pratique vous aidera.
OK, si nous revenons 0.
Belle.
Bien.
Sinon, à quoi voulons-nous faire?
Ceci est la partie la plus intéressante où il est un peu plus
comme les mathématiques par rapport à CS à mon avis.
Est-ce que quelqu'un a une idée de la façon dont nous pourrions faire cela?
Donc, la chose importante à réaliser est le premier caractère
nous prenons va être le chiffre d'ordre le plus élevé, non?
Donc, si nous cherchons à convertir 123, la première fois que nous parcourons
va être 1, mais nous avons besoin que pour être 100 d'ici la fin, non?
Donc, une chose que vous pouvez faire est que avec chaque chiffre ultérieur
vous prenez, vous multipliez votre valeur de 10, de sorte que le temps que vous arrivez à la fin,
tout a été déplacé vers le haut, à droite?
>> Donc la première fois que vous exécutez il, vous avez 1 comme valeur.
Deuxième fois que vous lancez, vous multiplier votre valeur de 10.
Il mettra à jour de sorte qu'il est maintenant 10, et vous ajouter sur votre prochaine valeur.
Et ensuite, vous multipliez que par 10 et ajouter sur votre prochaine valeur.
Et voilà pourquoi ils disent que ce est beaucoup plus comme test
un algorithme de calcul par rapport à CS, mais je digresse.
Je ne l'écris pas les questionnaires.
>> Donc, une chose que nous pouvons faire est nous disent les temps de valeur est égale à 10.
Donc, cela va changer votre chiffre une fois à chaque fois.
Et puis, nous voulons juste ajouter.
Nous voulons ajouter à ce nous venons, non?
Alors, comment pouvons-nous réellement convertissons notre caractères ASCII dans le nombre
qu'il représente?
>> Nous savons donc que 0 est égal à 47, non?
Donc, si 0 est de 47, ce qui aurions-nous faire pour elle
faire réellement être un int de 0?
>> PUBLIC: Il est 48.
ALLISON BUCHHOLTZ-AU: 48?
Désolé.
Nous soustraire 48, non?
Rappelez-ASCII mathématiques?
Nous pouvons les traiter seulement comme un nombre normal.
Si vous les traitez comme des numéros, ils deviennent des nombres efficacement.
Donc, si nous avons s de i, qui permettent de dire dans ce cas est égal à 0.
Ainsi s de i dans ce cas serait le ASCII--
l'int ASCII car il serait 47.
Donc, nous pourrions subtract-- ou 48.
Vous pourriez le faire, est un moyen.
Est-ce que quelqu'un connait un meilleur Nous pourrions faire 48?
Nous venons de dire 0 est-- aller en l'ASCII que vous pourriez faire citant 0.
Donc, le fait de faire genre sens comment cela fonctionne?
>> Public: À ce stade, est la valeur 0 parce que même si vous multipliez par 10,
vous commencez avec zéro, ainsi doit-il être mis?
>> ALLISON BUCHHOLTZ-AU: Donc dans ce cas, vous vouloir multiplier avant d'ajouter,
car dans ce cas, oui, ce serait être-- encore mon pointeur est manquant.
La valeur dans ce cas, la première temps, nous courons ce sera zéro.
Donc, vous ne faites qu'ajouter sur ce premier chiffre.
Ce qui est important est la prochaine fois itération, vous voulez déplacer vers le haut
avant d'ajouter sur votre prochaine chiffres.
Est-ce que clarifier pour vous?
Dáccord.
>> Parfois, vous allez obtenir plus de choses étranges de Mathy.
Si vous aviez plus de cela, vous allez encore
à get-- vous allez faire assez bien.
Un crédit partiel est une très grand chose sur des questionnaires CS50.
Alors écrivez ce que vous savez.
Si vous avez tout sauf pour ici, vous êtes
toujours en cours pour faire très bien le problème.
Parce que vous faites preuve, OK, je sais presque.
Je sais que je dois pour parcourir.
Je sais ce que je dois vérifier.
Je fais tout simplement pas assez comment obtenir le convertir.
Vous allez être OK.
Oui, vous allez perdre quelques points
mais vous allez encore avoir un bon nombre de points pour quelque chose
comme ça si vous êtes manquant ces deux lignes.
Je serais comme OK, cette personne sait ce qu'ils font.
Math est difficile.
Je dirais donc que vous seriez bien.
>> OK, si vous êtes prêts à essayez de strlen avec des pointeurs maintenant
que vous êtes des maîtres pointeur?
Donc, je vous laisse les gars travaillent sur que pour un peu.
Si quelqu'un a besoin d'une remise à niveau.
Donc, vous voulez utiliser un pointeur arithmétique, et puis si s est nul,
votre application doit retourner 0.
Ce genre de choses qui vous rendent vraiment heureux de simplement appeler strlen
à la fin de la journée.
Je pense que celui-ci pourrait être un peu plus simple que la précédente, qui
est bonne.
Je vais vous donner un autre gars minute, et puis nous allons travailler à travers elle.
Et puis nous arrivons à passer aux commandes.
>> OK, les gars prêts?
Peut-être un peu.
Donc, je vous ai donné votre deux options, non?
Soit pour vérifier nulle et retourner 0 si il est, en réalité ou calculer la longueur.
Alors, qui veut écrire pour vérifier nulle?
Allez-y.
>> PUBLIC: si des parenthèses s égaux est égal au rendement nul 0.
ALLISON BUCHHOLTZ-AU: Lovely.
Je l'aime quand la moitié de votre problème est en train de vérifier pour nulle.
Je sais avec vous les gars dernier semaine je me suis dit chèque de nulle
littéralement à chaque fois.
OK, so--
>> Audience: Si le retour 0 est une seule ligne, ne nous encore besoin de l'accolade?
>> ALLISON BUCHHOLTZ-AU: Vous ne faites pas techniquement besoin d'eux aussi longtemps que vous êtes cohérent.
Il est une bonne pratique juste à prendre l'habitude
d'utiliser des accolades, mais techniquement pas.
Vous ne devez pas les pour une ligne.
Nous avons tendance juste à le recommander pour les personnes à partir de programme.
>> Alors maintenant, que pouvons-nous faire ici?
Alors maintenant, nous savons que notre chaîne est valide.
Nous voulons continuer à calculer la longueur.
Quel est probablement la première chose que nous voulons faire?
>> PUBLIC: Créer un int qui est de la longueur.
ALLISON BUCHHOLTZ-AU: Exactement.
Public: Et nous voulons mettre à?
ALLISON BUCHHOLTZ-AU: 0.
Parfait.
Bien.
Maintenant, ce que ne veulent le faire?
Ceci est vraiment la plus grande partie de celui-ci.
Allez-y.
>> Auditoire: Alors, vous faites probablement une boucle for.
Et puis depuis quand vous appelez s vous êtes obtenir l'adresse de la première chose,
vous commencez par i est égal à 0.
Et puis aussi longtemps que x De plus, je ne est pas anti slash 0.
ALLISON BUCHHOLTZ-AU: La terminaison nulle.
AUDIENCE: Le terminateur nul.
Ensuite, vous ajoutez une à la longueur.
>> ALLISON BUCHHOLTZ-AU: Ouais.
OK, laisse tourner que dans le code très concret.
Mais qui est l'idée parfaite.
Voilà exactement ce que nous faisons.
Nous allons être itération par le pointeur.
Donc, ce que nous voulons faire est la place d'un int
ici, parce que nous sommes ne parle pas un il.
Nous faisons allusion au début d'une chaîne, que commencer à être quelque adresse,
droit?
>> Donc, nous voulons un pointeur.
Donc, nous allons avoir une étoile de char, car il correspond à nos s, la droite?
Donc, cela est certain point, nous sommes d'initialisation au début de la chaîne, OK?
Donc, nous allons simplement appeler i.
Si il est le début de la chaîne, qu'est-ce que ça va être affecté?
Non 0.
Nous voulons que ce soit la début de notre chaîne.
Que représente le début de notre chaîne qui nous a été donné?
>> Public: Tout s.
>> ALLISON BUCHHOLTZ-AU: s.
Donc, cela crée un nouveau pointeur représente le début de notre chaîne, OK?
Une autre façon d'y penser est comme voici notre tableau.
Voilà notre chaîne, s.
Alors disons que ceci est la première place, ce qui est 0x4.
04.
Ceci est notre s, qui détient cette adresse.
Et nous venons de créer un autre appelé i qui se réfère simplement à la même chose.
Ils sont donc à la fois juste pointant le début de notre chaîne.
Ceci est juste une représentation graphique.
>> Alors maintenant, ce que nous voulons faire est que nous voulons parcourir
notre condition pour l'itération grâce à notre chaîne.
Maintenant achats.
Nous sommes arrivés à la boutique, les gars.
Est que nous voulons garder la mise à jour jusqu'à ce que nous arrivons à la fin nulle, non?
Alors, que pourrait-il ressembler?
Voulons-nous i, ou voulons-nous étoiles i est la question?
Est la terminaison nulle une adresse ou quelque chose situé à une adresse?
Situé à une adresse, non?
>> Donc, nous avons besoin de déréférencer tout ce qui est ici, parce que cela est juste une certaine adresse.
Pour obtenir effectivement le début nous avons besoin de déréférencer ce
de sorte que nous obtenons réellement ce qui est dans cette première place.
Donc, si nous faisons Star I, ce nous ne voulons pas à l'égalité?
PUBLIC: Retour slash?
>> ALLISON BUCHHOLTZ-AU: Il.
Cela fait-il sens à tout le monde?
Nous devons aller dans notre chaîne et assurez-vous qu'il est pas la fin.
Et alors nous pouvons simplement mettre à jour comme celui-ci.
Mise à jour normale.
Donc, tant que ceux-ci sont Met, que devons-nous faire?
>> PUBLIC: Longueur plus plus.
>> ALLISON BUCHHOLTZ-AU: Mm-hm.
Et puis après la boucle se termine, que voulons-nous revenir?
PUBLIC: Longueur?
ALLISON BUCHHOLTZ-AU: Longueur.
Là vous allez.
Évidemment, la viande de celui-ci est de comprendre cette boucle.
Est-ce que tout le monde se comment cela a fonctionné?
Je suis heureux de revenir là-dessus il.
>> AUDIENCE: Le deuxième partie, si l'étoile i il,
qui est l'adresse de la first--
ALLISON BUCHHOLTZ-AU: Il est pas l'adresse.
Il est ce qui est à.
PUBLIC: Voilà en fait là-dedans.
ALLISON BUCHHOLTZ-AU: Voilà ce qui est réellement là.
Donc, cela est saying-- laisser me fais ce mieux.
Donc, cela est 0x04, et je vais juste à dire que je vais faire mon nom.
Dáccord.
Oui, je sais que je dois examen quiz ce soir.
Beaucoup de consultation de quiz.
Donc, disons que cette chaîne est mon nom, Allison.
Peu désordonné, mais il est là.
Et s représente l'emplacement de l'endroit où la chaîne commence,
donc je vais faire ce bien-- ceci est l'adresse d'un,
où la chaîne commence, non?
>> Donc, ce que nous faisons ici est que nous voulons utiliser des pointeurs pour parcourir.
Nous créons donc un certain pointeur, i, qui a également est égal au début de la chaîne.
Et à chaque point, nous voulons continuer à aller à travers le réseau
ici jusqu'à ce que nous avons atteint la terminaison nulle.
Donc, nous voulons toujours vérifier ce qui est à chacune de ces adresses.
>> Nous avons donc déréférencer i, de sorte que la première fois que nous le faisons nous
dire, OK, ce qui est à l'adresse 0x04?
Il est un un.
OK, nous sommes bons.
Longueur incrément.
Passer à la suivante.
Donc i-- rappeler pointeurs augmentation de la taille de tout ce qu'ils pointant vers.
Donc dans ce cas, car il est un char, il va mettre à jour par un.
Alors maintenant, nous allons regarder à 5, ce qui signifie qu'il va ici.
Alors il dit OK, allez à 0x05.
Ce qu'il ya dedans?
Il est un l.
Et il va continuer à le faire jusqu'à ce qu'il atteigne celle-ci.
Et il dit OK, ce qui est en quelle que soit l'adresse est ce?
Le terminateur nul, OK.
Sortie.
Et il suffit de retourner la longueur.
Parce que vous avez besoin de ce qui est fait à cette adresse, pas l'adresse elle-même.
>> Il ya très peu d'endroits où vous avez réellement besoin de l'adresse.
La plupart du temps lorsque vous utilisez le et il est
quand vous êtes premier l'affectation d'un pointeur ou lorsque
vous êtes de passage dans une autre fonction.
OK, tout le monde il bon?
Genre de?
Dáccord.
>> Il semble donc que nous avons obtenu environ 12 minutes de la fin,
donc nous allons passer à peut-être notre dernier problème,
et puis il ya tout concepts qui ont surgi
En attendant, nous pouvons aller rapidement là-dessus.
>> Donc commutation Gears est la dernière problème ici, passer des déclarations.
Donc, votre travail consiste à réécrire cette de sorte qu'il se comporte de la même
mais ne pas utiliser des commutateurs.
Mains calcaire.
Donc, des questions au sujet de cette large de la chauve-souris?
Aucun?
Dáccord.
Tout le monde comprend que si la cas n'a rien après elle,
cela signifie qu'il devrait suivre la prochaine étape?
Donc cas 1 et 2 dans ce cas faire exactement la même chose.
Parfois, un point de confusion.
>> Bien.
Quelqu'un a des idées?
Ouais?
>> Auditoire: Alors, vous pouvez il suffit de faire si les états.
>> ALLISON BUCHHOLTZ-AU: Mm-hm.
Alors, quel est notre premier?
>> PUBLIC: Si n est égal à égal à 1, et les 2 lignes pour ou n est égal à
est égal à 2, puis imprimez petit.
Et puis vous pouvez faire d'autre si?
Ou pouvez-vous faire juste un si?
>> ALLISON BUCHHOLTZ-AU: Vous pouvez faire d'autre si?
>> PUBLIC: Serait-il question si vous le faites si?
ALLISON BUCHHOLTZ-AU: Alors qu'il fait.
Ne anyone--, vous obtiendra le même résultat
si vous utilisez seulement ifs contre si vous utilisez ifs autre.
Vous les gars peuvent penser de la raison pourquoi vous voudrez peut-être utiliser un autre
si par rapport à beaucoup de si?
Doit avec efficacité.
Ouais?
>> Auditoire: ce serait vérifier tous les ifs à chaque fois.
>> ALLISON BUCHHOLTZ-AU: Donc, même si il a frappé cette première,
ce serait aller à l'arrivée chaque autre.
Donc, vous voulez utiliser si quelque ifs dans les cas où un seul d'entre eux sera jamais appliquer.
Donc, l'exclusion mutuelle est ce que nous avons tendance à dire.
Si vous avez un tas de ifs, cela signifie peut-être que plus d'un d'entre eux
questions, et peut-être plus l'un d'eux peut être vrai.
Et vous voulez tous les deux à exécuter si elles sont vraies.
Si vous voulez un seul d'entre eux à travailler dans ces cas mutuellement exclusives,
vous voulez utiliser autre si, parce il a tout à voir avec l'efficacité.
Votre code est juste mieux conçu si elle adhère à cette pratique.
Donc, dans ce cas, nous avons un autre si.
Et ce serait?
>> PUBLIC: n est égal à égal à 3.
ALLISON BUCHHOLTZ-AU: Parfait.
support d'impression.
Et puis dans notre dernier cas, que devons-nous?
D'autre ou bien si?
PUBLIC: Else.
>> ALLISON BUCHHOLTZ-AU: Avons-nous want-- Vous voulez d'autre si parce que nous avons des cas concrets.
Il est pas une sorte de fourre-tout.
Si vous aviez un défaut dans un switch-- rappeler dans les commutateurs que vous pouvez avoir affaire,
et puis vous avez par défaut.
Si vous aviez un défaut, qui est un peu de votre déclaration d'autre.
Mais si elle ne dispose que de cas, cela signifie que vous devez
de vérifier pour voir si elle est chacun de ces.
Donc dans ce cas, ce serait le 4 ou 5.
Nous voulons une impression hors tension.
Il est grand.
Et là vous allez.
Et ce serait votre programme.
>> Donc, dans ce cas, si nous eu quelque chose par défaut,
nous aurions une autre dans ce qu'il voulait que nous fassions.
Voilà donc une bonne distinction à savoir, à comprendre.
Cela aide d'interrupteurs pour vous?
Parfait.
Bien.
>> Nous avons environ huit minutes.
Avez-vous les gars ont tout d'autres concepts de haut niveau?
Questions en général?
Oui?
>> PUBLIC: je devais un question à propos de l'un d'eux
qui était sur le hasard générateur de nombres sur questionnaire zéro.
ALLISON BUCHHOLTZ-AU: Oh, celui-là.
Celui-là est un autre où il est plus mathématiques than-- oui.
La solution à that-- même quand je Je le vois, je suis comme ce qui est ce.
>> PUBLIC: Il était le numéro 7.
>> ALLISON BUCHHOLTZ-AU: Il est étrange à mon avis.
Donc, fondamentalement, vous voulez à utiliser drand48, qui
vous donnera une nombre compris entre 0 et 1.
Et vous voulez l'utiliser de manière que vous obtenez quelque sorte A-
et il est beaucoup plus d'un problème de maths pour moi que je pense un problème CS.
>> La façon dont vous le faites et it-- Parfois, il sera juste comme ça.
Là encore, ce sont le les cas où il est un peu
de comme écrire ce que vous peut et crédit partiel.
Donc, si nous voulons un retour, nous savons que nous sommes
allez utiliser drand48 en quelque sorte, non?
Alors pourquoi ne pas juste Notez que vers le bas.
Nous utilisons une certaine façon.
La façon dont ils ont vous utilisez les gars, il est
comme ça, que je vais essayer d'expliquer.
>> Donc, fondamentalement, ce qui se passe ici En effet, il est compris entre 0 et 1,
ce que vous faites est vous êtes multipliant by-- ce qui est très bien une question de mathématiques.
Tout plein déni, cela est complètement une question de mathématiques.
Ce que vous faites est raison de 0 et 1 et vous
veux que ce soit à l'intérieur cette gamme, vous avez réellement
comprendre comment grand la plage est, et puis
vous fondamentalement le à l'échelle, qui est ce qui ce fait.
>> b moins une qui vous donne cette gamme, la différence entre ces chiffres.
Vous pouvez multiplier entre 0 et 1, et en ajoutant ensuite un juste
signifie que votre mise à l'échelle vers le haut de sorte qu'il est entre a et b,
que je ne l'ai pas vraiment aime ce problème.
Comme je le disais, ce quiz est destinée à englober
les gens qui sont moins à l'aise, quelque part entre les deux,
et plus à l'aise.
Donc, si ils l'ont fait de manière qu'il avait quelque chose
que tout le monde au moins endroit confortable obtiendrait,
nous aurions beaucoup trop personnes marquant parfaits,
et le plus confortable serait ennuyé.
>> Donc, ils ont toujours ces genre de questions d'énigme
qui sont destinés à être un peu plus difficile qui prennent un peu de créativité.
Quand vous les voyez, ne soyez pas trop perplexe.
Je dirais certainement bascule par votre quiz premier.
Résoudre les problèmes que vous savez que vous pouvez,
parce qu'il n'y a pas d'utilisation coincé sur un problème quand il ya trois
ou quatre ou cinq sur la page après que vous pouvez facilement le faire.
>> Public: Pourquoi exactement vous faire multiplier par la plage?
>> ALLISON BUCHHOLTZ-AU: Vous multipliez la gamme que vous know-- il est comme combien après un
voulez-vous?
Alors que vous pouvez penser, car il renvoie un nombre entre 0 et 1,
vous pouvez penser comme un pourcentage.
Donc, il est fondamentalement dire si nous avons notre ligne de nombre ici, un est ici,
et b est ici.
Vous êtes comme combien passé un est-il?
Est tout ce que nous faisons.
Donc, vous demandez juste pour le pourcentage de cette gamme, qui
est ce qu'il te donne.
Et puis vous fondamentalement juste agrandissez-le en ajoutant un.
Il est un teaser mathématiques du cerveau.
>> Si il y avait un dernier conseil minutes, je dirait parcourir les questions,
déterminer lesquels vous sais que, comme, oh, je suis cela.
Presque sûrement, ils vont être des questions que vous ne saurez pas
ou que vous allez avoir le temps pour, donc frapper vos points forts, OK?
Les gars, vous allez très bien.
Il ya beaucoup de questions pour une raison,
de sorte que vous avez le temps de genre de avoir l'occasion
de démontrer ce que vous êtes vraiment bon.
Donc, il est OK si vous êtes pas bon du tout.
Jouer à vos points forts.
Oui?
>> Auditoire: Alors, est ce que ça va retourner quelque chose qui est tronquée?
Oui, il le fera, parce que drand retours entre 0 et 1.
Il reviendra un int, parce que ça va tronquer
quand on ajoute un ou multiplie par elle.
Laisser refroidir.
Les dernières questions minute?
>> Les gars, vous allez faire une grande.
Vous allez être fabuleux.
Et même si pas, il y aura soit bonbons ici la semaine prochaine.
Et je vais vous aime.
Je vous aime les gars indépendamment.
Très bien, tout le monde, bonne chance.
Avoir un grand temps.
Vous allez être bien.
Et vous savez quoi?
En deux jours, il va à plus, alors que je
avoir deux mi-session le jeudi, de sorte au moins vous les gars se fera.
Très bien, je vous vois la semaine prochaine.