LUCAS FREITAS: OK, je suppose maintenant, nous sommes en direct. Bienvenue à CS50 supersection. Nous sommes moins à l'aise. Mon nom est Lucas Freitas. Je suis un chef CS50 FO. C'est Lauren. LAUREN CARVALHO: Salut, je suis Lauren. Je suis également chef TF pour CS50. LUCAS FREITAS: Aujourd'hui, nous allons juste de donner un aperçu de ce que tout ce que vous les gars ont appris dans la première semaine, je l'espère pour vous donner un bon gars sens à ce que vous devez savoir pour régler un problème. Juste quelques annonces. Tout d'abord, les heures de bureau. Les heures de bureau sont du lundi passe au jeudi dans différentes maisons Annenberg chaque jour. Ils sont une très bonne ressource pour vous les gars à venir et poser des questions, et parler à FO, et même l'échange idées avec d'autres étudiants. Assurez-vous donc d'utiliser cette ressource en votre faveur. La deuxième chose est la CS50 Appliance. Pour la dernière [inaudible] vous les gars n'ont pas eu à fait disposer un appareil. Vous venez de faire tout en votre ordinateur personnel. Mais pour ce problème, vous avez fait d'avoir une machine virtuelle, donc Assurez-vous de télécharger le CS50 Appareil et le mettre en place. Et la troisième chose est assurez-vous de démarrer le problème posé juste ASAP parce que c'est beaucoup plus facile de trouver aider lorsque vous êtes dans le au début de la semaine. Parce que les gens ont tendance à attendre jusqu'à ce que le dernière seconde pour commencer le jeu de problème, et puis vous allez à des heures de bureau, et il ya beaucoup de personnes. Où si vous allez le lundi, vous allez de voir que vous pouvez parler à FO à peu près toute la nuit, et ils vont être plus heureux de vous aider. LAUREN CARVALHO: Puis-je arrêter juste vous pour juste une seconde? Tout le monde a été en mesure de télécharger le CS50 Appliance? Les gens ont essayé? LUCAS FREITAS: Pour télécharger, par le Ainsi, vous pouvez obtenir des instructions à cs50.net/appliance. LAUREN CARVALHO: Droit. Et cela prend un peu de temps pour notre administrateurs systèmes pour vous obtenir une licence clé, alors inscrivez-vous pour la premier essai gratuit. De cette façon, vous aurez pendant 30 jours, puis attendez que votre clé de licence ce qui devrait donner à vous pendant un an. LUCAS FREITAS: Tout d'abord, Parlons un peu sur le CS50 Appliance. Le CS50 Appliance est en fait un virtuel machine que vous allez fonctionner dans votre propre ordinateur qui est exécutant depuis un autre ordinateur l'intérieur de votre propre ordinateur. Ce qui est assez cool. Et en fait il est utilisé partout. Les gens qui à technologie savent que ceci est utilisé tout le temps. vous? Peut avoir plusieurs ordinateurs en un seul appareil. Prenons fait un coup d'oeil à l'appareil. Quand vous allez à l'appareil après vous inscrivant, vous allez avoir à mettre votre nom et vous connecter à Harvard afin que nous puissions vous tous enregistré. Vous allez voir tout simplement à un fond d'écran, puis Accueil et Corbeille, et puis ces petites icônes. Ces trois icônes sont en fait le plus choses importantes que vous pouvez avoir dans votre appareil. Le premier est gedit, qui est un moins éditeur, tout comme le Bloc-notes ou comme tout type d'éditeur de texte. C'est juste quelque chose que nous utilisons pour écrire code, puis faire des choses avec elle. La deuxième chose que nous avoir ici est Chrome. Donc, si vous avez besoin d'utiliser l'Internet dans l'appareil, c'est ce que vous pouvez utiliser. Et la troisième chose est la borne, qui est en fait très doux. Les gens sont généralement peu peur de le terminal, car il s'agit très ancienne application façonné dans lequel vous juste fondamentalement tout type avec votre clavier. Il n'y a pas beaucoup d'interaction avec votre souris. Mais en réalité, le terminal fait de très bonnes choses. Tout d'abord, nous allons simplement passer par certaines commandes que vous peut utiliser dans le terminal. LAUREN CARVALHO: Et n'hésitez pas à arrêter nous si vous avez des questions. LUCAS FREITAS: Ouais. Donc, la première commande que nous avons pour le terminal est ls. ls signifie fondamentalement liste tout, tout les fichiers et tous les administrateurs, que j'ai à l'endroit que je suis à. Donc, si je fais ls ici, je vais voir que j'ai des répertoires. J'ai le bureau, les téléchargements, les journaux et les vhosts. Ce sont en bleu parce qu'ils sont tous les répertoires. Ensuite, vous avez d'autres fichiers. Vous avez comme bonjour et hello.c, qui sont seulement des fichiers, et ils sont en différentes couleurs. Donc, c'est une commande très importante juste vous pouvez voir quels sont les fichiers et les répertoires que vous avez dans le répertoire qui vous êtes dans le terminal. Quand vous voyez jharvard @ appareil et alors le petit symbole là, la tilde, cela signifie juste que c'est la répertoire que vous êtes en ce moment. LAUREN CARVALHO: Alors tapant ls est presque comme en cliquant sur le dossier qui est inscrit là, il montre dans vous tout le contenu qui sont dans ce dossier. PUBLIC: Y at-il moins après la bonjour.c? LAUREN CARVALHO: Oh, vous ne pouvez pas voir que, parce que c'est bleu. LUCAS FREITAS: Il est dit les journaux et les vhosts. LAUREN CARVALHO: Ce sont seulement d'autres dossiers. Je suis désolé, il est vraiment difficile de voir. Peut-être que si nous avons éteint les lumières? Colton, voulez-vous essayer de trouver l'interrupteur? Désolé à ce sujet. Je ne pense pas à ce sujet. LUCAS FREITAS: Mais c'est essentiellement - oui, si vous pouviez - LAUREN CARVALHO: Zoom sur votre écran. LUCAS FREITAS: Je ne sais pas avoir cette fonction. LAUREN CARVALHO: [inaudible]. OK. Eh bien, il ya juste beaucoup de naturel lumière dans cette chambre. LUCAS FREITAS: Supposons simplement que il ya deux autres répertoires là-bas. LAUREN CARVALHO: Il suffit de garder avec nous. C'est la seule partie que vous aurez se pencher sur le terminal. LUCAS FREITAS: La commande suivante est fondamentalement peut-être vous souhaitez organiser vos fichiers - par exemple tous vos fichiers, C dans un répertoire, mais vous ne disposez pas d'un répertoire juste pour C dépose encore. Vous pouvez en principe créer un répertoire l'utilisation du terminal ainsi, ce qui est la même chose que clic droit et disant Nouveau dossier. La commande est make directory, qui est mkdir, donc en gros "faire" et «Répertoire». Et puis vous pouvez mettre le le nom du répertoire. Disons que je voulais être appelé, Je ne sais pas, disons pset1 Faire , je viens de créer un répertoire. Disons simplement vérifier qu'il est là. Donc, si je fais ls, maintenant je vois les journaux, et alors pset1, puis vhosts. J'ai donc le nouveau répertoire il. Et puis après vous avez un nouveau répertoire, peut-être vous voulez naviguer en elle, de sorte que la prochaine commande de ce cd, ce qui signifie en fait juste aller à une répertoire spécifique. Donc, si je veux aller à pset1, Je peux juste faire cd pset1. LAUREN CARVALHO: cd représente le changement répertoire, [inaudible] en mesure de n'oubliez pas que. LUCAS FREITAS: Et maintenant vous voyez que au lieu d'avoir juste jharvard appareil, j'ai jharvard appareil, puis pset1, parce qu'il nous montre moi où je suis dans cet ordinateur. Maintenant, si je veux revenir à la répertoire qui était avant celui-ci, je peut faire un point cd de points, ce qui signifie tout simplement aller dans le répertoire que j'étais avant, comme le parent de ce répertoire, essentiellement. Et maintenant, je vois que je suis Retour à jharvard. La prochaine chose que je peux le faire est rm, qui est supprimer un fichier. Par exemple, nous allons faire en premier ls pour voir ce que j'ai ici. J'ai bonjour et hello.c. Disons que je veux les supprimer. Je peux faire rm bonjour. Il va dire "supprimer fichier régulier bonjour? "Et je dis« oui ». Et maintenant, si je faire ls, je vois que c'est pas plus là-bas. Si j'essaie d'utiliser rm pour un répertoire, cependant, il ne va pas pour vous permettre de faire n'importe quoi. Il va dire, hé, vous ne peut pas supprimer un répertoire. Nous avons donc cette autre viennent appelé rmdir, ce qui signifie en fait juste supprimer le répertoire. Je peux, par exemple, retirez pset1. Et si je fais ls, je ne sais pas avoir plus. Vous avez des questions à ce sujet? Non? Ouais? PUBLIC: Est-il important que vous quittez un espace après - chaque fois que vous commencez à taper quelque chose dans? LUCAS FREITAS: Ouais. Si je fais comme les CD et le répertoire, Je dois mettre un espace. Qu'est-ce que l'espace parlez-vous? LAUREN CARVALHO: L'espace entre cd et [inaudible]. LUCAS FREITAS: Ouais, vous aurez à mettre les espaces car cd est la commande, puis la chaîne suivante qui vous type est essentiellement le répertoire. Donc, c'est comme un argument. Ouais? PUBLIC: Lorsque vous mettez, tous ceux sont des répertoires différents, non? LUCAS FREITAS: Ouais, ils sont dans le répertoire. PUBLIC: Qu'est-ce que les différences parmi les répertoires? LUCAS FREITAS: Ils sont juste différents dossiers. Répertoire est un dossier dans votre ordinateur. PUBLIC: Ouvrir le dossier. LUCAS FREITAS: Ouais, c'est juste un dossier ouvert. LAUREN CARVALHO: ici, ceux qui sont en bleu sont réelle répertoires que vous pouvez obtenir dans et alors voir un tas de choses qui sont dans ce qui est malheureux parce que vous ne pouvez pas réellement lire le ceux en bleu. Et ceux en blanc sont juste des fichiers qui sont dans le répertoire courant. LUCAS FREITAS: Alors répertoires des dossiers. Les autres sont des fichiers. PUBLIC: Quelle est la commande pour le réinitialiser ou de l'effacer? LUCAS FREITAS: Pour effacer? LAUREN CARVALHO: Pour effacer? LUCAS FREITAS: Je pense que il est "clair". Ouais. Donc, vous tapez simplement clair si votre écran est trop salissant. D'autres questions? Et vous apprendrez un tas d'autres commandes tout naturellement au cours de la semestre, car ils sont très utiles. Donc, maintenant nous allons parler de la compilation. Nous avons parlé de pseudo et le code source et le code objet. Et il ya beaucoup de codes, et peut-être vous les gars sont confus à ce sujet. Parlons un peu de ce que qui se passe quand vous écrivez un programme, et vous compilez, et il devient un fichier exécutable. Ce sont tous des mots que vous les gars probablement entendu parler, et peut-être vous n'êtes pas vraiment sûr de ce qui se passe. Disons, par exemple, que je veux écrire un programme qui dit «bonjour». La première chose qui vient à l'esprit est vous sorte de essayez de penser à la façon dont vous êtes va faire que dans votre esprit, et vous pensez probablement en anglais ou en une autre langue, comme naturel langue, probablement. Et puis vous pensez, bien, si je veux, par exemple, écrire un programme qui dit "bonjour", je voudrais lancer un programme, Je vais imprimer bonjour, puis je vais quitter le programme. Il s'agit d'un pseudo-code. Ceci est en fait juste vous essayez de venir avec une séquence d'événements que vous allez faire pour être capable d'écrire un programme. Ensuite, vous avez le code source, et le code source n'a pas à spécifiquement dans C. Nous parlons à propos du code source en C parce que c'est la langue que nous apprenons, mais bien sûr code peut être à peu près tout langage de programmation que vous avez. Plus tard dans la session, vous allez d'apprendre d'autres langues. C'est également le code source. Par exemple, ici, c'est ma source code, et puis je suis notamment un bibliothèque, puis je commence principal, puis-je imprimer. Et Laura va parler un peu peu de tout cela. Donc, c'est le code source. Et quel est le code de l'objet? L'objet est un tas de zéros et ceux, essentiellement. Ce qui se passe est que vous devez d'abord pseudo, qui est tout en anglais. Et je veux dire, vous comprenez. Probablement vos amis à comprendre , et la plupart des gens comprendre l'idée. Mais les ordinateurs sont vraiment stupide, et ils ne comprennent pas l'anglais, de sorte que vous ont traduire cela en quelque chose, habituellement traduit dans quelque langage de programmation. Et vous pouvez penser à une programmation langue comme un peu comme une langue que vous dites à votre façon d'ordinateur à parler et à comprendre. Vous êtes essentiellement d'écrire quelque chose dans une langue que chacun de vous et de votre ordinateur comprendre. C'est le code source. Ainsi va la forme pseudo-code à la source code, c'est à vous. Il s'agit essentiellement de vous faire votre programme. Mais le problème est que l' ordinateur n'a même pas comprendre le langage de programmation. Il ne comprend pas code source à tous. Il fait comprendre juste zéros et de uns. Nous avons donc cette chose très magique appelé un compilateur, qui est essentiellement allez obtenir la source appelée que vous écrit dans une langue à la fois vous et parler votre ordinateur, et maintenant vous êtes va transformer que dans zéros et de uns. Donc, fondamentalement, ce que le compilateur fait est il obtient le code source, dans ce cas, C, il va se transformer en zéros et ceux que l'ordinateur comprend et peut faire une fichier exécutable hors de lui. Cela fait-il sens? Vous pouvez simplement penser que le compilateur une sorte de traducteur qui est vous aider à expliquer à l'ordinateur exactement ce qu'il est censé faire. Mais comment puis-je compiler. Revenons à l'appareil, et disons que je fais ce programme. D'abord je vais créer un répertoire ici, et je vais l'appeler "Pratique". Maintenant, je vais naviguer pour le répertoire, la pratique de cd. Maintenant, je suis à l'intérieur pratique. Maintenant, je veux commencer gedit, alors comment puis-je faire cela? Je peux cliquer ici, ou je peux juste littéralement taper "gedit", et il va d'ouvrir pour moi. Maintenant, je vais taper mon programme, afin exactement ce que j'ai écrit dans la diapositive. Je déclarant une bibliothèque. Je fais int main, nulle. Et maintenant, je fais printf, bonjour. Maintenant, je vais enregistrer ce. Permettez-moi de mettre en pratique, et Je vais appeler cette hello.c. Alors maintenant, il est sauvé. Si je veux compiler, j'ai effectivement peut le faire dans deux endroits différents. Je peux soit faire dans une fenêtre de terminal, donc ce grand, ou vous pouvez utiliser gedit qui a fait un fenêtre de terminal ici. Ainsi, vous pouvez très bien faire juste votre code, et alors vous pouvez simplement taper quelle que soit ici, et essayez de le compiler. Alors, comment puis-je compiler le code? La meilleure façon que nous avons est d'utiliser faire, ce qui est une fonction qui est essentiellement va compiler votre code. Vous avez juste à dire faire bonjour, si «Faire» et le nom du programme. Oups. C'est maladroit. LAUREN CARVALHO: Pouvez-vous [inaudible]? LUCAS FREITAS: Désolé. Je ne l'ai pas, sauf dans les bon répertoire. Venez à la pratique, et maintenant enregistrer en tant que hello.c. Je suis désolé. Maintenant, il est sauvé. Permettez-moi de faire ls et être sûr que c'est ici. OK, maintenant il est ici. Alors maintenant, si je ne fais bonjour, il crache une beaucoup de choses, mais il donne juste moi une autre ligne pour le terminal, qui signifie qu'il a réussi. Alors maintenant, si je fais un ls de nouveau, j'ai effectivement voir ce fichier en vert, qui est le fichier exécutable. Et puis si je veux courir, tout ce qui Je dois faire est slash dot bonjour. Il va dire bonjour ici, donc c'est exactement ce que je lui demande pas. Il est une autre façon de compiler, qui utilise clang. Clang est juste un compilateur que nous avons, et il est un peu plus bavard à compiler. Mais cela fonctionne tout aussi bien. Donc, si je fais clang, puis-o, puis le nom que je veux donner à le fichier exécutable, alors disons «Bonjour». Et puis le fichier que je veux à compiler, hello.c. Il va aussi à compiler. Et vous avez le fichier ici, et Je peux exécuter ainsi. Donc, les deux d'entre eux travaillent. Cela fait-il sens? Vous avez des questions? PUBLIC: Pouvez-vous faire un zoom dans un peu? LUCAS FREITAS: Désolé? PUBLIC: Zoom? LAUREN CARVALHO: Je pense que vous peut tout commander en plus. LUCAS FREITAS: Commande quoi? LAUREN CARVALHO: Commande en plus. LUCAS FREITAS: Non LAUREN CARVALHO: Oh, ce n'est pas aller travailler parce que - c'est parce que nous avons mis la résolution pour cette chose. LUCAS FREITAS: Je ne sais pas pensons que nous pouvons agrandir Oui, nous ne pouvons pas faire. Avez-vous une autre question? Désolé. PUBLIC: Pouvez-vous répéter bruit? LUCAS FREITAS: Le bruit? Clang est la même chose que marque, mais la différence est que je vais d'abord pour écrire clang, qui est la commande, alors je vais faire -0, tout ce qui est exactement ce que nous allons apprendre plus tard comme un drapeau. Il suffit donc de penser que vous avez toujours avoir à mettre l'option-o. Et puis d'abord, vous allez mettre le nom du fichier exécutable, essentiellement le fichier que vous êtes va créer. Donc je peux dire, par exemple, et hello2 le fichier que je veux compiler, qui est le fichier c.. C'est donc hello.c. Cela fait-il sens? PUBLIC: Bonjour quoi? Qu'est-ce que c'est? LUCAS FREITAS: Hello.c. Et si je compile, et si Je ne ls, j'ai aussi un hello2 que je viens compilé. Et si j'essaye de courir, il va faire exactement la même chose que bonjour, juste imprimer bonjour. PUBLIC: Comment venir à la marque vous pouvez mettre bonjour.c après? LUCAS FREITAS: En maquillage, vous ne pas avoir à mettre le. c. En maquillage, vous venez de dire le le nom du programme. Vous n'avez pas à dire. C. Mais pour clang, vous devriez. PUBLIC: Avec clang vous aussi avoir à ajouter le [inaudible] LAUREN CARVALHO: Ouais. Donc, vous avez également à la bibliothèque. LUCAS FREITAS: Oui, c'est quelque chose de nous allons utiliser plus tard. C'est ce qu'on appelle la liaison, et je pense que nous sommes va en parler plus tard. Une autre question? PUBLIC: Ne vous mettez un bruit de point de barre? LUCAS FREITAS: Non La barre de point est juste pour ouvrir le fichier exécutable. Donc, clang, vous écrivez simplement "clang", et alors la si vous voulez ouvrir le fichier exécutable que vous venez de compilé, alors vous n'avez dot slash et le nom. Cela fait-il sens? AUDIENCE: Si vous deviez juste changement [Inaudible] à Bonjour tout le monde, pensez-vous avoir à le recompiler? LUCAS FREITAS: Ouais. si je veux dire, par exemple, "bonjour il, "je ne peux l'enregistrer en maintenant, et je suffit de compiler à nouveau. Alors permettez-moi de faire un make bonjour. Et si je fais bonjour, ça va dire "bonjour là." Fait sens? D'autres questions? PUBLIC: Avez-vous d'inclure le I / O standard pour coordonner le travail? LUCAS FREITAS: Ouais. Le standard E / S est essentiellement la bibliothèque qui a un mise en œuvre pour printf. Alors que la bonne chose sur le supérieure comprend stdio. Celui inclut une bibliothèque qui a fait un tas de différents des outils que vous pouvez utiliser. un? D'entre eux est printf qui est une fonction que, fondamentalement, gravures messages à l'écran. D'autres questions? Non? OK. Donc, maintenant nous allons parler - LAUREN CARVALHO: Disons simplement aller au guide de style. Voulez-vous trouver juste il ici? LUCAS FREITAS: Alors, nous allons pour parler de style. LAUREN CARVALHO: Oh, David n'a pas fini. OK. Pourquoi n'avons-nous pas revenir à le style à la fin? Il a effectivement été mis à jour que nous parlons. LUCAS FREITAS: Ouais. Voyons voie à David pour terminer que. LAUREN CARVALHO: Can on passe réellement? J'espère donc que tout le monde a été profiter de Scratch. Malheureusement, il est temps de s'éloigner de ce - malheureusement, il est temps de s'éloigner de ces jolis blocs de programmation à C. Mais heureusement, tous les programmation construit que vous avez travaille avec Scratch sont directement transposables à C, et nous sommes va commencer à en apprendre davantage sur certains d'entre eux en ce moment. Parlons d'abord sur les conditions dans les expressions booléennes. Ceci est en cours d'exécution dans les réserves puissance de la batterie. LUCAS FREITAS: Comment est qui ne fonctionne pas? OK. Vous y allez, je vais faire la - LAUREN CARVALHO: Donc les conditions sont importants car ils nous permettent de introduire la logique dans nos programmes. Voici un exemple d'une condition dans un programme C. Notons comment ce - Donc, dès ce bloc de condition ici, ce printf ne sera pas exécuté sauf si la condition dans le parenthèses, n supérieur à 0, évalue à true. Maintenant, toutes les conditions au sein de f états sont des expressions booléennes, ce qui signifie qu'il n'y n'y a que deux options. Ils pourraient soit la valeur true, ou ils peuvent évaluer la valeur false. Donc ici, si cela fait sens, non? n supérieur à 0, signifie qu'il s'agit d'un positif nombre, ce qui signifie qu'il va imprimer sur "vous avez choisi un nombre positif." Il ya beaucoup d'expressions booléennes qui peut former la condition d'une déclaration d'initialisation. Nous avons le moins. Ceci est inférieure ou égale à. C'est juste une drôle [inaudible]. Si vous voulez le printf de se produire si c'est supérieur ou égal à 0, alors vous choisissez ce. Donc, l'égalité de ajoute les juste après le signe supérieur. Égal égale, ce qui est différent de juste un signe égal, égal égal signifie en fait que tout ce qui est sur la côté gauche de la présente est la même que ce qui est sur le côté droit de cette où un signe égal, c'est quoi? Ce qui est juste un signe égal? Affectation. LUCAS FREITAS: Qui a dit cela? Est-ce que des bonbons? Oh, non. Désolé. Désolé. Vous obtenez deux bonbons. Oh, OK! Trois personnes se bonbons! LAUREN CARVALHO: Donc celui-ci ici est l'opérateur bang précédentes le signe égal, si ce n'est pas égal à. Donc, si cela était dans mon état, le corps de l'état serait exécuter que si tout ce que est dans la gauche n'est pas la même que ce qui est sur la droite. Je peux aussi avoir juste l' point d'exclamation. En fait, nous verrons dans une fonction glisser comment cela pourrait être utilisé. LUCAS FREITAS: Des questions? Non? LAUREN CARVALHO: Nous pouvons combiner ces Expressions booléennes pour construire plus instructions conditionnelles complexes. Donc ici, si tout ce qui est sur la gauche côté des doubles barres ou tout ce qui est sur le côté droit de les doubles barres évalue à true, puis nous affichons invalide. Et puis ici, si tout ce qui est sur le côté gauche des deux perluètes et tout ce qui est sur la droite côté des deux esperluettes évalue à vrai, alors nous imprimons valide. Les doubles barres sont appelées la logique OU opérateur doubles esperluettes sont appelé l'opérateur logique ET. Oui? PUBLIC: Sont-ce seulement minuscules l's? LAUREN CARVALHO: Non Ils sont en fait - vous connaissez le jeu, comme dessus de votre clé de retour? Voyez-vous cela? LUCAS FREITAS: Il s'agit en fait d'un bar. LAUREN CARVALHO: Il s'agit en fait seulement deux bars. PUBLIC: Pouvez-vous utiliser la égal égal pour les chaînes? LUCAS FREITAS: Non Nous allons apprendre plus tard quelque chose. LAUREN CARVALHO: Il ya une fonction que vous pouvez utiliser. Mais vous n'avez pas à craindre que l'instant. Que faire si je donne ce programme le numéro 5? Que va imprimer? PUBLIC: [inaudible] valide. LAUREN CARVALHO: valide? Ouais. Je ne sais pas qui a obtenu que. [Rires] LAUREN CARVALHO: C'est le genre effrayant [inaudible]. PUBLIC: Donc le double et, cela signifie juste et? LAUREN CARVALHO: Ouais. Donc, le numéro 5 est à la fois une plus grande à 0 et inférieur à 100. PUBLIC: Pourquoi serait-il un? LAUREN CARVALHO: Une esperluette est fait quelque chose de différent, et c'est un opérateur de bits, que vous apprendre plus tard. Mais c'est quelque chose qui fonctionne réellement avec les bits d'un nombre donné. LUCAS FREITAS: Il suffit de penser qu'ils ne le font pas à vous inquiéter à ce sujet pour le moment. LAUREN CARVALHO: Je pense que c'est probablement venir la semaine prochaine. LUCAS FREITAS: D'autres questions? Non? LAUREN CARVALHO: Donc, nous avons vu que l' il peut bloquer autonome, mais il peut également être couplé avec et autre bloc. Donc dans ce cas, si n est supérieur à 0, nous allons imprimer "Vous choisir un nombre positif. "autre, ce qui signifie si elle est de 0 ou si elle est moins à 0, nous allons imprimer, "Vous avez choisi un nombre négatif." La chose intéressante ici est que ces sont exclusifs les uns des autres. Il ne va jamais être un cas et dans lequel ce ce peut à la fois imprimer. Je suis sûr que vous avez travaillé avec le if / else boîte à Scratch, ce qui devrait être assez familier. Oui? PUBLIC: Avons-nous besoin de l'espace entre int n est égal GetInt espace, puis dans le if? Comme nous utilisons une ligne [inaudible] LAUREN CARVALHO: Oh, l'espace ici? PUBLIC: Comme ça, mais vous doublez l'espace. Non, monter. Allez-vous. LUCAS FREITAS: Juste la ligne? PUBLIC: Ouais. LUCAS FREITAS: Juste la ligne blanche? PUBLIC: Ouais. LAUREN CARVALHO: ligne en blanc? Non. C'est juste une chose stylistique. LUCAS FREITAS: C'est comme parfois vous sautez quelques lignes donc que le code ne ressemble pas un énorme bloc de texte. LAUREN CARVALHO: Je pense que ce qui s'est passé était que nous avions un commentaire ici, mais je il a fallu de sorte que vous les gars auraient à réfléchir sur le code plutôt que juste lire mon commentaire. En général, l'espacement sera pas vraiment affecter la façon dont votre programme s'exécute. Il s'agit plus d'une chose stylistique. Et quand nous avons le guide de style mis à jour et prêt à aller à la fin de supersection, nous parlerons à ce sujet plus. Il ya quelque chose de mal à ce programme, non? Parce que 0 n'est pas vraiment un nombre négatif. Donc, nous allons voir si nous pouvons résoudre ce problème. Vous pouvez probablement imaginer avec ce dit, non? Si n est supérieur à 0, nous imprimons, "Vous choisir un nombre positif. "Puis d'autre si n est inférieur à 0, "Vous avez choisi une nombre négatif. "else" Vous avez choisi 0. " Maintenant la chose intéressante est que cela pourrait durer éternellement. Vous pouvez avoir un si bloc, un autre si bloc, un autre bloc else if, else if, else if, else if, else, essentiellement aussi longtemps que vous le souhaitez. Et lorsqu'ils sont construits comme ça, ceux-ci vont tous être exclusives les unes des autres. Oui? PUBLIC: Alors pourquoi ne pas vous suffit d'utiliser une autre si, au lieu de [inaudible]? LAUREN CARVALHO: Dans ce cas, oui, je pourrait utiliser un autre cas, et il serait absolument parfait parce que le conditions se sont exclusives les unes des autres. Mais si les conditions n'étaient pas exclusive de l'autre, ce serait les forcer à jamais les deux évaluer, si cela fait sens. PUBLIC: Dans ce cas, pourrions-nous nid la seconde, si dans le premier cas? LAUREN CARVALHO: Si - qu'est-ce que tu veux dire? PUBLIC: Si les deux conditions ne s'excluent pas mutuellement? LAUREN CARVALHO: Si les conditions ne s'excluent pas mutuellement? Mais vous voulez seulement un d'entre eux pour courir? PUBLIC: Vous voulez juste si, au lieu d'autre. LAUREN CARVALHO: Ouais. Il y aura toujours d'être beaucoup de façons que vous pouvez faire cela. Vous pouvez certainement les imbriquer. Et vous le verrez dans une diapositive avenir vous pouvez avoir plusieurs ifs, une seule après l'autre. Mais c'est un moyen de logique organiser le flux de votre programme. LUCAS FREITAS: Et il ya une plus chose, c'est que vous avez demandé de mettre si et puis un autre si. Cela fonctionne parfaitement, mais il est mauvais conception, car, fondamentalement, si vous vérifier si la première, et vous remarquez que le nombre est supérieur à 0, vous peut juste finir le programme. Vous n'avez pas à vérifier si il est inférieur à 0, non? Mais si vous ne si si, ça va de vérifier à la fois, tandis que si je le fais si c'est autre chose, il va vérifier si il est supérieur à 0. Si c'est le cas, ça ne va pas de même regarder les autres lignes du code. Donc, vous êtes essentiellement le vérifier comme deux fois inutilement, c'est pourquoi nous faire si d'autre si. D'autres questions? PUBLIC: Donc la fonctionnalité de l'autre, si c'est le même que si c'était juste si? LAUREN CARVALHO: Non Vous allez vraiment voir dans mon prochain glisser un exemple dans lequel il peut être différent. Dans ce cas, il est presque le même. Donc, ici, nous avons un exemple de multiples si les états, et la fonctionnalité n'est pas le même comme si je venais de dire si autre, si bien, si d'autre. Disons simplement penser à ce que serait imprimer si j'entre dans le numéro 95 dans ce programme. PUBLIC: [inaudible] LAUREN CARVALHO: Et alors? PUBLIC: [inaudible] LAUREN CARVALHO: Ouais. Donc dans ce cas, ces conditions sont pas mutuellement exclusifs les uns des autres. Et parce qu'il n'y a rien qui empêche cette condition à partir de l'évaluation si ce on a déjà, ils sont juste tout va imprimer. Alors, comment pourrais-je résoudre ce problème? PUBLIC: ifs d'autre? LAUREN CARVALHO: Vous pouvez utiliser d'autre si. Je pouvais changer l'ordre de ceux-ci, non? Si je l'ai fait une première? Eh bien, en fait, non. Cela ne fonctionnera pas pour 95. LUCAS FREITAS: Non, seulement les ifs d'autre. LAUREN CARVALHO: La ailleurs ifs aurait résolu ce. Est-ce que dissiper la confusion entre IFS et IFS autre? PUBLIC: Je voulais juste vous demander, si vous avez utilisé d'autre si, il s'arrêter? LAUREN CARVALHO: Droit. Alors que ce premier. Si je suis entré dans le nombre 95, mais cette aurait imprimé, et il n'a jamais aurait progressé au autre. LUCAS FREITAS: Tout type de penser comme si cela se produit, le faire. L'autre est comme si pas, Chèque pour cela, puis le faire. Donc, comme ils sont tous mutuellement exclusif. Vous ne pouvez pas obtenir en deux sur ceux-ci. PUBLIC: Pouvez-vous utiliser une logique ET pour cette situation? LAUREN CARVALHO: Ouais. C'est un autre moyen que nous pourrions ont résolu ce problème. Nous aurions pu défini cuisinières, non? Donc j'aurais pu dire si n est supérieur de 90 et de moins de - Eh bien, je suppose que celui-ci n'a pas vraiment d'importance, mais ici, j'aurais pu dire si n est supérieur à 80 et inférieur à 90. Supérieur à 70, inférieur à 80. Cela aurait également travaillé. [Rires] LUCAS FREITAS: Elle a peur. LAUREN CARVALHO: N'ayez pas peur. LUCAS FREITAS: Ce n'est pas qu'il sera mauvais. C'est juste que c'est inutilement verbose. Comme en informatique, on devrait être aussi simple que possible aussi longtemps que vous avez la fonctionnalité. Voulez-vous les bonbons? PUBLIC: Ne pas en avoir besoin. LAUREN CARVALHO: Vous faites peur tout le monde, Lucas. LUCAS FREITAS: Désolé. LAUREN CARVALHO: David a également mentionné ceux-ci passent déclaration en classe. Fondamentalement, ce qui se passe est le commutateur déclaration prend une variable. Dans ce cas, nous prenons un nombre entier. Si l'entier est 1, nous allons imprimer, "Vous avez choisi un petit nombre. "Si l'entier est 1,« Vous choisir un nombre moyen ". Si le entier est 3, "Vous avez choisi une grande nombre. "Et j'ai aussi eu un cas de défaut ici-bas, mais il ne montre pas vous, ce qui est dommage. Fondamentalement, il s'agit juste d' une autre syntaxe. Nous aurions pu en œuvre cette exacte même chose avec si et else if états. Mais quand il ya beaucoup de différents conditions et beaucoup d'autre variations sur ce que vous voulez faire pour chaque entrée, il s'agit d'une option. Donc, c'est juste une bonne syntaxe savoir. Oui? PUBLIC: Pourquoi n'est-il pas une barre oblique inverse n dans le premier? LAUREN CARVALHO: Pour là-haut? Il n'y a pas contre-oblique n là-haut parce que le GetInt - si vous essayez, ça va vous donner ce message. Donnez-moi un nombre entier compris entre 1 et 3. Et si je mets le jeu n, il serait me prendre à la ligne suivante, mais je ne voulaient qu'ils tapent l'entier juste après la virgule. Vous auriez pu mettre le jeu n. Ce n'est pas une grosse affaire. Ouais? PUBLIC: Pour que ce code, est-ce cas, est que parce c'est le premier cas? Parce que - LAUREN CARVALHO: Non, non, non. Donc ce n'est me donner un nombre entier entre 1 et 3. Si n est 1, j'imprime cela. Si j'avais demandé des lettres, je pourrais avoir dit de me donner une lettre comprise entre A et C. Alors ce serait le cas A. PUBLIC: [inaudible]. L'affaire serait juste [inaudible] LAUREN CARVALHO: Ouais, c'est ça. Ouais? PUBLIC: Que faire si vous voulez avoir plus d'une expression relationnelle? Ainsi, au lieu de dire n est égal à 1, [inaudible] n est supérieur à 1 dans le premier cas,? LAUREN CARVALHO: En fait, si je ne fais pas définir certains de ces cas, ce serait être transporter vers le bas. Donc en fait, c'est peut-être pas ce que vous demandez. LUCAS FREITAS: Je pense qu'elle demandant si le cas était n supérieur à 0, cas inférieur à 0. LAUREN CARVALHO: Peut-être que l'interrupteur déclaration n'est pas vraiment ce que vous voulez à utiliser dans ce cas. LUCAS FREITAS: L'instruction switch est juste pour la valeur, si vous vérifiez de la valeur est comme ceci ou cela. Donc vous ne pouvez pas réellement poser des conditions. PUBLIC: Que faire si la personne types avec [inaudible]? LAUREN CARVALHO: Cela aurait été mon cas de défaut, qui, malheureusement, vous ne pouvez pas voir. LUCAS FREITAS: [inaudible] leur faire voir. LAUREN CARVALHO: En fait, vous savez quoi? Allons juste à étudier 50, et je vais juste un zoom sur les lames sur étude 50, parce que c'est tout simplement ennuyeux. Alors laissez-moi aller effectivement à l'état. Ce va juste prendre un peu de temps. Très bien. Donc, je suis désolé. Au moins maintenant, nous serons en mesure de voir tout sans lui couper. Très bien. Donc, si l'on met en 10, nous aurions par défaut ici pour mon cas de défaut, et je serait tout simplement imprimer invalide parce que je leur a demandé d'entrer un nombre entier entre 1 et 3. D'autres questions? Ouais? PUBLIC: Disons que pour un cas, cas trois, que vous vouliez qu'il soit tout le même chose, si vous avez choisi un certain nombre ce n'est pas un nombre moyen. Dans ce cas, serait-il superflu? Souhaitez-vous changez juste le texte à la fois d'entre eux, ou y aurait-il une certaine redondance? Est-il possible de combiner [Inaudible]? LAUREN CARVALHO: Il ya des façons de les combiner, mais je crois que vous pouvez seulement combiner adjacentes. Donc, si je n'ai pas défini tout pour le cas de deux, ce serait s'appliquer aux deux cas. Oh, si je ne mets rien pour le cas un, cela s'applique à la fois cas un et deux. Si cela fait sens. PUBLIC: Pouvez-vous répéter cette question? LUCAS FREITAS: OK. Si vous avez fait essentiellement, comme, vous avez la même chose, mais vous ne mettez pas quoi que ce soit ici, vous seriez soit pour Si un ou deux cas, le faire. Droite? Et cette rupture signifie que si vous obtenez dans ce cas, laissez simplement. C'est ce que signifie le frein. Donc, si je l'ai fait, vous regardez, c'est cas-ci, et vous voulez bien le faire. Si c'était le cas de deux, il serait également juste venir ici et faire cela. PUBLIC: Mais vous pouvez le faire? Si il ya quelque chose pour cas de deux [inaudible] LAUREN CARVALHO: Je ne crois pas vous pouvez le faire. Je ne pense pas que vous pouvez sauter autour. Pouvez-vous faire cela, Rob? Je ne le pense pas. PUBLIC: Donc un seul numéro peut aller après une affaire, non? Il ne peut y avoir un cas, virgule, deux? LUCAS FREITAS: Non, vous ne pouvez pas. Vous ne pouvez pas vraiment. LAUREN CARVALHO: Je veux dire, le point est c'est une option, et cela pourrait ne pas s'adapter à votre cas d'utilisation, alors vous utiliserait la si les conditions. PUBLIC: Alors, pourquoi le feriez-vous? Le commutateur? LAUREN CARVALHO: Je voudrais utiliser ce si vous avez très défini - effectivement, Lucas, est vous bloquez. LUCAS FREITAS: Oh, désolé. LAUREN CARVALHO: Si vous avez de très comportements définis que vous voulez pour chaque entrée, il peut s'agir d'un peu plus concis que d'écrire une instruction if pour chacun. PUBLIC: Qu'est-ce que la break dire encore? LAUREN CARVALHO: La rupture signifie arrêter. Rappelez-vous, si je n'ai pas eu cette rupture ici, nous aurions juste tombé dans le cas suivant. LUCAS FREITAS: Pause signifie pour obtenir de l'instruction switch. Parce que si c'est 1, je veux à l'imprimer et partir. Je ne veux pas de vérifier quoi que ce soit d'autre. PUBLIC: Vous ne voulez pas d'imprimer quoi que ce soit d'autre. LUCAS FREITAS: Ouais. Parce que c'est mutuellement exclusif. PUBLIC: Et cela ne procéder au cas suivant si le premier cas n'est pas vrai? Ou faut-il tester tous les cas en même temps? LUCAS FREITAS: Non, il vérifie séquentiellement. Séquentiellement, ouais. Une autre question, puis nous avons à passer afin que nous puissions tout couvrir. Ouais? PUBLIC: Donc, pour le cas, pourrait avoir fait autre chose que juste une? Pourriez-vous donner un éventail? LUCAS FREITAS: Non LAUREN CARVALHO: Je ne pense pas vous pouvez lui donner une portée. LUCAS FREITAS: Vous ne pouvez pas vous ne peut pas lui donner une portée. AUDIENCE: Le cas est spécifique [Inaudible]. LUCAS FREITAS: Commutateur est une sorte de valeurs. Vous faire des choses différentes en fonction sur une valeur, une valeur spécifique. Vous ne pouvez pas faire de gamme, vous ne pouvez pas faire autre chose. C'est juste un autre outil pour voir. LAUREN CARVALHO: La plupart des gens n'utilisent pas passer des déclarations très en CS50, mais il est là. Très bien. Alors, la prochaine chose que nous allons parler est sur l'opérateur ternaire. C'est juste un autre type de sursis. Fondamentalement, ce qui se passe ici est que je suis demandant un nombre entier, et si n est égal à supérieur à 100, je vais imprimer «Élevé». Si ce n'est pas, je vais imprimer "faible". Donc, ce qu'il fait est la condition est ici dans les parenthèses, et vous peut sorte de penser à la question que je vous demande si cela est vrai ou non. Si c'est vrai, je vais le faire d'abord chose, et si ce n'est pas vrai, je suis va faire ce deuxième chose. Une question sur l' opérateur ternaire? LUCAS FREITAS: Je veux juste noter de David est que chaque fois que vous avez une état - LAUREN CARVALHO: Je suppose que David regarder via le flux en direct. LUCAS FREITAS: Il fait vie courant en ce moment. Donc, lorsque vous avez un problème, vous êtes censé mettre des accolades, tout comme nous avons dans un commutateur déclaration ici. Nous avons accolades ici. Pour toutes les conditions, vous êtes censé mettre également que. LAUREN CARVALHO: Vous verrez ce dans le guide de style. Fait nous ne sommes pas la guide de style en ce moment. Je pense que David travaille encore. LUCAS FREITAS: Il a dit que c'est juste travailler maintenant. LAUREN CARVALHO: Oh, est-ce de travailler maintenant? OK. Donc, apparemment, cette année dans le style guider, même si vous n'avez qu'une seule ligne, vous avez à mettre les accolades po Vous n'avez pas nécessairement besoin de la fonctionnalité du programme. Et peut-être que nous devrions faire une pause après les conditions et vont directement le guide de style pour effacer certaines de ces choses? LUCAS FREITAS: Ouais. Avez-vous une question? PUBLIC: Non, je vais attendre jusqu'à ce que le guide de style. PUBLIC: Pourriez-vous revenir à l'opérateur ternaire? LAUREN CARVALHO: ternaire, oui. LUCAS FREITAS: opérateur ternaire est essentiellement une déclaration si le monde, mais au lieu de devoir disposer des deux lignes de vérifier si un puis l' autre, vous avez une seule ligne. Donc, fondamentalement, si je veux donner une chaîne une valeur de haute ou basse, et je envie de faire une grande si n est supérieur à 100 ou faible si c'est moins, ce que je peux faire est ce [inaudible] la chaîne va être, et puis je demandez le programme est n supérieur à 100? Donc, c'est pour cela que j'ai cette expression entre parenthèses, puis le point d'interrogation. Je vous demande est-il supérieur à 100? Si c'est le cas, ça va être élevé. Si ce n'est pas, ça va être faible. Donc, fondamentalement, ce que vous pensez, c'est que vous demandez une question, si vous mettez entre parenthèses la condition. Ensuite, vous mettez le point d'interrogation parce que vous la poser. Et si cela est vrai, il va être dans la première valeur [inaudible] ici. Si ce n'est pas, je vais mettre l' valeur qui est après la virgule. Est-il judicieux? C'est aussi quelque chose qui est comme un outil en C, mais vous n'avez pas à utiliser spécifiquement. Mais les gens aiment habituellement que CS parce qu'il sauve juste lignes. LAUREN CARVALHO: Il est très élégant. Il fait beaucoup en une seule déclaration. PUBLIC: Donc le signe de pour cent est juste quels que soient les résultats sur la ligne précédente? LAUREN CARVALHO: Oh, je suis désolé. Ce signe de pour cent est en fait un espace réservé pour ce s. Dans une déclaration de printf, vous avez cette chaîne ici, qui est ce qui se passe à imprimer, mais vous ne pouvez pas juste mis ce s là. Sinon, ce serait imprimer les s littéralement. Nous avons donc mis un pour cent ici pour garder cet endroit a eu lieu pour quelque vient après la virgule. Donc, pour une chaîne, vous avez pour cent s. Pour un nombre entier, i pour cent. Pour un flotteur, pour cent f. Vous verrez ceux que nous voir d'autres exemples. Mais peut-être que vous devriez parler de la guide de style pour un peu de temps, maintenant que c'est vous. LUCAS FREITAS: Si vous allez à cs50.net/style, vous allez voir le guide de style. Pour les ensembles de problèmes, votre score pour la ensemble de problèmes est composé de portée, ce qui signifie, fondamentalement, si vous avez fait tout les parties du problème posé ou si vous tenté quelque chose. La deuxième chose est la décision correcte, qui moyen est votre programme fait ce qu'il était censé être fait, ou n'est-ce pas ont des bugs, ou est-il pas en train de faire ce que il est censé faire. La troisième chose est la conception, ce qui signifie utilisez-vous ce bien, ou êtes vous en utilisant des instructions inutiles? Ainsi, par exemple, si vous voulez répéter un nombre 10 fois, êtes-vous en train d'écrire un boucle ou êtes-vous juste faire 10 fois la même déclaration, juste faire copier-coller. Donc conception est pour cela. Et enfin, vous avez le style. Le style est comme juger si votre code ressemble lisible et peu jolies. Cela signifie simplement essentiellement est votre code lisible? Quelqu'un d'autre qui était à la recherche serait sont votre code soit en mesure de comprendre ce que il fait? At-il des commentaires et des autres? Parlons le style vous êtes censé utiliser. La première chose est de commentaires. Les commentaires sont très important pour votre Code parce que parfois vous faites votre programme, et vous savez exactement ce que vous voulez faire, vous venez de commencer codage, il suffit de taper un tas de C. Mais si quelqu'un d'autre est à la recherche vous êtes code, ils ne vont pas être en mesure de comprendre parce qu'ils ne savent pas les choses qui sont dans votre tête, comme la pesudocode, alors peut-être qu'ils le feront avoir du mal à comprendre ce que fait le code. Donc, les commentaires sont très utiles pour expliquer à quelqu'un qui cherche à votre code ce qu'il fait, et fait même pour vous, ils sont très utiles. Comme vous allez à psets dures et difficiles, vous allez voir que le code se plus, et puis les commentaires sont vraiment importante pour vous rappeler ce que chaque partie de votre programme fait. Pour mettre un commentaire, il vous suffit de faire un slash slash, puis d'écrire un commentaire. Et toute la ligne fait partie d'un commentaire, et tout ce que vous écrivez, ça ne va pas être utilisé pour votre code. C'est fondamentalement comme le compilateur va ignorer. Cela fait-il sens? PUBLIC: Que faites-vous de nouveau pour écrire un commentaire? LUCAS FREITAS: Ce? La barre slash? Chaque fois que vous tapez slash slash, quelle que soit est dans cette ligne ne va pas être considéré comme C. Ouais? PUBLIC: Donc, après le commentaire, vous il suffit d'entrer et commencer une nouvelle ligne? LUCAS FREITAS: Oui, exactement. LAUREN CARVALHO: La barre oblique est pour les commentaires d'une seule ligne. LUCAS FREITAS: Par exemple, nous avons ici - laissez-moi un zoom avant - par exemple, ici je déclarer un flotteur, mais peut-être si vous venez de mettre ce dans votre code, comme vous n'avez aucune idée Qu'est-ce que le fait, comme en fait quelqu'un qui cherche à ce code va être, comme, ce que le diable se passe? Si vous mettez un commentaire disant "convertir Fahrenheit en Celsius, il est beaucoup plus de sens. Vous êtes, comme, OK, vous êtes faire une conversion. Cela fait-il sens? Donc, c'est juste quelque chose qui aide les gens prêt votre code et également vous serez en mesure d'organiser mieux votre code. La deuxième chose est que vous pouvez faire commentaires multi-lignes, donc avoir un commenter pour un groupe de lignes. Au lieu d'avoir à mettre slash slash, les commentaires de première ligne, Slash Slash, la deuxième ligne, et ainsi de suite, vous peut utiliser l'étoile de barre oblique. La façon dont vous le faites, c'est que pour la première ligne du commentaire, vous êtes va faire une étoile slash étoiles, si juste comme ça. Tout comme nous avons ici le début de un programme, vous mettez habituellement qui vous sont, ce que ce programme fait, et des trucs comme ça. C'est un peu comme un en-tête pour le programme. Encore une fois, ce n'est pas quelque chose que compilateur va se soucier, mais il est important pour vous de savoir ce que cela programme fait ou pour d'autres personnes de savoir ce que fait votre programme. Donc, vous n'avez slash star star, puis la dernière ligne vous allez faire étoiles réduire pour être en mesure de fermer ce commentaire. Donc, fondamentalement, pour toutes les autres lignes, vous pouvez simplement écrire ce que, et ce tout cela va être ignorée. Et aussi, tout comme le style, vous voyez que chacune des lignes a une étoile, et tous les étoiles sont alignées. Ce sont des choses importantes afin que votre code ressemble assez. Ça sonne bien? Or, les conditions. Qu'est-ce que David a dit que nous devrions effectivement mis dans ces diapositives, c'est que quand vous avez n'importe quel type d'instructions if ou tout type de conditions, vous devez utiliser des accolades pour montrer que c'est ce qui allait se passer quand vous avez la condition. Techniquement, lorsque vous avez une condition puis la ligne suivante est juste un ligne, vous n'avez pas techniquement de mettre les accolades. Fondamentalement, le compilateur comprendre de toute façon comme implicite. Mais pour CS50, nous vous demandons de gars à mettre les accolades juste afin que votre code est plus organisé et plus lisible. Parce que le code devient plus longtemps si vous n'ont pas accolades et autres. Cela devient vraiment salissant. LAUREN CARVALHO: C'est exactement ce que David vient de le souligner dans mes diapositives précédentes. Il fonctionne vraiment sans bouclés accolades, mais pour des raisons stylistiques nous allons demander que vous ne mettez ceux po Et quand vous commencez à courir style50, qui est une sorte de chèque de 50 pour style, il vous rappellera de le faire. LUCAS FREITAS: Et une autre chose est n'oubliez pas de mettre les accolades long dans chaque ligne. Alors que vous faites, par exemple, l'art. Aller à la ligne suivante, ouvrez le bouclés accolade, puis vous allez à la ligne suivante. Indentation, ce qui est quatre espaces. Ensuite, vous écrivez que ce soit, puis un autre ligne, et fermer l'accolade. Assurez-vous donc que ces deux bouclés accolades sont dans différentes lignes. PUBLIC: Donc, si ce code avait comme 10 d'autre ifs, ce doit de 10 paires de crochets? LUCAS FREITAS: Ouais, pour chacun d'eux. Ouais. Donc, si, d'autre si, et ainsi de suite. PUBLIC: Pouvez-vous pas appuyez sur Tab pour mettre en retrait? LUCAS FREITAS: Nous vous demandons les gars à utiliser quatre espaces. Certains éditeurs de texte à traduire onglet que quatre espaces automatiquement. gedit ne fait pas, il faut donc faire space space. C'est aussi quelque chose que certains programmeurs ne font onglets, certains programmeurs ne font quatre espaces, et quelques autres font même deux ou trois places. C'est juste que nous demandons ici vous les gars à faire quatre espaces. PUBLIC: Il n'y a presque certainement obtenu d'être un moyen pour gedit à automatiquement [inaudible]. Pas comme [inaudible] est-ce que. LUCAS FREITAS: Ouais. Je pense que vous pouvez aller sur Paramètres. PUBLIC: Il fait déjà tout cela. LUCAS FREITAS: Il fait déjà? OK. Donc, assurez-vous simplement que vous avoir quatre espaces. PUBLIC: Faut-il mettre le bouclés crochets dans les boucles ainsi? LUCAS FREITAS: Oui. LAUREN CARVALHO: Chaque fois que votre l'encapsulation d'un bloc de code, il suffit s'il vous plaît utiliser les accolades. Et avant que vous pensez que nous sommes juste étant très pointilleux à ce sujet pour aucune bonne raison, si vous les gars ne vont à obtenir stages technologie à de grandes entreprises, ils vous donneront un guide de style, et ils vous diront que c'est ce que votre code doit ressembler. Et même si vous avez appris à code comme ce, peut-être dans votre stage vous aurez à faire quelque chose complètement différent. Ils ne s'attendent vous conformer à leur style. LUCAS FREITAS: Et encore une chose est que pensez-vous remarqué comment j'ai comme x, espace, moins, l'espace, 0? Chaque fois que vous avez un opérateur - il peut être comme plus, moins, fois, moins, plus, quel que soit l'opérateur - vous devez mettre un espace sur la gauche et la droite de l'opérateur. LAUREN CARVALHO: Ce sont appelé opérandes binaires. Assurez-vous toujours de l'espace vos opérandes binaires. LUCAS FREITAS: C'est pas un opérande binaire. LAUREN CARVALHO: C'est car il faut être deux. LUCAS FREITAS: Oh, oui. OK, les commutateurs. Tout d'abord, il faut voir que, tout comme dans une déclaration si ou autre, vous avez de mettre l'accolade sur sa propre ligne et sous l'accolade ici. Notez qu'il ya un espace unique après la mise, tout comme dans le cas et d'autre nous avons eu un seul espace entre et que les parenthèses. Donc, vous devez mettre cela. Et il n'y a pas d'espace à droite après chaque des parenthèses ou avant la fin des parenthèses. Donc, vous voyez que c'est tous ensemble, et certainement aussi ici. Ouais? LAUREN CARVALHO: Je pense que nous devons aller de l'avant. LUCAS FREITAS: Cela fait donc partie de la guide de style que vous avez pour CS50. Soyez sûr d'aller à cs50.net/style et jeter un oeil à ce. Ce sont toutes très importantes pour votre pointage de style. Permettez-moi de revenir à la déclaration. LAUREN CARVALHO: je préfère il suffit d'utiliser style50. Nous allons juste aller droite à boucles. Très bien. Donc, revenons à la teneur, maintenant que nous sommes allés sur le guide de style. Boucles, vous les avez vus dans Scratch, et nous allons en parler dans C. Dans une boucle pour, il existe trois portions de l' déclaration de cette boucle. Vous avez votre initialisation que vous définissez vos variables. Vous avez votre état, qui sont vérifier pour voir si quelque chose est vrai ou faux, et si l' boucle doit continuer. Et vous avez votre mise à jour, qui est la mise à jour de vos variables. Prenons juste un coup d'oeil à un certain code C de cette boucle dans l'action. Qu'est-ce qui se passe ici dans le initialisation, nous i mise à 0. En l'état, nous vérifions si i est inférieur à 10. Et dans la mise à jour, nous sommes incrémenter i. Alors, que va résulter de cette boucle? LUCAS FREITAS: En fait, tout d'abord, faites-vous pour savoir ce que je + + est? PUBLIC: Augmentation de 1. LUCAS FREITAS: Augmentation de 1, oui. Donc, c'est la même chose que faire i est égal à i + 1. Et remarquez que nous n'avons pas un espace entre le i et le + +. Donc, ne vous les gars savent ce que cela va faire? Quelqu'un peut me dire? Et peut-être obtenir des bonbons à cause de cela? PUBLIC: [inaudible] LUCAS FREITAS: OK. [Inaudible] montrer à tous plus tard [inaudible]. Ouais, ça va pour voir "Cette CS50 est "10 fois. LAUREN CARVALHO: Je suppose que c'était dans le titre de la diapositive. LUCAS FREITAS: Oh, oui. [Rires] LUCAS FREITAS: Cela aide. LAUREN CARVALHO: Donc, ce sont pour les boucles. Nous allons voir quelques exemples de boucles pour plus tard. Mais prenons effectivement un oeil à l' deuxième type de boucle que vous rencontrerez en C, et il a appelé la boucle while. Dans une boucle while, vous avez juste obtenu une condition. La condition est vérifiée dans le début, et si cette condition évalue à vrai, alors le code dans le corps du bloc tandis que exécutera. Et le code continuera à exécuter aussi longtemps que condition reste vraie. Voici un exemple d'une boucle while en C. Nous allons définir le nombre de 10 à commencer. Tant que comptage est supérieure à 0, nous allons continuer à imprimer ce variables ici. Nous allons diminuer le nombre et puis vérifiez à nouveau la condition. Imprimer, décroissance, Chèque l'état de nouveau. Ici, nous avons un exemple qui se rapporte à votre question précédente. Nous avons eu le pour cent de quand nous étions l'impression d'une chaîne, et maintenant que nous imprimer un int, nous avons une i pour cent comme notre espace réservé à la place. Les lettres doivent tous être assez intuitive, s pour une chaîne, i pour int. Donc, si ce code s'exécute, vous devriez compte à rebours de 10 à 0, l'impression de chaque nombre entier. LUCAS FREITAS: Et vous pouvez penser à la pour cent, il se sent comme un vide espace, puis vous mettez ce variables ici dans cet espace vide. Ainsi, par exemple, ici je vais avoir juste un vide, et puis je suis en train de le compter là, la valeur du compte. Cela fait-il sens? Puis-je faire comme printf et cite alors, compter? Est-ce que travailler? PUBLIC: Non LUCAS FREITAS: Non, car il ne sera fait imprimer le mot "nombre" au lieu d'imprimer la valeur. C'est la façon dont vous le faites imprimer les valeurs vers la variable au lieu d' simplement le nom de la variable. Vous avez des questions? PUBLIC: Pourquoi utilisez-vous pour comme opposé à temps? LAUREN CARVALHO: Je voudrais utiliser un pour boucle si je sais exactement combien itérations Je veux ma boucle à courir. Dans ce cas, ce n'est pas grave parce que, Je veux dire, je voulais juste penser à une très simple exemple pour cette diapositive. Mais disons que vous voulez quelque chose pour continuer tout - LUCAS FREITAS: Par exemple, vous êtes demandant entrée jusqu'à ce que la personne vous donne l'entrée à droite. Donc, comme lorsque l'entrée n'est pas OK, garder le demander. Ou comme lorsque vous êtes les parents ne donnent pas de l'argent, garder le demander. [Rires] LAUREN CARVALHO: Vous ne savez pas comment Plusieurs fois, vous aurez à faire. LUCAS FREITAS: Parce que vous n'avez pas savent combien c'est allons continuer. LAUREN CARVALHO: Mais dans une boucle, vous avez besoin de savoir combien de fois. Ouais? PUBLIC: Juste pour clarifier, le pour cent dit que c'est quelque chose de arriver, les i pour l'entier, et la barre oblique inverse n - LAUREN CARVALHO: Moyens? Qui sait ce que signifie la barre oblique inverse n? Nouvelle ligne, oui. Exactement. LUCAS FREITAS: Vous pouvez penser de n comme nouvelle ligne. LAUREN CARVALHO: Nice. PUBLIC: Qu'est-ce qui compte tableau de bord tableau de bord [inaudible]? LUCAS FREITAS: Nombre minus minus est la même chose que plus plus, mais au lieu d'augmenter, il est en baisse de 1. LAUREN CARVALHO: Pas plus tandis que les questions de la boucle? Non? Oh, nous étions censés ont sauté que. Il s'agit d'une boucle Do While. Très semblable à une boucle while, sauf dans ce cas, nous vérifions l'état après le code dans le corps de l' boucle s'exécute une fois. Donc, nous exécutons le code premier pas n'importe quoi. Ensuite, nous vérifions l'état, exécuter encore si la condition est vraie. Vous vous trouvez à l'aide quand vous demandez une entrée utilisateur. Parce que vous allez toujours avoir à demander une fois, puis en fonction de ce l'entrée de l'utilisateur est, vous pourriez avoir à Nouvelle invite et demander encore et encore si l'entrée n'était pas ce que vous prévoit qu'elle sera. PUBLIC: Donc, c'est comme une forme pour les personnes à remplir. LAUREN CARVALHO: Oui, exactement. Vous trouverez, je crois, dans votre première Pset, vous allez avoir à utiliser une boucle do puits pour recueillir entrée de l'utilisateur. PUBLIC: Selon la situation, vos boucles while auront tendance à fonctionner plus souvent que les boucles while, comme par un ou quelque chose? LAUREN CARVALHO: Si c'est exactement - LUCAS FREITAS: Ils devraient toujours fonctionner le montant exact de fois que vous veulent qu'il fonctionne. Comme nous utilisons tout faire car nous avons vraiment voulu obtenir l'entrée au moins une fois. Dans les boucles while, parfois vous ne voulez pas pour l'exécuter du tout si ce n'est pas le cas à exécuter. Donc, cela dépend de la conception. Je veux dire, vous pouvez soit utiliser tout faire ou tout aussi longtemps que votre code fait que il est censé faire. LAUREN CARVALHO: Mais je fais pense que la réponse à votre question est probablement oui. Disons que la condition est fausse. Dans un cas, il irait à la fois, et un autre cas il irait zéro fois. Donc, oui. D'autres questions? Oui? PUBLIC: Peut la condition de la boucle être un boucle en termes d'une variable autre que [inaudible]. LAUREN CARVALHO: Ouais, il peut être n'importe quoi. Probablement pour les psets commençant, vous n'aura pas à rencontrer ce cas, mais certainement il peut être n'importe quoi. LUCAS FREITAS: Je pense que nous aurons terminé ici. LAUREN CARVALHO: Sommes-nous? Non? LUCAS FREITAS: Loops? Ouais. LAUREN CARVALHO: Nous ne devrions pas être. Oh, nous avons fini avec des boucles. OK. En fait, parce que nous avons parlé de manière beaucoup, nous allons effectivement naviguer tous plus de study.cs50.net/conditions. Et vous allez naviguer vers le bas à scroller les problèmes. Eh bien, en fait, alors que les gens sont cette mise en place, l'étude CS50 est va être un outil que vos TFS utiliser pour préparer des articles et vous les gars peuvent utiliser si vous manquez sections. Il va contenir un groupe de diapositives, quelques trucs et astuces pour chaque sujet, et certains problèmes pratiques des solutions. Pourquoi tout le monde et pas seulement un coup d'oeil à ce problème ici. Je suis désolé, j'aurais rappelé les gens à apporter aujourd'hui les ordinateurs portables. Mais si vous n'avez pas un ordinateur portable, c'est OK. Vous pouvez simplement noter cela sur un morceau de papier ou regarder par-dessus l'épaule de votre voisin. Essayons de rédiger un programme qui invite l'utilisateur à faire une supposition, la nombre moyen d'enfants par famille unité dans les États-Unis. Ce nombre est de 2, en passant, que vous peut le voir sur ces exemples. Nous voulons imprimer nombre moyen de enfants par famille aux États-Unis, alors nous voulez quoi? Nous voulons recueillir les commentaires à partir de l'utilisateur. Et puis en fonction de ce que l'utilisateur de entrée est, vous allez imprimer soit c'est correct ou ce qui est faux. Et la première chose que vous aurez voir, si vous cliquez sur la petite flèche à le fond de la widget est un problème repérer de noter une certaine pseudo. Donc vous n'êtes pas encore la programmation. Vous êtes juste votre idées dans l'ordre. Est-ce que quelqu'un veut aider Lucas venir avec le droit pseudo pour ce problème? LUCAS FREITAS: Quelle est la première chose que nous devrions probablement faire ici? Qu'est-ce que vous en pensez? PUBLIC: [inaudible] LUCAS FREITAS: Ouais, OK. Ainsi, impression. Il suffit de dire l'impression de cette moyenne nombre de personnes? OK. Imprimer question, disons. Après j'imprime cette question, que dois-je faire? PUBLIC: Obtenez entrée. LUCAS FREITAS: Obtenez entrée. Autre chose? PUBLIC: Condition. LUCAS FREITAS: Condition. LAUREN CARVALHO: Qu'est-ce que état va être? AUDIENCE: Le nombre de [inaudible]. LAUREN CARVALHO: Droit. LUCAS FREITAS: Alors qu'est-ce que je vais de vérifier dans l'état? PUBLIC: Si elle est égale à 2. LAUREN CARVALHO: Si elle est égale à 2. Exactement. LUCAS FREITAS: Y at-il quoi que ce soit d'autre que je dois faire? PUBLIC: comte. LUCAS FREITAS: Donc, si c'est égal à 2, disons - permettez-moi de vous écris si l'entrée est égale à à 2, alors ce que je vais à faire est d'imprimer correcte. Et puis d'autre, je vais pour imprimer incorrects. Autre chose? Non? LAUREN CARVALHO: Donc, vous pouvez cliquer sur le - tout le monde doit cette baisse? LUCAS FREITAS: Est-il logique? Alors maintenant, nous allons essayer de coder ce. LAUREN CARVALHO: Si vous cliquez sur le petit flèche, il enregistre réellement votre pseudo, qui est vraiment passionnant. Et vous pouvez faire dans les commentaires si vous voulez juste vous rappeler ce qu'il faut faire. LUCAS FREITAS: Ainsi, par exemple, la première Je vais imprimer la question, de sorte comment vais-je faire, en fait? printf. Donc, printf, et la question est de moyenne nombre d'enfants par famille aux États-Unis. Ensuite, je vais me entrée de l'utilisateur. Alors, comment puis-je faire? PUBLIC: Obtenez Int. LAUREN CARVALHO: GetInt. LUCAS FREITAS: OK. Alors d'abord déclarer, non? int, appelons-n est égal GetInt. Et maintenant l'état. Alors permettez-moi de dire que je vais à ici chèque réponse. Ainsi, en premier lieu, si l'entrée, qui est n, est égal à - comment vais-je écrire cela? PUBLIC: égalité égale. LUCAS FREITAS: Parfait. Alors n. Et remarque que je fais un espace, égaux, égaux, l'espace, c'est vrai. Et maintenant, que dois-je faire? Quelque chose de très important pour le style. Les accolades. Et puis je vais imprimer. Comment puis-je imprimer? printf. PUBLIC: Pourrait-il être en majuscule? LUCAS FREITAS: Non Il est censé être en minuscules. Donc, c'est exact. Serait-ce suffisant pour le printf déclaration, ou suis-je manque quelque chose? PUBLIC: Nouvelle ligne. LUCAS FREITAS: Nouvelle ligne, oui. Et maintenant autre. PUBLIC: Y at-il un espace après le printf, ou pas? LAUREN CARVALHO: Nous devrions consultez le guide de style. PUBLIC: Il ne devrait pas être. LUCAS FREITAS: devrait-il pas être, OK. Alors le reste, printf, "C'est incorrect." LAUREN CARVALHO: Oups, vos citations. LUCAS FREITAS: OK. Autre chose? Est-il bien paraître? LAUREN CARVALHO: Allons-nous essayer? LUCAS FREITAS: Oui, nous allons l'exécuter. Il est donc la compilation, et il semble que cela fonctionne. Essayons deux enfants. C'est exact. Et maintenant, nous allons courir de nouveau, mais maintenant la place de mettre deux enfants, nous allons dire que je vais mettre comme cinq. C'est inexact. Il semble donc que cela fonctionne. LAUREN CARVALHO: Pourquoi avez-vous leur montrez pas ce qui arrive si vous mettez quelque chose bizarre, comme des lettres. LUCAS FREITAS: Oh, oui. Nous allons vérifier cela aussi. Que faire si l'utilisateur tente de désordre avec votre programme, et ils ont juste écrire, je ne sais pas deux. Il va dire réessayer. LAUREN CARVALHO: Donc GetInt est leur demandant de réessayer. Nous n'avons pas eu à prendre soin de nous-mêmes. LUCAS FREITAS: Ouais. Donc, si je mets en fait un certain nombre, il est va garder en me demandant de réessayer. PUBLIC: Comment avez-vous l'exécutez? LUCAS FREITAS: Il suffit de cliquer cette touche étoile. LAUREN CARVALHO: Vous devriez monter. Là vous allez. LUCAS FREITAS: L'étoile bouton juste là. Ouais? PUBLIC: Est-ce qu'il invite [inaudible] avec des nombres décimaux trop? LAUREN CARVALHO: Je crois que oui. LUCAS FREITAS: Si il fait quoi? LAUREN CARVALHO: Si on tape en un nombre décimal, je pense ça va inciter. LUCAS FREITAS: Voyons voir. LAUREN CARVALHO: Parce que ce n'est pas un int. LUCAS FREITAS: Ouais. LAUREN CARVALHO: Donc ce n'est pas un int, Faites Int vous demandera de recommencer. PUBLIC: Alors, où dans ce code serait la décimale qui invite l' l'utilisateur qu'ils doivent entrer un nombre entier en particulier? LAUREN CARVALHO: GetInt est en fait le faire pour nous. PUBLIC: Non, je veux dire que si nous voulions pour accéder à [inaudible] LUCAS FREITAS: Vous pouvez dire comme moyen nombre d'enfants aux États-Unis. Je ne sais pas. Nous pouvons dire, par exemple ", S'il vous plaît entrée un nombre entier. " LAUREN CARVALHO: Un nombre entier égal le nombre moyen. Je veux dire, c'est juste la façon dont vous le mot, non? LUCAS FREITAS: Ouais. Ce n'est pas réellement une partie de codage. C'est plus comme quelque vous allez vouloir écrire dans votre programme. PUBLIC: Comment aurions-nous pu fonctionner si elle était en fait dans gedit [inaudible]. Au lieu d'appuyer jeu? LUCAS FREITAS: Nous allons premier compiler. Nous pouvons le faire en faisant maquillage et le nom du fichier. Et puis de l'exécuter, nous ferons point barre et le nom du programme. PUBLIC: Je suppose que ce que je voulais dire, c'est si nous voulions que le programme pour répondre aux leur incorrect, entrée non valide, vous ne devriez pas mettre en - LUCAS FREITAS: Nous ne serons pas en mesure de le faire parce que le code de ce dit réessayer vient de Get Int qui est un fonction qui est déjà mis en œuvre pour nous par l'intermédiaire de la bibliothèque de CS50, et depuis il est déjà mis en œuvre là-bas, nous ne peux pas [inaudible]. LAUREN CARVALHO: Si vous n'utilisez pas GetInt, alors vous pouvez le faire. LUCAS FREITAS: Ouais. Mais si vous utilisez GetInt, vous ne pouvez pas. D'autres questions? PUBLIC: Pourriez-vous avez passé avec comme GetFloat et ensuite être capable de mettre dans un nombre décimal? LUCAS FREITAS: Ouais. PUBLIC: OK. Ensuite, vous ne pouvais entrée flotter une égaux - LAUREN CARVALHO: Ouais. Exactement la même chose, sauf un flotter à la place d'un int. LUCAS FREITAS: suffit de le mettre ici puis GetFloat il. PUBLIC: Comme vous voudrez voir ou avoir vu - LAUREN CARVALHO: nous avons pas encore là. PUBLIC: - faire l'inégalité de flotteurs ne pas [inaudible] PUBLIC: Qu'est-ce que les points-virgules signifient? LAUREN CARVALHO: Le point-virgule juste signifie que cette déclaration est complète, et nous allons aller sur la diapositive suivante. PUBLIC: il est donc nécessaire à chaque fois? LAUREN CARVALHO: Ouais. Eh bien, OK, donc pas de ces conditions, parce qu'ils sont encapsulation quelque chose. Donc, fondamentalement, si quelque chose est à l'origine de créer ensuite une accolade bloc, ne pas mettre un point-virgule à la fin. LUCAS FREITAS: Mais tout autre, oui. Lorsque vous avez terminé une déclaration, mettre le point-virgule. Et si vous oubliez des points-virgules, l' compilateur va se mettre en colère contre vous, et vous allez devoir à essayer de le réparer. LAUREN CARVALHO: Si je mets un point-virgule ici, ce serait arrêter cela, et je serait jamais à exécuter ce qui est à l'intérieur, par la manière. Il est donc l'un de ces insectes communs. PUBLIC: Toujours exécuter. LAUREN CARVALHO: Ouais. Dans ce cas, nous serions toujours exécuter ce qu'il ya dedans. PUBLIC: Votre style [inaudible] joindre pour vous, la pensée. LAUREN CARVALHO: Oh, c'est vrai. PUBLIC: [inaudible] unique chose de ligne [inaudible] PUBLIC: Oui? PUBLIC: Pouvez-vous avoir plusieurs entrées dans une ligne? Donc, comme vous pouvez demander aux utilisateurs pour imprimer deux choses? LAUREN CARVALHO: Ne pas utiliser - LUCAS FREITAS: Non Disons que je veux aussi pour obtenir l'entier m. Je dois le faire dans une ligne différente. AUDIENCE: Si vous deviez exécuter , comment [inaudible]? Il imprimer l'invite il [inaudible] et alors vous entrez un et - LAUREN CARVALHO: Eh bien, l'exécuter. Je veux dire, il n'y a rien qui nous empêche d' juste courir et voir ce qui se passerait. LUCAS FREITAS: Je pense que c'est va se plaint à nous parce que nous n'utilisons pas - LAUREN CARVALHO: Oups. LUCAS FREITAS: Il s'est plaint à nous droit parce que nous ne sommes pas l'utilisation de ce variable, mais si je le faisais, par exemple, n est égal à égal à égal, et m est égal à est égal à, puis ce sera arriver dans ce cas? Qu'est-ce que ce programme faire? PUBLIC: Je me demande comment cela serait - LAUREN CARVALHO: Elle veut juste de savoir à quoi il ressemble comme, je pense, non? Il a donc fallu un d'eux, puis elle a pris la seconde. Je pense que nous devrions aller de l'avant, parce que nous avons une plus Diaporama pour aller devant - voulez-vous tirer vers le haut les mathématiques? LUCAS FREITAS: Oui, les mathématiques. LAUREN CARVALHO: Donnez moi juste une seconde. Il ya un peu différente numérique variables dans les données numériques en C. C peuvent être classés en différents types, et ce sont celles que vous voir le plus souvent. Et int est un nombre entier. Vous ne pouvez pas avoir des décimales. Dans l'appareil, il faut 32 bits pour stocker un int. Un flotteur peut avoir des décimales. Il faut également 32 bits pour stocker un flotteur dans l'appareil. Un double est un nombre avec une décimale Point qui prend 64 bits pour stocker, ce qui signifie que vous pouvez juste avoir une plus grande précision, car vous pouvez avoir plus - qu'est-ce que vous l'appelez? LUCAS FREITAS: Ouais, c'est plus. LAUREN CARVALHO: plus d'adresses après la virgule. Et une longue longue est un nombre entier qui prend 64 bits à mal dans l'appareil. LUCAS FREITAS: Donc, il peut être plus grande que ints peut être. LAUREN CARVALHO: La chose au sujet des données types en C, c'est qu'ils vous disent ce type de données que vous pouvez stocker dans votre variable. Ils vous disent comment vous pouvez utiliser cette variable dans votre programme. Il est très important de garder une trace juste de ce type de données que vous utilisez, et si vous n'avez pas besoin de lancer à partir d'un type de données à un autre, assurez-vous que vous savez exactement ce qui se passe lorsque que coulée a lieu. Et vous verrez un exemple plus tard dans ces diapositives d'une erreur qui peut se produire. Prenons un oeil à quelques calculs en C et pense vraiment attentivement, je suppose, sur ce qui se passe quand ce mathématiques se déroule. Dans la première ligne, ce qui est se passe quand je déclare x? PUBLIC: Vous permet x être quelque chose? LAUREN CARVALHO: Ouais. Eh bien, je suis vraiment demander l'exploitation système de 32 bits de mémoire, non? Dans lequel je peux stocker un int, et Je vais appeler que int x. LUCAS FREITAS: aller Fondamentalement dans la mémoire et de trouver un endroit qui a 32 bits et dire, bon, je veux cet espace, et il va être appelé x. Donc, vous êtes juste à peu près conclusion une boîte dans votre mémoire stocker des valeurs pour x. LAUREN CARVALHO: Et puis je l'initialise x, ce qui signifie que je stocke tout le valeur de 2 à cet endroit, ce morceau de mémoire, que nous avons demandé exploitation système. Et ici ce que nous faisons est nous sommes en train de déclarer et initialisation y en une seule ligne au lieu de en deux lignes, comme nous l'avons fait ici, qui est aussi un parfaitement bien, nous sommes ajoutant 1 à x, et nous stocker que valeur en y. LUCAS FREITAS: Donc, fondamentalement, ce que ce ligne le fait, il se trouve maintenant une boîte pour y puis sa valeur, la chose qui vous allez mettre dans la boîte, est va être la valeur de x plus 1. Ainsi, il a cette case pour y. Il obtient la valeur de x, regarde ici, et de voir que c'est 2. Mettez-le là, plus 1, de sorte il met un 3 là. Cela fait-il sens? Alors y aurait 2 dans ce cas. LAUREN CARVALHO: Très bien, cool. Nous avons vu ailleurs, nous allons donc penser maintenant sur la division en C. Ici, je suis déclaration et l'initialisation d'un flotteur appelé réponse et en divisant 1 par 10, et puis je l'impression de la réponse à deux décimales. Et notez ici, dans ma déclaration de printf, quand je veux imprimer quelque chose à deux décimales,% .2 f est ce que je veux utiliser. Ainsi, le point 2 est juste de dire J'ai besoin de deux chiffres après la décimal imprimé. Maintenant, qu'est-ce qui va se passer si j'exécute ce code? Est-ce que quelqu'un a une idée? Que serait imprimer? LUCAS FREITAS: Quels sont nous attendre à obtenir. LAUREN CARVALHO: Que faire nous voulons, tout d'abord? LUCAS FREITAS: [inaudible] LAUREN CARVALHO: 0,1, ouais. Mais que va imprimer? PUBLIC: [inaudible] LAUREN CARVALHO: Eh bien, non, en fait. C'est ce que je disais à propos de la raison pour laquelle vous besoin de garder une trace très prudent de vos types de données. Alors, quel type de données est-il? Est un int, non? Il n'y a pas décimale. 10 est également un int. Il n'y a pas décimale. Si je divise un int par un int, je reçois un int qui n'est pas 0,1, parce ints ne peut pas avoir décimales, mais seulement 0. Parce qu'un int tronque juste hors les décimales. LUCAS FREITAS: Donc, chaque fois que vous faites opérations avec ints, vous allez obtenir un int comme la réponse. Donc, fondamentalement, ce que l'ordinateur est de faire, il divise par 1 10, et il obtient 0,1. Mais c'est comme, attendez, ce n'est censé être un nombre entier, il vous suffit ignorer la 0.1, il est maintenant juste 0. LAUREN CARVALHO: Alors, quand j'imprime ce , je reçois 0,00 plutôt que 0,10. LUCAS FREITAS: Cela fait-il sens? LAUREN CARVALHO: C'est le genre de malheureux, non? LUCAS FREITAS: Alors, comment pouvons-nous résoudre ce problème? LAUREN CARVALHO: Let'S essayer de résoudre ce problème. Voici un exemple de l'endroit où je suis en fait couler la 1 et le 10 à flotteurs. Alors maintenant, 1 n'est plus un int. 1 est un flotteur. Par ailleurs, ce n'est que la syntaxe pour quand vous voulez lancer d'un le type de données à l'autre. Vous pouvez simplement mettre le type de données à parenthèses et ont juste que précéder la valeur que vous la coulée. Donc ici, je vais diviser un flotteur par un flotteur pour obtenir une réponse de flotteur. Et oui, ce serait en fait imprimer 0,10. Cela fait-il sens? LUCAS FREITAS: Alors le type coulée est juste la conversion d'un type à l'autre. Ainsi, le flotteur 1 est en fait 1,000. Pas exactement, mais c'est quelque chose avec décimales qui est en fait une. Cela fait-il sens? Ouais? PUBLIC: Que faire si vous avez flotteur réponse est égale à 1,0 divisé par 10? LAUREN CARVALHO: Vous allez effectivement de voir que dans la diapositive suivante. C'est en fait notre très prochaine diapositive. C'est en fait un de plus agréable que tapez casting, je pense. Donc, ces deux sont des flotteurs tout en nature du fait qu'ils avoir décimales. Oui? PUBLIC: Que faire si vous avez fait [inaudible] divisé par 10? LAUREN CARVALHO: En fait un flotteur divisé par un int vous donne une réalité flotter, de sorte que cela fonctionne très bien. Attendez, que tout le monde comprend ce? Parce que cela va être un très affaire dans Pset1, en fait. Oui? PUBLIC: Pourriez-vous rapidement aller sur la partie rouge? LAUREN CARVALHO: La partie rouge, ouais. Lucas, voulez-vous? LUCAS FREITAS: OK. Alors, n'oubliez pas que le pour cent est un espace réservé. C'est comme un espace vide. Essayons donc de comprendre tout ce qui se passe ici. Signifie pour cent que c'est un espace réservé. Ensuite, vous avez le f, ce qui signifie que cet espace réservé est un flotteur. La dernière chose que nous avons ici est un 0,2, ce qui signifie que je veux avoir deux décimales pour le flotteur. Si j'ai juste eu% f, ils lui mettront un tas de décimales. Donc, je ne peux mettre 0,2 ou 0,1 ou 0,5, ou que ce soit, et il va mettre que nombre de décimales. La seule chose est que si vous mettez comme .100 Ou .1,000, ce n'est pas vraiment va mettre toutes ces décimales parce qu'il n'a pas assez de mémoire d'avoir cette précision. D'autres questions? Ouais? PUBLIC: Donc flotter permet juste vous allez au-delà des nombres entiers? LUCAS FREITAS: Oui. LAUREN CARVALHO: Eh bien, juste un flotteur vous permet d'avoir décimales. LUCAS FREITAS: Cela signifie simplement que vous maintenant peut avoir des nombres décimaux. PUBLIC: Pourquoi nous jamais utiliser des entiers? LUCAS FREITAS: Pourquoi vous utilisez des nombres entiers? Peut-être que si vous comptez de 0 à 10, vous voulez utiliser effectivement un nombre entier. Vous n'avez pas besoin d'utiliser un flotteur. Dans certaines situations, vous n'avez pas doivent effectivement - LAUREN CARVALHO: Peut-être vous ne veulent pas de décimales. LUCAS FREITAS: Peut-être que vous n'avez pas vouloir utiliser un flotteur. LAUREN CARVALHO: L'autre chose est, rappelez-vous, à la fois mettre un flotteur et un int prendre 32 bits pour les stocker, et peut-être vous ne voulez pas perdre des bits sur le décimales. LUCAS FREITAS: Ouais. Donc, comme, il suffit de penser à ce sujet. Vous avez 32 bits pour les deux un int et un flotteur. Pour un int, tous les 32 bits aller à la partie entière. Si vous utilisez un flotteur avec 32 bits, vous avoir une partie de cette mémoire utilisée pour le nombre, le nombre entier, et l'autre partie étant utilisée pour l' décimales. Donc, cela signifie que vous ne pouvez pas obtenir de un très grand nombre de chars, car le flotteur est déjà en utilisant un lot de mémoire pour les décimales. Ouais? PUBLIC: Cette première réponse, exactement ce que fait-il? Est-il établit la valeur du flottant égal à cet espace réservé à ce que vous pouvez rappeler à la ligne suivante? Il dit flotter réponse. LUCAS FREITAS: Ouais. Donc, flotteur réponse signifie que vous obtenez maintenant un petit seau dans la mémoire titulaire d'un flotteur, et qui va d'être appelé réponse. C'est ce que fait flotteur réponse. Et puis vous dites que l'intérieur de cela, vous allez mettre le résultat de ce produit. Alors vous allez faire 1,0 divisé par 10.0, vous obtenez 0,1, puis vous mettre que à l'intérieur de la réponse. LAUREN CARVALHO: Donc, en une ligne, nous sommes la déclaration et l'initialisation de ce flotteur appelé réponse. LUCAS FREITAS: intéressant, bien que c'est juste une ligne, il est fait de multiples opérations. C'est juste une façon de location C vous utilisez moins de code. C'est la même chose que le ternaire opérateur, comment vous pouvez juste faire une [Inaudible] en une seule ligne. Il est en train de faire la même chose que faire flotter réponse, point-virgule, et alors la réponse est égale, mais à la place de vous faire faire deux lignes pour que, c'est comme un raccourci. Ouais? PUBLIC: Donc, si vous avez exécuté ce, il serait de 0,10? LUCAS FREITAS: Oui. Ouais? PUBLIC: Est répondre effectivement code, ou c'est juste le nom? LAUREN CARVALHO: Cette est en fait le code. C'est ce que nous allons de nommer notre variable. PUBLIC: Donc c'est juste un nom [inaudible]. LAUREN CARVALHO: Ouais. J'aurais pu dire float x est égal à 1,0. LUCAS FREITAS: Le fait est que le nom de la variable est quelque chose que vous utilisez. Il est important pour vous. Pour le programme proprement dit, la seule chose ce qui importe est la valeur que vous disposer à l'intérieur du godet. La raison pour laquelle vous avez des variables et noms de variables est si vous sauriez ce que vous faites affaire avec, comme ce genre de données que vous êtes l'accès à la fois. Mais pour le code lui-même, si vous appelez il répond ou question ou quoi que ce soit, à peu près, ce n'est pas grave. Il n'a pas d'importance. Tant que vous êtes cohérent dans tous les occurrence et si vous l'appelez autre chose. Ouais? PUBLIC: Faites les variables aller au-delà de la fonction? Comme si vous aviez à créer un support [Inaudible], pourriez-vous juste [Inaudible] répondre à nouveau? LAUREN CARVALHO: Non PUBLIC: [inaudible] LAUREN CARVALHO: Non Ce serait en dehors du champ d'application de cette variable particulière. Et en fait, c'est le genre de intéressant, parce que quand nous avons des choses comme les boucles ou les si conditions, si vous déclarez une variable dans une autre série d'accolades, il vraiment n'existe dans ces accolades. PUBLIC: Une dernière note sur les [inaudible] flotteurs. Pourquoi voudriez-vous jamais utiliser ints? Il s'agit plus d'une note de côté que rien, mais votre ordinateur est nettement mieux à la manipulation ints qu'elle ne l'est à flotteurs de manutention. C'est comme un ordre de grandeur plus rapide. Donc, si nous juste manipulé que flotteurs, les choses seraient beaucoup plus lent. LAUREN CARVALHO: En fait, il semble à avoir un problème avec flotteurs. LUCAS FREITAS: Type de la raison pour que, que vous pouvez penser, est de savoir comment en binaire vous pouvez représenter des nombres entiers en mettant de 0 et de 1. LAUREN CARVALHO: C'est la prochaine chose. LUCAS FREITAS: OK. Impressionnant. LAUREN CARVALHO: Just maintenez cette pensée. LUCAS FREITAS: OK, je vais vous le dirai plus tard. LAUREN CARVALHO: Avant de passer à ce Lucas vient de le dire, l'opérateur priorité. C'est le bon sens. Vous avez fait assez. Donc, juste si quelque chose est entre parenthèses, il se produira en premier. C'est la multiplication est prioritaire sur l'addition, soustraction, des choses comme ça. Donc en fait, tout ce que quelqu'un veut dites-moi ce numéro un fait évalue à? PUBLIC: 27. LAUREN CARVALHO: 27? Ouais. LUCAS FREITAS: Permettez-moi de vous donner bonbons aux gens. LAUREN CARVALHO: Très bien. Qu'en est-il numéro deux? Qu'en est-il numéro deux? PUBLIC: 22. LAUREN CARVALHO: 22, ouais. Je ne sais pas qui a obtenu que. Le numéro trois? PUBLIC: 10. LAUREN CARVALHO: 10, oui. Cool. Donc modulo. Lucas, voulez-vous expliquer modulo? LUCAS FREITAS: Modulo est cet opérateur c'est en fait très utile pour un tas de problèmes. Si je fais 55 modulo 10, ce qu'il fait ce disons que je veux diviser 55 par 10. Qu'est-ce que je reçois? Il se sent comme si je suis en fait juste faire la division, ce qui est la première fois que j'ai eu l'entier? PUBLIC: 5. LUCAS FREITAS: 5. Et puis le reste est de 5, non? Donc, c'est comme 5 fois 10 plus 5. Fondamentalement, ce que ne modulo, il essaie de diviser ce nombre par celui-ci, et il voit ce qui est du reste de la division. LAUREN CARVALHO: Donc juste retourne le reste. Donc, le numéro un, c'est quoi? 5. Le numéro deux? PUBLIC: 3. LAUREN CARVALHO: 3. Le numéro trois? 0. Et quatre est 1. Exactement. LUCAS FREITAS: simple, non? LAUREN CARVALHO: Pourquoi avons-nous sautons pas ce simplement parce que nous n'avons pas vraiment temps, et les gens semblent comprendre. Alors, voici ce que Lucas était simplement en parler. LUCAS FREITAS: Une autre raison pour laquelle je utiliserait ints au lieu de flotteurs n'est que les flotteurs sont très imprécises. Et pourquoi sont-ils imprécises? David dit que pour représenter un nombre entier, par exemple, nous utilisons 0 et De 1, non? Et puis vous faites essentiellement la multiplication, faire tous ceux opérations de savoir ce que nombre décimal vous avez la place de la binaire. Ce qui se passe maintenant si j'essaie de mettre décimales? En fait, par exemple, si j'ai comme le nombre 3,33333? Il se sent comme 10 sur 3. Comment vais-je stocker toutes les 3 est que j'ai par la suite? Il est vraiment difficile, non? Vous ne pouvez pas dire à l'ordinateur, hey, j'ai un 3, et alors vous faites cela pour toujours. En fait, l'ordinateur n'est pas assez intelligent pour cela. Donc, fondamentalement, tous les ordinateurs ne fait qu'il tente de mettre autant de chiffres que il peut jusqu'à la mémoire que vous avez. Donc, disons que ça va dire 3.3333, et c'est tout. Ce n'est donc pas en mesure de réellement exprimer précisément ce qui est flottant. LAUREN CARVALHO: Nous avons un nombre fini de bits, ce qui signifie que non chaque nombre décimal va être capable d'être représenté avec précision. Et donc, dans cet exemple, si nous sommes imprimer 0,1, nous sommes maintenant l'impression sur 20 places. LUCAS FREITAS: Tout comme je disais vous les gars, vous pouvez mettre n'importe quel nombre. Mais si vous venez de faire les deux endroits, vous obtiendrez 0,10, mais si vous mettez 20 endroits, il va vous montrer un tas de s 'parce que c'est ce que vous pouvez mettre dans la mémoire, non? Mais ici, à la 0, et est ensuite il suffit de mettre un tas de nombres aléatoires. C'est un peu comme certains - LAUREN CARVALHO: C'est parce que nous sommes pas en mesure de représenter cette décimal précisément le nombre de bits que nous avons. LUCAS FREITAS: Et puis l' l'ordinateur est fondamentalement vous donnant un certain nombre de déchets. Ce n'est pas vraiment le La valeur de ce nombre. PUBLIC: C'est le plus près il peut obtenir [inaudible] utilisant le [inaudible]. LAUREN CARVALHO: Donc, l'implication de ce n'est que disons qu'au lieu de étant 0.100014, soit, si c'était 0,0999 - bien, OK. Admettons que la réponse réelle à cela était 0,9999999. C'est très proche de 1, mais ce n'est pas exactement 1. C'est 0,99999. Cela signifie que si je prends que 0,999, et je jetai à un int, je reçois 0. Je ne comprends pas 1. LUCAS FREITAS: Parce que souvenez-vous, coulée de flotteur int, vous venez ignorer tous les décimales. Vous ignorez les. Il n'y a pas une telle chose comme arrondi ou la course vers le bas lorsque vous catalogué. En fait, il ya cette fonction ne l'arrondissement, qui est très important, mais vous pensez juste que quand vous faites transtypage, c'est juste va supprimer tout. Donc, même si vous avez 0.99999, ça va juste donner 0 si vous typecast [Inaudible] un nombre entier. LAUREN CARVALHO: Il suffit donc être vraiment conscient point de flottant de précision, surtout quand vous commencez d'utiliser des flotteurs en Pset1. Mais la promenade à travers devrait vous avertir de cela aussi. LUCAS FREITAS: Et en fait c'est vraiment dur, par exemple, si je l'ai fait flotteur réponse 1 est égal à 1,0 sur 10, puis flotter réponse 2 est égal à 10,0 sur 100,0. Ils sont le même nombre, non? 0,1, non? 1 sur 10 ou 10 sur 100. Mais maintenant, si j'essaie de voir l'égalité, comme si la réponse 1 est égal à répondre à 2, c'est peut-être pas réellement aller être la même chose. Donc flotteurs sont un peu comme ça. Ils sont comme faire de l'égalité.