>> [LECTURE VIDÉO]
>> -A Triomphe des mathématiques et l'habileté mécanique
est cette grande nouvelle automatique calculatrice à l'Université Harvard.
Problèmes complexes en mathématiques mettre dans la machine sous forme codée
sur bande sont résolus de façon précise dans un fraction de minute du temps nécessaire
pour le calcul humain.
Conçu pour accélérer toutes les formes de la recherche mathématique et scientifique,
le cerveau mécanique géant va travailler pour la Marine des États-Unis jusqu'à la fin de la guerre.
>> [FIN LECTURE]
>> DAVID J. Malan: Ce, est CS50.
Le passé était un lieu magique place, mais si vous avez déjà
se demandait ce que ce dispositif est à Harvard Science Center,
il est en effet partie de la Harvard Mark I, et il est
sur l'écran il y maintenant pour les dernières années de nombreux.
Et ce que vous verrez intégré dans le jeu de problème
l'un est un regard derrière les coulisses à ce que ce dispositif a fait, et fait,
du professeur Harry Lewis, qui est en la science de service informatique ici.
Donc, plus que dans un peu.
>> Mais aujourd'hui, nous commençons à la transition de la semaine dernière à cela,
et nous allons faire mention d'une photographie ici
qui est en fait assez célèbre.
Est-ce que quelqu'un sait ce que cela ici est sur l'écran?
Au moins selon le mythe.
Ouais.
AUDIENCE: Le premier virus.
DAVID J. Malan: il était donc censément le premier bogue dans un ordinateur.
Maintenant, en réalité, le mot bug, pour une erreur dans un programme,
a été avec nous pendant un certain temps dans le monde physique,
et ce fut l'un des premiers documentés fois où quelqu'un fait
cueilli un grand papillon de la marque Ordinateur II, le mettre dans le liant,
puis enregistrées il que le premier bogue connu
avoir été effectivement trouvé physiquement.
Ainsi donc été conclu que dans la tradition d'aujourd'hui.
Tout, depuis la dernière la semaine est disponible en ligne.
En particulier les ressources que vous pourriez pas nécessairement remarquer, en particulier
si venir ici en personne.
Donc, l'un des boursiers de l'enseignement tous les année fait un ensemble canonique de notes,
de sorte que vous ne devez pas garder votre tête vers le bas, en essayant
pour transcrire la plupart rien cela pourrait arriver ici dans la classe.
Donc réaliser que ceux qui soi-disant [? Scribd?] Notes
sont en ligne, certainement les diapositives et code source que nous utilisons en classe.
Nous faisons plein transcriptions textuelles disponible aussi bien.
Donc, si vous vous souvenez vaguement quelque terme, et que vous voulez le chercher un peu
plus facilement, se rendre compte que tous les de qui est consultable en ligne.
Ainsi que soluces ainsi.
En effet, aujourd'hui, nous commençons à regarder un langage de programmation de niveau inférieur,
qui sera bientôt connu de nous comme C, et il est très facile
en quelque sorte de se perdre après quelques moments de temps, puis sorte de merveille
comment nous avons obtenu à un peu plus exemple complexe de la plus simple.
Et donc nous allons réaliser la cerise ramasser pendant la classe certaine
des exemples représentatifs, mais se rendre compte que bien plus est également
disponible en ligne afin que vous puissiez travailler à travers elle, à votre rythme,
Cependant, vous êtes plus à l'aise.
>> Mais nous nous sommes quittés avec programmes qui étaient exactement cela.
Donc, je clique sur le drapeau vert, et qu'est-ce que ce programme fait?
Dit, bonjour, monde.
Il rend le chat dire bonjour dans son petit monde
sur le côté supérieur gauche de l'interface utilisateur de Scratch.
Mais nous avons commencé à introduire des une certaine terminologie de la semaine dernière.
Et donc, ce genre de choses nous avons appelé quoi?
Quel pourrait être le terme générique pour cela?
Ouais.
Une méthode ou une déclaration.
Bien sûr, il est une action.
Pour ce faire.
Et pourtant, il y avait d'autres formes à zéro,
Outre ces soi-disant déclaration, ils étaient aussi
ce genre de choses, que nous avons appelés quoi?
Ouais.
Ainsi, une boucle.
Et dans ce cas, cette chose répétitions, évidemment, 10 fois.
Il ya un bloc toujours.
Il ya quelques autres.
Et aujourd'hui, nous allons voir comment traduire ce à un monde plus moderne,
si vous voulez, même si elle est va apparaître au premier coup d'œil
être beaucoup plus mystérieux.
Mais ceux qui étaient boucles effet.
Et puis, nous avons des choses comme ce qui a eu cette forme,
et essentiellement posées.
Et nous avons parlé ces derniers comme quoi?
>> AUDIENCE: expression booléenne.
>> DAVID J. Malan: Ouais.
Expression booléenne.
Quelque chose qui est vrai ou faux, oui ou non, un ou zéro,
mais vous voulez voir dans le monde.
Mais nous avons appelé ceux booléenne expressions, et nous les brancher
dans des conditions, ou les branches.
Et dans le monde de Scratch, tout bien
verrouillages en termes de sa forme, si elle est logique de le faire,
mais vous ne devez pas arrêter à un faire une chose conditionnellement,
vous pouvez avoir une proverbiale bifurcation de la route
et à faire ceci ou cela si la condition est vraie ou non.
Et puis, comme vous le verrez, si vous avez pas déjà fait,
Vous pouvez même imbriquer ces blocs.
Donc Scratch pousse à remplir les formes que vous pouvez y insérer,
de sorte que vous pouvez réellement exprimer plus toute logique que vous pourriez faire.
>> Maintenant, quelques mots de l'annonce à la fois ici et New Haven.
Donc sectionnement commence aujourd'hui.
L'URL de ce est sur le parcours de site, pour ceux qui ne connaissent.
Les articles seront une occasion de se réunir
dans un environnement beaucoup plus intime de [? Sanders?] Permet,
avec 10 à 20 camarades de classe avec un enseignant chercheur à différentes pistes,
et des rythmes différents, si vous le souhaitez.
En effet, les offres de cours différentes sections
pour ceux qui sont moins à l'aise, plus confortable, et quelque part entre les deux,
et le rôle de base ici, est il n'y a pas de définition officielle,
mais si vous êtes moins à l'aise, vous savez ce genre de.
Vous êtes un peu intrépide sur le idée de mettre le pied, peut-être, de retour
dans la salle de classe, ou montrant jusqu'à une section entre les deux.
Si vous avez été la programmation puisque vous étaient six ans, plus confortable,
peut-être pour vous.
Et si elle est une sorte de pile ou face, qui est exactement ce que l'entre-
est censé être.
>> Maintenant, dans l'intervalle, pour une classe de cette taille,
il nous faut un certain temps à l'article tout le monde, de sorte que nous avons dite,
super-sections, à venir jusqu'à ce week-end et le début de la semaine prochaine,
alors jetez un oeil sur le site de cours pour ceux qui sont bien entendu de largeur,
et aussi filmé pour ceux qui ne peut pas les faire.
Et sections elles-mêmes vont commencer dans la troisième semaine de CS50 index zéro.
Problème réglé 0 est déjà sur le site Web du cours.
Et de réaliser que vous ne possédez neuf jours de retard ce semestre.
Donc, ceci est une mise à niveau de la dernière année, lorsque nous avons eu cinq jours de retard.
>> Donc, si vous vous demandez, nous avons neuf ensembles de problèmes.
Vous avez neuf jours de retard, dont chacun vous ne pouvez passer une semaine sur.
Cela fait efficacement tous le problème définit raison vendredi
mais l'objectif est de mettre un peu peu de pression psychologique
sur vous pour essayer d'obtenir choses jeudi
parce que, comme vous allez bientôt découvrir, pour le meilleur ou pour le pire, la plupart
tout dans le monde du logiciel se termine prendre beaucoup plus de temps que vous prévoyez.
Considérons donc une sorte d'occasion d'aider
vous prendre pour cible jeudi mais prendre le confort en ce que, oui,
tout est dû vendredi.
Et si vous soumettez les sur Jeudi qui est merveilleux.
Il n'y a pas de points bonus ou supplémentaire crédit pour respecter ce délai.
Il est censé être seulement une béquille.
>> Et les heures de bureau, à la fois ici et à New Haven,
en personne, si vous souhaitez rencontrer un de nos cours
enseignement boursiers et les CA d'assistance.
>> Bien.
Alors maintenant, nous allons faire cela plus réel.
Et pour un moment, il va commencer pour obtenir un peu plus obscur, mais très
rapidement vendredi et la semaine prochaine, nous serons
capable de faire beaucoup plus que nous pourrions à ce jour dans Scratch.
Donc, nous avons introduit le dernier code semaine, quoique picturale.
Il était des pièces de puzzle.
Et nous avons formalisé qu'il est ce qu'on appelle le code source,
mais qui ne ressemblerait-il?
Eh bien, il avait l'air un peu quelque chose comme ca.
Et, en fait, juste sorte de taquiner où nous pouvons aller avec cela.
Je vais aller de l'avant et ouvrir une fenêtre ici,
et je vais juste de choisir un nouveau fichier.
Et je vais enregistrer ce fichier comme quelque chose comme bonjour dot c.
Plus de détails sur ce choix de mots dans un instant.
Et voilà comment quelqu'un pourrait aller sur l'écriture d'un programme.
Inclure I / S standard dot h, int main vide, puis ouverte accolade, à proximité
accolade, printf Bonjour tout le monde par des virgules, n barre oblique inverse, point-virgule, Enregistrer, fait.
D'ACCORD.
Je l'ai écrit mon premier programme, mais ça va
être incroyablement underwhelmed parce que quand je fait
exécuter ce programme, bien sûr, en écrivant d'abord faire bonjour,
puis dot slash bonjour, et nous allons passer par cette beaucoup plus en détail
dans un moment, voilà tout ce qu'il fait.
Ne pas ouvrir des pop toutes les fenêtres.
Il ne fait rien particulièrement de fantaisie.
Tout ce qu'il fait est ce que je disais à faisons, mais comment pouvons-nous en arriver là?
Et comment pouvons-nous construire sur cela?
Eh bien, nous allons introduire quelques différents concepts ici.
>> Donc un, nous sommes sur le point de commencer utilisant un programme appelé un compilateur.
Il existe un compilateur pour Mac OS, Windows, Linux, un nombre quelconque de systèmes d'exploitation,
et nous allons bientôt vous présenter le environnement que nous allons utiliser,
mais un compilateur est juste un général terme pour un morceau de logiciel
qui prend le code source et produit code objet de celle-ci.
En d'autres termes, si vous avoir comme entrée source
code, quelque chose comme ce que je viens tapé, il produit finalement code objet.
Et code objet est vraiment juste une façon élégante de dire qu'il émet
de zéro et de un.
En d'autres termes, la source code, même si elle est
aller chercher un peu mystérieux, et un peu moins convivial
que Scratch, à première vue, il est au moins quelque chose
que nous, les humains peuvent comprendre.
Ce genre de ressemble et ressemble Anglais, même si elle est très succinct.
Alors que la programmation en zéros et son, comme nos prédécesseurs avaient à faire,
il ya quelques années, était pas un défi particulièrement amusant.
Et pourtant, voici ce que le ordinateur comprend encore.
Donc compilateur nous reçoit de code source en code objet.
Il est comme l'ouverture d'un fichier avec le compilateur, et lorsque vous l'enregistrez,
vous obtenez ces zéros et de uns.
Donc, nous allons voir comment faire que dans un instant.
>> Mais nous allons maintenant essayer de fournir une pont entre la semaine dernière et ce,
de sorte que même si nous sommes raccrochés sur des choses comme des accolades,
et des points-virgules, et les parenthèses, et tous ces intellectuellement intéressante
aspects de la programmation, que très déclencher naturellement les gens dès le début,
rendre compte que toutes les idées aujourd'hui, sont les mêmes que dernier.
Donc dernière, nous avons vu cet exemple ici, le programme Bonjour tout le monde.
Eh bien, à partir d'aujourd'hui, si nous voulons de mettre en œuvre ce même programme,
il va à regarder un petit quelque chose comme ça.
Et nous allons vous expliquer avant longtemps ce que int, et principale, et non avenu, et tout cela
est, mais au moins je vois ici déjà familier Bonjour tout le monde.
>> Pendant ce temps, des choses comme fonction, dire bonjour,
est très va simplement être un très simple déclaration de ce genre.
Printf Bonjour tout le monde, avec une certaine cite, avec une barre oblique inverse,
avec un point-virgule, mais plus sur celui à venir.
Loops, quant à lui, ceci est une boucle qui, bien sûr, dit bonjour monde pour toujours,
et celui-ci va chercher un peu étrange que dans le dernier,
mais si je dis quelque chose comme, tout en vrai, je
peut ensuite imprimer Bonjour tout le monde encore et encore et encore et encore.
Et puis, comme vous pouvez genre de commencer à déduire ici,
cette convention d'utilisation accolades est une sorte
comme d'embrasser la ligne en retrait du code là.
La ligne de printf du code beaucoup comme la pièce de puzzle jaune au-dessus.
Donc, on ne va pas dire toujours, nous allons dire tout vrai,
mais nous allons voir pourquoi ce qui est dans juste un peu.
>> Pendant ce temps, si nous avons une boucle comme ça, où vous répétez quelque chose d'un fini
nombre de fois, celui-là aussi il est va prendre un peu pour s'y habituer
, mais il va dire pour int i obtient zéro, i moins de 10, i ++,
puis printf nouveau.
Mais il va y avoir des motifs.
Et pour ceux d'entre vous connaissent avec AP Computer Science, ou Java,
ou tout nombre d'autres langues, la quasi-totalité de ces constructions
jusqu'à présent devrait se pencher essentiellement familier.
>> Donc variable.
Alors, voici un extrait de Scratch simple définit une variable appelée compteur à zéro,
puis dit toujours le compteur, et alors il change le compteur d'une unité.
Alors il commence par zéro, et puis un, deux, trois.
Eh bien, comment pourrions-nous présenter que dans ce nouveau langage un peu de la même façon?
Int compteur est égale zéro, tandis que vrai, qui
est que même idée d'avant de faire quelque chose pour toujours,
et je vais juste à printf.
Et maintenant, ça devient un peu étrange, i pour cent, mais plus sur cela à venir,
mais ces idées sont exactement les mêmes.
Nous avons maintenant juste d'adhérer à la syntaxe que l'ordinateur est
va exiger de nous.
>> Expression booléenne, quelque chose comme sx inférieur à y, x ou inférieur à y,
y et z inférieure.
Il va chercher un petit quelque chose comme ça, avec entre parenthèses seulement
comme en mathématiques pour faire bonne mesure juste faire en sorte que l'ordre des opérations
est que nous avons l'intention.
Et maintenant, les conditions.
Donc, si x inférieur à y, disons x est inférieur à y, sinon si x est supérieur à y,
dire x est supérieur à y, sinon logiquement, x doit être égal à y.
Donc, vous pourriez mettre en œuvre quelque chose comme ça dans Scratch,
ou vous pourriez mettre en œuvre dans cette syntaxe.
Et encore, les accolades sont des sortes de nous donnant la même forme que le puzzle
morceaux, mais la syntaxe, maintenant, est peut-être à partir de suivre certaines tendances.
>> Alors, qu'est-ce que cela nous donne ici?
Donc, nous sommes à l'époque de notre programme principal.
Voyons effectivement, maintenant, faire quelque chose avec elle.
Ainsi, dans cette première ligne nous voyons forte comprennent,
E / S standard, point h, et puis un certain angle bizarre
supports en dessous. int main vide, puis printf Bonjour tout le monde.
Il suffit donc de faire un pas.
Quelqu'un qui n'a jamais programmé avant, expliquer au moins une de ces lignes.
En utilisant peut-être quelques-uns des le jargon de la semaine dernière.
Quel est printf, par exemple?
Ouais.
>> AUDIENCE: [inaudible]
>> DAVID J. Malan: Ouais.
Il est une fonction, ou une déclaration, de la terminologie de la semaine dernière.
Et il est une action qui fait quelque chose.
Maintenant cette fonction, ou cette déclaration, le fait
il semble prendre un certain type d'entrée?
Et dans quel sens le fait semblent prendre d'entrée, le cas échéant?
Entrée, ce que je veux dire par là?
Ouais.
>> AUDIENCE: [inaudible]
DAVID J. Malan: Ouais.
Donc gratter quelques pièces du puzzle où vous pouvez paramétrer cela.
Vous pourriez dire la répétition bloquer combien de fois pour répéter,
donc ça a été une entrée sortes, et tout comme Scratch
avait un petit espace réservé blanc pour le numéro que vous voulez taper,
Donc, ne nous utilisons dans ce texte entre parenthèses du monde
pour nous donner cette forme circulaire dans lequel nous pouvons brancher notre entrée.
Après tout, il ya des dizaines d'années lorsque cette langue, appelé C,
a été inventé nul il est prévu de nous,
ces quelques années plus tard, nous avions veulent une fonction qui dit bonjour.
Droit?
Ce serait bien si il y avait un pièce du puzzle, ou quelques mots clés,
on appelle ça bonjour, que littéralement juste dit bonjour.
Mais nous ne devons pas cela.
Nous pouvons avoir quelque chose de beaucoup plus faible niveau, comme une impression générique
commande, qui accepte une entrée, et gravures que nous voulons.
Donc remarquerez maintenant le motif qui va commencer à émerger.
Paren ouvrir, fermer la parenthèse est apparemment embrassant l'entrée,
et puis je vois double- citations sur les deux extrémités.
Il est toujours bizarre barre oblique inverse n, mais nous espérons que maintenant vous
peuvent commencer à visualiser au moins que printf prend dans une certaine forme d'entrée.
Pas aussi convivial que Scratch, mais il est juste
comme avoir branché une certaine valeur il.
>> Bon, maintenant de laisser effectivement faire quelque chose avec cela.
Donc, certains d'entre vous savent peut-être à partir de ayant magasiné la classe avant,
bavardé avec des amis, que pendant de nombreuses années
nous avons utilisé ce qu'on appelle l'appareil de CS50.
Ce fut un terme décrivant une technologie appelée la machine virtuelle, qui
est un morceau de logiciel que votre prédécesseurs seraient télécharger off
le site Web de cours gratuitement.
Ils seraient également télécharger un morceau gratuitement logiciel appelé un hyperviseur,
quelque chose appelé comme VMware, ou VirtualBox, ou un nombre quelconque
d'autres outils, et sur leur Mac ou PC ou quel que soit l'ordinateur qu'ils avaient l'année dernière
et dans les années passées, ils doublerait cliquez sur une icône
pour exécuter ce logiciel appelé l'hyperviseur.
Et puis à l'intérieur de ce programme ils ouvrir l'appareil de CS50.
Et l'effet est que si un prédécesseur de la vôtre
a été fonctionnant sous Mac OS ou Windows, il ou elle a ensuite
ensuite eu une nouvelle fenêtre sur leur écran exécutant l'environnement de CS50.
Donc, une machine virtuelle vous permet d'exécuter un système d'exploitation à l'intérieur d'un autre,
et que est exactement ce que nous avons fait.
Tout au long de la plupart des cours nous utiliser un système d'exploitation appelé
Linux, en particulier Ubuntu Linux, et ce
est une très belle façon dans les années passées de faire en sorte que tout le monde dans le cadre
juste eu le même environnement.
Et vous pouvez utiliser tout type de ordinateur que vous voulez vraiment.
Parmi les inconvénients, cependant, étaient il était comme deux gigaoctets
pour télécharger cette chose.
Il ne fonctionne pas nécessairement hyper bien sur les personnes dont les ordinateurs que peut-être seulement
eu un concert ou plus de RAM, ou non trop de gigahertz de vitesse du CPU,
et ainsi de cette année, pour cela et d'autres raisons,
Avons-nous été transition à cet environnement.
Le soi-disant CS50 IDE, qui est basés sur des logiciels open source,
et une plate-forme supportée qu'une société appelée Cloud9
supports en Europe, que nous permet d'avoir l'essentiel
ce même milieu que dans l'exacte les années passées, mais dans le nuage dite.
>> Alors, quel est le nuage?
Vous avez probablement cliqué son icône sur votre Mac ou PC.
Quel est le nuage?
Ouais?
Un peu plus fort.
Ouais.
Il est juste un tas d'ordinateurs ailleurs que les données de stocker et exécuter,
logiciels et autres.
Donc, il est vraiment juste pour le mot de jure de décrire [? être louées?]
ordinateurs qui vivent ailleurs.
Que vous, vous-même, ne possèdent pas nécessairement.
Ainsi, lorsque vos données ou votre programmes, sont dans le nuage,
cela signifie simplement qu'il est sur quelqu'un Else les ordinateurs ailleurs,
et non, le plus probable, sur votre ordinateur portable ou de bureau physique.
Et est donc ce que CS50 IDE est maintenant.
>> Désormais, vous allez à un certain URL qui vous fera découvrir
pour, en problème posé 1, plus tard cette semaine, ce sera ensuite, lors de la connexion,
vous donner cet environnement.
Et bien comme Scratch avait un quelques différents panneaux concernés,
il en va de l'IDE de CS50 ont exactement cela.
Sur le côté supérieur gauche ici, vous êtes aller voir un navigateur de fichiers familier.
Donc, l'un des fichiers que vous mettre dans cet environnement
allez juste pour y être inscrites.
Les fichiers et dossiers.
En haut à droite ici, vous allez voir un lieu
où vous pouvez réellement écrire votre code.
Dans un premier temps en C, plus tard dans la terme en PHP et JavaScript,
et, peut-être pour la finale de projets, Ruby ou Java ou Python
ou un certain nombre de langues sont soutenu dans cet environnement.
Il est pas du tout attaché à CS50 spécifiquement.
>> Et puis, dans le coin en bas à ici, surtout pour ceux plus à l'aise,
vous avez quelque chose appelé une fenêtre de terminal.
Et cette fenêtre de terminal permet d'exécuter toute commande que vous
veulent dans cet environnement de cloud.
Il vous permet d'installer aucun logiciel supplémentaire
que vous voulez parce que vous avez dite racines, ou des privilèges d'administrateur.
Donc, en d'autres termes, même si cette est finalement hébergé dans le nuage,
et même si nous avons simplifié dans une certaine mesure
Par défaut, l'introduction de la lettre, grâce à Dan Armendariz, et Dino,
et Dan Bradley de l'équipe de CS50 sur passé de nombreux mois, un moins à l'aise
mode qui cache beaucoup de la distractions abord déroutant.
Tout existe à représentent un système informatique typique
que vous pouvez utiliser dans le monde réel.
>> Alors, que signifie tout cela, et que pouvons-nous réellement faire avec elle?
Disons effectivement jeter un coup d'oeil à un programme.
Donc, je vais ouvrir le environnement réel ici,
qui est juste notre Chrome navigateur, qui pourrait être Firefox,
pourrait être Internet Explorer, ou un autre navigateur ainsi.
Il est plein projeté ici pour le moment.
Et je veux vraiment taquiner Outre ce que ce programme était.
Donc, nous allons jeter un coup d'oeil, en zoomant jusqu'à haut, à ce que je faisais, et comment je suis arrivé ici.
Alors, voici ceux exacte mêmes lignes de code.
Donc ceci est la déclaration, comme vous l'avez mentionné plus tôt.
La fonction qui vous dit bonjour.
Les accolades, sur quatre lignes et la ligne de six,
vraisemblablement genre d'enveloppe cette ligne de l'associer
avec l'essence de mon programme.
Donc, en effet, ce mot-clé, qui est là-haut sur la ligne trois,
vous pouvez penser que l'équivalent des que lorsque le drapeau vert a cliqué,
bloquer dans Scratch.
Voilà donc tout ce que nous avons ici, est quand drapeau vert cliqué, l'impression, ou dire,
Bonjour le monde.
>> Mais prenons une supposition, maintenant, à ce cette première ligne, plus obscur, est.
Forte comprennent, angle ouvert support, E / S standard dot h,
fermer équerre.
Qu'est-ce que peut-être le faire, surtout si vous avez programmé
avant dans une autre langue.
Ouais?
>> AUDIENCE: [inaudible]
DAVID J. Malan: Ouais.
Exactement.
Donc, cela est en vous donnant accès à un bibliothèque, pour ainsi dire, de fonctions.
Et une bibliothèque de fonctions est fonctions que quelqu'un d'autre
écrit, soit récemment ou il ya longtemps, de sorte que vous
ne pas avoir à réinventer la roue.
Par exemple, nous ne faisons pas avoir à connaître, en 2015,
comment écrire du code qui met un personnage sur mon écran.
Quelqu'un d'autre a pensé que avec la fonction printf
de sorte que je peux trier du abstraite que l'écart de, ou couche
sur le dessus de son code, et maintenant il suffit de prendre
pour acquis que tout programme que je écrire peut imprimer quelque chose à l'écran.
Donc, cette première ligne il dans la première étape inclut le fichier soi-disant tête
pour la bibliothèque standard.
Alors le voir, la langue dans que nous sommes en train de travailler
eu une bibliothèque standard avec beaucoup de fonctions.
Printf est l'un d'eux, et que la première ligne de code
des moyens de me donner accès à ces fonctions, de façon que je
ne pas avoir à réinventer cette roue.
>> Passons maintenant à la fenêtre du bas et fais exactement ce que je faisais avant.
Il ya un moment, quand je étais sifflant à travers le code,
tapant pour la première fois, Très vite, je tapé, fais bonjour.
Ce qui était tout au sujet aurait-vous deviner?
Que faisais-je?
Ouais?
Ça ne fait rien.
C'est bon.
Ouais.
AUDIENCE: le compiler.
DAVID J. Malan: Ouais.
Il a été tout simplement compiler.
Droit?
Même si cela est totalement inconnu pour vous, il est assez l'anglais comme.
Il est certainement pas zéros et ceux, donc je encore
besoin de courir à travers cette soi-disant programme, un compilateur, qui va
de le prendre comme entrée et produire une sortie.
Et au moins, pour l'instant, dans cet environnement Linux,
mais ce ne sont pas une condition préalable, ceci est juste où nous allons commencer,
vous interagissez généralement avec systèmes informatiques de ce genre
par une ligne dite de commande.
Donc, avec un clignotement prompte et votre clavier,
et pas tellement votre souris, et non tellement les fenêtres et les icônes et les menus,
plutôt tout est textuelle.
Et même si cela se sent, au premier coup d'oeil, peut-être, comme un pas en arrière,
il est en fait beaucoup plus moyen puissant et expressif
de commande d'un ordinateur d'autant plus que vous,
vous-même, deviennent plus confortable de moins.
Il va vous permettre de faire un grand nombre plus de choses que ce que Microsoft
ou Apple vous permet de faire avec leur système d'exploitation graphique.
>> Donc, quand je frappe Entrez, maintenant, rien ne se passe cette fois-
car apparemment le bonjour programme est à jour.
Et ce qui était la commande Je courais après cela?
Dot slash bonjour, et bonjour monde.
Prenons maintenant une étape sauvegarder pour un instant.
Il se trouve que faire bonjour est juste un de façon simplifiée de compiler un programme.
Présentons tout un morceau de jargon,
mais alors éloigner de lui, car il est pas
tout ce qui intéressant pour les besoins d'aujourd'hui.
Le compilateur nous allons commencer à utiliser Clang est appelé, pour le langage C.
Et cela est un programme qui est lancé juste comme nous l'avons fait à la ligne de commande il.
Et si je veux compiler un programme que je
ont écrit dans un fichier appelé bonjour dot c, je viens de taper littéralement clang bonjour c
entrer.
>> La chose drôle est, pour des raisons historiques,
si je ne précise pas les nom du programme
que je veux à la sortie, si je ne fais pas spécifier un nom de fichier pour ces zéros
et ceux, très bizarre il ya des années Convention a été adoptée
où il sentait une sorte de bonne réponse à l'époque,
bien disons juste arbitrairement appellent la premier programme nous compiler un point sur.
A vient en premier dans l'alphabet.
Out, il est la sortie.
Donc, nous allons appeler le programme Par défaut, un point sur.
Et cela est très bien, parce que si je veux exécuter le programme dans ce texte sur la base
environnement, je tape juste dot slash un point sur entrer.
Et il irait exactement comme avant.
Voyons donc ce que très vite.
>> Donc, si je reviens à ma code source dans CS50 IDE,
et je le fais à la place, clang bonjour bébé c entrer, avis rien ne semble se passer,
mais presque toujours dans cet environnement Linux,
quand rien de mauvais ne semble se produire, que signifie quelque chose de bien réellement passé.
Si vous ne voyez pas une erreur message, tout est probablement bien.
Et en effet, si je fais maintenant dot slash un point à entrer, je lance mon ai même programme.
Je dois toujours le programme bonjour à partir plus tôt car en effet, il est
va être tellement plus agréable tout taper make lieu de se souvenir
ces incantations de commandes, mais nous allons voir comment nous
pourrait améliorer cela, néanmoins.
>> Donc, ceci est la commande pour compiler le code.
Ceci est la commande à exécuter le code compilé par la suite.
Comment puis-je spécifier un nom de fichier?
Eh bien nous allons introduire simplement une pièce de plus de jargon.
Lorsque vous êtes dans cette environnement basé sur le texte,
vous allez vouloir spécifier choses appelées arguments de ligne de commande.
Qui est juste une façon élégante de dire, d'autres termes à l'invite qui
modifier le comportement de tout programme que vous utilisez.
Donc spécifiquement le programme que je suis course, en tapant le nom clang,
est le programme appelé Clang.
Donc, cela est ou la vieille école équivalent d'un double-clic
sur Microsoft Word ou l'icône de certains programmes.
Je place juste en tapant son nom, mais dans cette version de la commande,
Je dois ensuite tableau de bord o espace bonjour bonjour espace dot c.
Donc même si vous avez jamais joué dans ce monde avant,
il suffit de prendre une conjecture ce ne dash o bonjour faire?
Ou qu'est-ce que dire clang faire?
Ouais.
>> AUDIENCE: [inaudible]
DAVID J. Malan: Ouais.
Il établit simplement la sortie du fichier à bonjour au lieu de la plus bête sur un point.
Et, en effet, nous allons essayer.
Donc, si je fais maintenant, première nous allons le faire, r m bonjour.
Voilà supprimer.
Et il va dire supprimer bonjour fichier régulier, qui
est inutilement obscur, mais il vient des moyens voulez-vous supprimer le fichier,
et je type Y pour oui.
Et remarquez, si vous étiez en regardant en haut à gauche, il ne disparaît de là-haut.
Permettez-moi maintenant fais clang tableau de bord o, et Je vais aller de l'avant et faire bonjour,
dans toutes les casquettes, bonjour dot c.
Maintenant, si je fais slash dot bonjour, ce que vous attendez-vous?
>> Peut-être qu'il est sensible à la casse.
Peut-être pas.
Voyons.
Aucun fichier ou répertoire de ce nom.
Et nous pouvons sorte de tricher en simplement en regardant en haut à gauche.
Qu'ai-je de toute évidence enregistrer le programme?
Tous les bouchons bonjour.
Donc, en effet, que se passe- pour faire la difference.
Alors maintenant Bonjour tout le monde est de retour.
Maintenant, tout cela est bel et bon, et tout abrutissante très,
en quelque sorte de nous enliser dans ces les détails, mais les comprendre
est bon.
>> Taper sur ceux-ci de plus en plus longues incantations
ne va pas être particulièrement amusant, alors les gens dans le monde
inventé un autre programme, il ya quelques années, appelé
faire, que tout simplement vous permet de taper make,
le nom du programme vous voulez faire, et de faire
est intelligent en ce qu'il va chercher dans le dossier en cours, alias répertoire,
et si vous avez un fichier appelé bonjour point c,
qui est le fichier, il compilera pour vous dans un programme appelé bonjour.
Donc, il est un moyen beaucoup plus simple de faire les commandes les plus cryptiques
que nous avons fait plus tôt.
Et nous avons pré-configuré CS50 IDE de savoir
qu'il devrait faire dash o et un certain nombre de d'autres drapeaux, ou des arguments de ligne de commande,
que nous verrons avant longtemps.
>> Mais nous allons maintenant faire effectivement quelque chose de plus intéressant.
Juste en tapant sur Bonjour tout le monde tout le temps est pas tout à fait convaincante.
Alors laissez-moi aller de l'avant et le changement ce programme et de dire bonjour David.
Maintenant, je vais descendre ici.
Je vais aller de l'avant et de faire faire bonjour.
Et encore maintenant vous voir faire est de vous montrer le plus
séquence de commandes qu'il est faire parce que nous avons pré-configuré
de cette façon, mais nous devez vous inquiétez pas pour l'instant
ce qu'il fait autre que ce qu'il est dot compilation slash bonjour, bonjour monde.
Qu'est-ce qui ne va pas?
Ouais.
>> AUDIENCE: [inaudible]
>> DAVID J. Malan: Oui.
Donc, erreur noobie.
Je remarque ce est super subtil, mais l'astérisque ici, dans l'onglet,
signifie simplement que vous ne l'avez pas sauvé, et les navigateurs et d'autres programmes
le faire parfois.
Donc, le contrôle ou la commande s s devraient enregistrer.
Maintenant, laissez-moi aller de l'avant et re-exécuter le programme.
Recompilé.
Droit, il est donc un processus en plusieurs étapes.
Aucune de ce qui est particulièrement complexe, mais chaque fois que nous changeons le fichier,
nous avons besoin de changer la résultante zéros et de uns, et slash dot bonjour.
Ouah.
Donc, ce qui est très décevant que nous simplement affichées cela.
Faisons les choses un peu plus dynamique, maintenant.
>> Eh bien il se trouve, qui aiment Scratch, C prend en charge les variables.
Et il se trouve si vous voulez d'avoir une variable qui stocke,
pas un nombre, comme nous généralement fait avec Scratch,
mais comme un mot ou un une phrase, ou un nom, vous
peut spécifier une variable être de type chaîne.
Donc, nous allons voir plus de ceux-ci dans un instant,
mais il se trouve que C, et beaucoup de langues comme elle,
avoir des types très spécifiques de variables.
Il ne suffit pas comme l'algèbre, où vous obtenez un x, a y et z
et ceux qui sont juste toujours chiffres, dans un langage de programmation
vous pouvez stocker des numéros, vous pouvez stocker les caractères individuels,
vous pouvez stocker des mots entiers, vous pourriez stocker des images, des fichiers entiers saines entières,
et analogues.
Nous avons donc besoin de préciser ce le type de notre variable est.
Et, par convention, je vais appeler mon s variables juste parce qu'il est succincte,
et s signifie chaîne.
>> Et puis je vais stocker à l'intérieur de cette variable,
Tout comme avec Scratch quand je utiliser le bloc de jeu,
Je vais utiliser la opérateur d'affectation en C,
qui bien assez est l'égal signe, mais le signe égal fait cela.
Il se déplace quelque chose de la droite dans le côté gauche de l'expression.
Donc ce que je l'ai fait, pour être clair dans ligne de cinq, est je l'ai déclaré une variable.
Je l'ai dit l'ordinateur, donnez-moi mémoire pour une variable, il s appelle,
et je sais d'avance que je vais être de mettre une chaîne en elle.
Et une chaîne est juste un séquence de caractères.
Il est un mot, ou une phrase ou un paragraphe, mais il est une séquence de caractères.
Il est pas des numéros.
Qu'est-ce que la chaîne que je vais être que la mise en variable?
Eh bien, apparemment citer Ils ont dit, "Hannah".
Maintenant, remarquez le modèle qui est en émergence.
Il ya une expression de la main gauche.
Il ya une expression de la main droite, séparés par le signe égal.
Et il suffit de prendre une supposition, si néanmoins familier,
avec ce que le point-virgule est fait.
Que fait-il sans doute pour nous?
Ouais?
>> AUDIENCE: [inaudible]
>> DAVID J. Malan: Ouais.
Il est juste fermeture de la ligne.
Droit?
Les ordinateurs veulent être crûment dit, littéralement, ce qu'il faut faire.
Comme le beurre d'arachide et gelée exemple sandwich,
si vous ne spécifiez pas exactement ce que vous avez l'intention,
il pourrait être laissé au jugement ou d'erreurs.
Le point-virgule signifie, Voilà pour cette commande.
Il est d'être super précis, et il est une chose très facile de laisser éteint.
Alors maintenant, ce programme ne semble pas se comporter différemment jusqu'à ce que je
le rendre plus dynamique.
Ainsi, plutôt que dur pourrait mon propre nommer, permettez-moi de mettre une valeur d'espace réservé.
Et il se trouve que, et je sais ce d'avoir lire la documentation,
et utilisé la fonction pendant des années, que printf a été conçu pour être dynamique.
Vous ne devez pas savoir à l'avance ce que les mots que vous voulez mettre dedans.
Vous pouvez avoir une place espace réservé, comme pour cent s, qui
va dire la ordinateur, mettre une chaîne ici.
>> Quelle chaîne voulons-nous mettre là?
Will se trouve que entre ces parenthèses, qui se souviennent, délimitent
l'entrée à une fonction, si vous avez virgule liste de choses séparé ici,
nous passons en fait dans plusieurs entrées à une fonction.
Donc, tout comme certains Scratch blocs, vous ne pourriez pas
ont joué avec eux pendant vos projets ou encore à tous,
certains blocs Scratch disposent de deux entrées.
Deux cases blanches que vous pouvez taper des chiffres ou des mots dans.
Donc, pour ne C ont des fonctions comme printf qui peut prendre deux entrées.
Et encore, cette virgule on les sépare.
Donc, en anglais, à nouveau, même si vous avez jamais programmé auparavant,
en ce que la logique est une fonction printf, prend deux entrées, dont l'une
est un espace réservé, que feriez-vous espérer printf va faire avec cette entrée?
Il va dire bonjour Hannah, je l'espère.
Donc, pour ce faire, nous devons sauver.
Je vais effectuer un zoom arrière.
Je vais revenir ici et dire bonjour faire entrer.
Oh.
Quelque chose ne va pas, et effectivement cela est assez impressionnant.
Je dois six lignes de code et comme 12 lignes d'erreurs.
Donc, nous nous réjouissons de cette.
Alors qu'est-ce qui se passe ici?
Donc, la meilleure règle d'or ici, surtout quand vous êtes débutant,
ne vous laissez pas distraire par le truc au fond.
En fait, je délibérément simplement défiler jusqu'à
parce que très souvent, un ordinateur est pas tout à fait lumineuse d'un dispositif.
Il va devenir confus.
Si elle voit une chose que il ne comprend pas,
il pourrait confondre autre lignes de code comme incorrectes,
même si elles sont parfaitement bien.
Donc, vous voulez toujours de travailler de haut en bas à travers les erreurs.
Et cela est vrai, super-obscur pour le moment.
>> Erreur, l'utilisation de noir chaîne d'identifiant.
Ai-je veux dire dans la norme?
Non, je voulais dire chaîne.
Et il est en montrant, il est peut être une faute de frappe.
Un peu comme, la vérification orthographique dans un manière très geek, mais la raison ici,
et vous saurez ce simplement par la pratique, est
qu'il se révèle cette chaîne ne pas exister dans C. En fait, C
est une langue particulièrement vieux, et il est très faible niveau,
Et il n'a pas beaucoup de fonctionnalités que vous pourriez avoir grandi
avec si vous avez, en effet, programmé en Java, comme certains d'entre vous ont,
mais vous pouvez lui apprendre de nouvelles choses.
Et en effet, nous avons fait ce CS50, même si à la fin du semestre,
l'ensemble de ces roues de formation aura été enlevé,
ce que nous faisons dans ces premier couple de semaines
est d'abord nous avons aussi vous incluez CS50 dot h.
Qui est un fichier d'en-tête.
Plus sur cela dans l'avenir.
>> Il est un fichier qui contient des fonctions que nous avons écrit pour vous.
Et parmi ces fonctions est fonctions pour obtenir entrée
de l'utilisateur, comme des cordes, et des chiffres et des nombres réels, et plus encore.
Mais il a aussi quelques raccourcis.
Il définit une valeur booléenne comme un type de données.
C n'a pas vraie ou fausse.
Mais nous pouvons lui donner la notion de vrai ou faux par voie de cette bibliothèque.
Et il n'a pas aussi une chaîne construite en jusqu'à ce que nous incluons cette ligne.
Donc, cette ligne de code dit le compilateur, hey, Clang, regardez
dans ce dossier pour l'ensemble tas de code qui CS50
a écrit de telle sorte que toute personne utilisant ce fichier
peut prendre pour acquis le ils ont ajouté des fonctionnalités.
>> Alors maintenant, laissez-moi aller de l'avant et effacer l'écran,
et si curieux Je dis juste que le contrôle L chaque fois pour effacer l'écran,
ou vous pouvez taper clair.
Je vais juste aller de l'avant et maintenant Type faire bonjour, et tout va bien.
Encore une sortie des arcanes, mais il est pas un message erroné.
Maintenant, si je fais point slash bonjour, et comme un côté, slash dot est pas familier à la plupart.
Cela signifie simplement, des moyens de dot le répertoire courant.
Donc, si vous avez déjà utilisé DOS ou Linux, ou Unix
vous pourriez avoir fait quelque chose comme cd dot, où
dot signifie revenir en arrière dans temps, ou revenir en arrière, ou plus haut
dans votre répertoire.
Dot signifie simplement regarder dans le répertoire courant.
Je veux bonjour, qui est ici.
Et en effet, maintenant, il dit bonjour Hannah.
Et si je change à nouveau Maria, recompiler
il serait bonjour, slash dot bonjour, le programme ne cesse de changer.
>> Mais cela est encore un programme assez stupide.
Si je veux expédier ce programme, ou le donner à un ami,
ou le donner à Maria ou Hannah d'ailleurs, ça va.
Je peux le personnaliser pour deux d'entre eux, mais il ne va jamais être dynamique.
Ils ne peuvent pas changer une fois qu'il est compilé vers le bas dans ces zéros et de uns.
Donc, ce que nous avons fait quelque chose de plus intelligent?
Que faire si, au lieu de coder en dur dans le programme de la nom de cette personne,
ce que si nous obtenons juste la chaîne à la demande?
>> Donc, en d'autres termes, permettez-moi de le faire.
Je vais recompiler ce programme.
Et permettez-moi de zoom en bas maintenant.
Assurez bonjour bonjour point barre.
Maintenant, rien ne se passe.
Pouvons-nous obtenir un bénévole rapide de faire quelque chose?
Allez vers le haut.
Comment t'appelles tu?
>> PANCHO: Pancho.
>> DAVID J. Malan: Pacho?
Allez vers le haut.
Une fois que vous obtenez ici, cela est va être très décevante,
mais il est plus intéressant que moi tapant.
Si vous voulez aller de l'avant et tapez votre nom, je fait ce programme pour vous.
Il suffit de taper votre nom.
Entrez.
Formidable.
Très bien, merci beaucoup.
>> PANCHO: Merci beaucoup.
>> DAVID J. Malan: OK.
>> [Applaudissements]
>> Cela a été très gentil.
Et voilà.
Qu'avons-nous fait?
Donc, nous avons enfin, au moins, fait de ce programme dynamique.
Maintenant, il est certainement encore par la conception décevante,
mais nous avons finalement la capacité maintenant d'écrire du code à l'avance, bien
comme les auteurs de printf, puis dynamiquement
adapter en fonction de l'entrée nous sommes remis, soit par le programmeur,
ou par l'humain qui est en fait l'interaction avec le programme.
Donc, nous allons effectivement essayer maintenant de faire quelques autres constructions
et voir si nous ne pouvons pas faire les programmes eux-mêmes plus sophistiqué.
Donc, nous allons aller de l'avant et au lieu de écrit celui-ci à partir de zéro,
Je vais aller dans d'aujourd'hui code source, et tout cela
est disponible sur le cours de site, et vous pouvez faire glisser et déposez-
dans votre propre environnement venir vendredi une fois problème
1 jeu vous donne la instructions, ou vous pourriez
faire à la ligne de commande bien, mais plus à venir dans set 1 p.
>> Voyons voir ce qu'il ya dans ce programme appelé ici, additionneur dot c.
Maintenant, je l'ai déjà fait remarquer , mais ce qui est nouveau?
À première vue, ce que la ligne de code est absolument nouveau?
Probablement pas fondamentalement maintenant familier.
>> AUDIENCE: [inaudible]
DAVID J. Malan: Ouais, si x est égal à obtenir int n.
On n'a jamais vu de tout cela avant, mais int est probablement
le symbole de ce type de variable [? à partir?] un entier.
Donc, pour int entier.
Il est juste d'être plus succinct. x est simplement arbitraire.
x et y et z sont toujours assez raisonnable pour les nombres,
mais généralement nous utilisons des mots une fois nos programmes deviennent plus complexes.
Obtenez int, bien sûr, un peu comme chaîne de get,
va probablement obtenir un int de l'utilisateur,
puis nous allons faire la même chose avec y.
Et apparemment, même si cette dernière ligne, 24, semble plus complexe,
il va dire la somme de ce et qui est cette autre chose.
>> Et préavis pour cent i désigne probablement ce?
Quel rôle pour cent i apparemment sers?
Il est juste d'espaces réservés.
Droit?
Pour cent s était à la corde, pour cent i est entier pour.
Il va y avoir pour cent f pour valeur en virgule flottante, qui
est juste un nombre avec un point décimal.
En d'autres termes, un nombre réel.
Donc, nous allons effectivement compiler ce programmer très vite et ne font sommateur.
Oups.
Bonne occasion.
Donc noter ici, tout ce temps, mon utilisateur nom pour ce compte est jharvard.
Je suis en CS50 IDE, alias IDE50.
Et maintenant en bleu ici, est une mention, mais de l'environnement, de l'endroit où je suis.
Et en fait, si je zoome vers le sommet ici, vous remarquerez que je dois une IDE50
et je vois ce mot, si vous sorte de tourner la tête sur le côté, l'espace de travail.
En un mot, le fait que Je vois tilde barre espace de travail
signifie que dans ce texte, environnement de commande sur la base,
Je suis dans l'équivalent de texte de ce graphique dossier ici.
Donc, quand je fais slash dot sommateur, il a dit pas de règle
de faire cible arrêt d'addition.
Je ne sais pas ce que cela signifie, mais il est mauvais pour une raison quelconque.
Aucun fichier ou répertoire de ce nom est encore plus clair.
Où est-il alors?
Selon l'endroit où je clique pour ouvrir le fichier plus tôt.
Où pourrait-il être?
>> Il est probablement dans la source un w, mercredi,
et je peux le voir, en effet, si je ouvre cela.
Il est sommateur point c, mais dans cet environnement basé sur le texte,
encore une fois, je dois être super explicite.
Si je veux changer de répertoire dans la source, un mercredi, je dois taper,
source de l'espace de l'un cd Mercredi entrer et maintenant
mes changements rapides à me donner un repère visuel que
Je suis, en effet, ailleurs dans mon environnement,
mais maintenant je peux ne faire sommateur, il semble fonctionner,
dot slash additionneur, me donner un nombre entier.
One.
Deux.
La somme de un et de deux est de trois.
Mais si je ne coopèrent pas, Voyons ce que se fait int.
Donnez-moi un entier.
Non.
Réessayez.
D'ACCORD.
Beaux.
50.
Bien.
Donc, il coopère enfin.
Et cela est une partie de la fonctionnalité qui ces fonctions
peut avoir construit pour vous.
>> Donc, à l'intérieur de la mise en œuvre d'obtenir int, ce que la programmation
construire à partir de la semaine dernière est probablement dans là pour contraindre ce comportement de relance,
réessayer, réessayez?
Ouais, il ya probablement une sorte de boucle.
Il va chercher syntaxiquement différent des blocs de zéro,
mais cela est en effet ce qui est à l'intérieur du fichier.
Et dans un délai de quelques semaines, nous effectivement regarder à la bibliothèque CS50
à ce qui est à l'intérieur, mais il est une boucle imposer exactement cela.
>> Jouons un peu idiot jeu ici avec ce fichier.
Condition Zero point c.
Nous allons juste généralement commencer à compter à zéro.
Et je continue à faire défiler passé certaines des choses en haut.
En bleu ici, délimitée avec tout de ces étoiles et les barres obliques,
ceux d'entre vous qui programment avant, ce qui est qui?
Pourquoi continuons-nous sauter dessus?
Quoi?
>> PUBLIC: Il est un commentaire.
>> DAVID J. Malan: Ouais.
Il est juste un commentaire.
Ceci est un commentaire pour l'homme à lire, que dans notre cas,
nous dit ce que le nom du fichier est, qui l'a écrit, et ce qu'il fait,
de sorte que vous ne devez pas de lire le code
de savoir ce que ce fichier est tout au sujet.
Il est juste une description, mais fonctionnellement il est hors de propos.
Et je peux même le supprimer de mon dossier et il n'a pas d'impact.
Les lignes juteuses sont ces deux premiers ici, maintenant.
void main int est l'équivalent de notre drapeau vert lorsque cliqué,
de sorte que nous allons laisser ce soit pour aujourd'hui, et nous y reviendrons,
par la suite, sur ce int et non avenues sont, mais maintenant,
Remarquez ce que je l'ai fait ici aussi, vous pouvez aussi,
si vous avez un dans la ligne commenter, si vous avez
Une pensée que vous souhaitez partager sur une ligne de code,
convention en C est de faire slash slash, et puis quelques mots succincts,
pas une phrase complète, généralement pas un paragraphe,
ce qui explique juste pour vous, ou votre TF, ou d'autres lecteurs ou des collègues,
ce qui fait votre code.
Donc, plutôt que d'avoir à regarder et à ce déduire de lignes
neuf et 10, ce qui est ce faisant, en ligne de huit
Je viens de faire un commentaire à demander à l'utilisateur un nombre entier,
alors je ne dois pas penser trop dur sur ce que les lignes neuf et 10 sont.
Je sais juste que ce que est ce que collectivement qu'ils font.
>> Comment?
Eh bien, voici l'invite.
Voici l'obtention du int.
Et sur la base de la précédente comportement, il semble que get int
est assez intelligent pour faire en sorte que l'être humain et il donne coopère
un nombre entier.
Mais maintenant, nous voyons cela.
Et cela rappelle de Scratch.
Je affirmant que je suis l'analyse de l'entrée de l'utilisateur,
mais quelque peu imprécise.
Et ce apparemment en C est de savoir comment nous exprimons une si d'autre, une branche,
une fourchette dans la route, mais je dire peu inexacte.
Quel est le bug dans ce programme?
A propos de remonter plus loin?
Ouais.
>> AUDIENCE: [inaudible] zéro.
>> DAVID J. Malan: Ouais.
Donc, si je tape zéro, nous allons examiner exactement ce cas cas, ou dans un coin,
si vous voulez.
Donc, si je tape zéro, ce qui de la blocs va apparemment l'attraper?
Le cas ou l'autre?
L'autre chose, et il va dire, vous avez choisi un nombre négatif.
Et en effet, le zéro est pas censé être positif ou négatif,
et alors ce serait à tort.
Ce serait un bug.
Alors, comment pouvons-nous résoudre ce problème?
Quelqu'un qui n'a jamais programmé avant?
Veux-tu--
>> AUDIENCE: [inaudible]
>> DAVID J. Malan: Rentrer?
>> AUDIENCE: [inaudible]
>> DAVID J. Malan: Oh, vous avez?
Quelqu'un qui n'a jamais programmé auparavant.
Vous voulez tenter votre chance à ce, dans la chemise rouge?
Allez vers le haut.
Oh oui, venez sur place, si vous ne vous dérange pas.
Donc, ne jamais avoir programmé avant, quel est votre nom?
LAUREN: Lauren.
DAVID J. Malan: Lauren, tout droit.
Donc corriger ce bug pour nous.
Vous avez pas vu C, sans doute, et probablement aucune autre langue.
Donc fixer ce programme pour nous.
Nice à Ya répondre.
Pas de pression.
LAUREN: Ouais.
>> DAVID J. Malan: Mais encore une fois, si cela Gamble se passe comme prévu,
la livraison sera ici être, tout nouveau, pour commencer
à remarquer et modèles déduire de la syntaxe existante
sinon comment vous pourriez exprimer vous-même, sans jeu de mots, afin
pour capturer un certain scénario supplémentaire.
Nous disons donc d'autre si.
printf, bon.
Et remarquez avec CS50 IDE, IDE et frankly--
supports pour Integrated Environnement de développement.
Il est juste une façon élégante de dire un programme qui vous aide programme.
Il fait des choses comme conviviales lorsque vous tapez un parenthèse,
il vous donne automatiquement l'autre.
La présomption étant que vous êtes finalement va vouloir saisir que,
et il le fait aussi avec des citations.
>> Donc, je l'aime à la ligne 23.
99% du chemin.
Quelqu'un veut faire chorus avec une pointe?
Je entendu virgule de l'auditoire.
Bien.
Donc, qui complète que.
Et maintenant, je dois juste un peu la consternation avec la ligne 21.
Comment voulons-nous pour exprimer cela?
Quelle question voulons-nous de demander, pensez-vous?
Donc nous avons demandé préalablement la question, si n est supérieur à zéro, faire cela.
Sinon, le faire.
Nous devons donc choisir un question à se poser ici.
AUDIENCE: [inaudible]
DAVID J. Malan: Bon.
Donc, si n est égal à zéro.
Excellente.
Donc, arrêtons-nous ici.
Merci beaucoup pour cette bravant.
Permettez-moi de vous donner un peu de bien méritée boule de stress, peut-être là.
Donc, nous y sommes presque.
En fait, Lauren, si vous ne faites pas l'esprit, permettez-moi de faire un tweak ici,
juste pour être compatible même avec ce que nous avons vu dans Scratch, ce
ce que je veux faire avec des lignes 21 et 24, sur la base simplement à nouveau
sur la façon dont nous l'avons fait dans Scratch, peut-être?
>> AUDIENCE: déplacer vers le haut.
>> DAVID J. Malan: Ouais, déplacer vers le haut.
Donc, la condition else, la troisième, ou quatrième, ou cinquième, ou une branche finale,
devrait en effet venu après, et que est juste, par convention,
juste parce que si vous voulez.
Donc, je ne dois faire ce tweak.
Et je dois mettre mon accolade de retour ici.
Et maintenant, ce programme va compiler.
Nous sommes si près, mais il est un bug très, très subtile.
Voyons ce qui se passe.
>> Tout d'abord, laissez-moi aller de l'avant et Zoom arrière.
Je vais aller de l'avant et tapez faire état zéro.
Oh, je mentais.
Maintenant, le compilateur est en fait assez intelligent.
Et je ne comprends pas vraiment il est message d'erreur.
Utilisation de la suite d'une cession comme une condition sans parenthèses,
est apparemment mauvaise.
mais qu'est ce que ça veut dire?
>> Eh bien encore une fois, la recherche de modèles dans le code que nous avons vu auparavant,
ce qui est en train de faire la ligne 17, même si Lauren destiné légèrement
autrement?
Ouais.
>> AUDIENCE: [inaudible]
DAVID J. Malan: Ouais.
Alors rappelez-vous le signe égal, apparemment comme nous l'avons utilisé auparavant, est pas égal.
Sa mission, de droite à gauche.
Donc, la ligne 17 à l'heure actuelle est une maladie, et il est
l'exécution de code à l'intérieur des parenthèses, mais quand ce code est exécuté,
ce qui se passe à la valeur de zéro?
Ce qui se passe à la valeur de n?
Devenir zéro.
Donc, si n est de plus de zéro, et encore, selon la semaine dernière,
nous disons généralement que zéro est fausse et l'un est vrai,
ou oui est un et pas est nul.
Donc vrai et le faux, l'un et 0.
Si n à partir de la ligne 17 a été étant donné la valeur 0, est nul vrai?
Non.
Par définition, le zéro est faux.
Voilà la convention nous sommes aller à accrocher à aller de l'avant.
Il en sera de lignes 18, 19, et 20 jamais appliquer maintenant, logiquement?
Ils ne peuvent pas.
Nous avons donc demandé à la question mais pas assez précisément,
et vous ne seriez pas le savoir à moins vous l'avez vu, la solution C
est lorsque vous voulez exprimer l'égalité, vous dites égaux égaux.
Donc signe égal a déjà été utilisée jusqu'à par cession, de droite à gauche.
Égal à égal des moyens égaux.
Et si vous voulez vraiment votre esprit à plier, en JavaScript et PHP,
il est égal à égal égaux, qui signifie tout autre chose,
mais nous y reviendrons plus avant longtemps.
>> Donc, cela est une solution simple, mais se rendent compte super facile à faire cette erreur,
et se demandent ensuite et la lutte de minutes, voire une heure,
pourquoi mon code ne exécuter comme je l'entends?
Il est parce que vous ne l'avez dit précisément ce que vous entendez.
Alors qui était presque parfait, et il était grand
que nous sommes tombés sur ces deux petits parce que maintenant les choses si nous les fixons,
et je fais état zéro dot slash état zéro,
Je voudrais un entier s'il vous plaît.
Voyons.
Non.
Il va me forcer à le faire.
Donc 42.
Je pris un nombre positif.
Alors maintenant, comment puis-je prouver ce programme correcte?
Si vous êtes un mathématicien, vous ne pouvez pas vraiment le prouver par essais et erreurs,
droit?
Vous ne pouvez pas simplement la preuve par par exemple, mais au moins
en tant que programmeur nous ne sommes pas va essayer de prouver pour l'instant
ce qui est en fait correct, mais je devrais probablement
tester certains cas représentatifs.
>> Je l'ai testé 42.
Je pourrais tester 43.
Je pourrais tester 44.
Essai 45.
Droit?
Mais je ne pouvais le faire très longtemps.
Quel serait un peu plus cas intéressant d'essayer?
AUDIENCE: [inaudible] zéro.
DAVID J. Malan: Donc zéro.
Assurément.
Et bien, nous avons cette fois-ci, grâce à un nouveau code de Lauren.
Quel est un autre bon exemple d'essayer?
AUDIENCE: négatif.
>> DAVID J. Malan: un négatif, et peut-être quelque chose d'un peu plus grand,
alors peut-être négative 42, mais en général, lorsque
tester vos programmes aller de l'avant, vous êtes
aller à vouloir penser à vous-même, comme ce
sont les cas différents fondamentaux.
Et je ose dire un cas négatif, un cas positif, et un cas de zéro
arrondit à peu près ces out.
Regardons une variante de ce bien.
Conditions un.
Ceci est une solution correcte ici, de sorte que vous verrez deux et en ligne,
si vous vous promenez à travers le soluces, généralement
incrémenter ces étapes jusqu'à ce que nous obtenir exactement la bonne approche.
Que faire si nous voulions poser deux questions à la fois?
>> Permettez-moi d'ouvrir cette place.
Non-commutateur, pour des raisons nous verrons une autre fois.
Quoi de neuf syntaxiquement ici?
Je suis en train de jouer un jeu où l'ordinateur est révélateur
moi, donne-moi un entier entre une et 10,
et puis je vais juger l'entrée de l'utilisateur.
En anglais, basé sur le code que vous voyez ici
en bleu, ce qui est fait de ce programme?
AUDIENCE: [inaudible] ramassé un certain nombre grand ou petit.
DAVID J. Malan: Ouais.
Il est juste statuer si Je pris une grande ou moyenne,
ou petit nombre basé sur une très définition arbitraire des petites, moyennes,
et grande ici, mais un avis la syntaxe qui est nouveau est présent.
Il n'y a pas moins de int ou égal à signer, ou supérieure ou égale à signer,
où l'on est au-dessus de l'autre, que vous peut exprimer comme Microsoft Word.
Donc, dans un langage de programmation généralement juste faire deux personnages,
l'un après l'autre.
Et qu'est ce que cela probablement représenter, esperluette esperluette.
AUDIENCE: [inaudible]
DAVID J. Malan: Ouais.
Cela signifie simplement et parce qu'il se trouve que les auteurs de C
utilisé un seul esperluette, qui vous pourriez penser
serait parfait pour la notion de et, est déjà utilisé,
esperluette donc effectivement esperluette capture le cas, nous voulons réellement.
>> Donc, nous allons trébucher maintenant sur deux choses.
Permettez-moi aller de l'avant et d'ouvrir un.
Quelque chose qui est un peu inquiétant.
Imprécision dot c.
Permettez-moi de vous présenter deux choses ici.
Un, un avis que nous pouvons faire mathématiques, que tout comme avant quand
nous avons en plus de deux nombres x et y.
Quel est ce programme apparemment fait?
Je ne l'ai pas encore commenté ce, et je me suis présenté pour cent f,
mais je l'ai déjà dit rapidement f pour cent signifie virgule flottante
valeur, qui est le nombre réel.
Quelque chose avec une décimale point, ce qui est pas un entier.
Que pensez-vous de ce programme est essayer de me montrer à l'écran?
Ouais?
AUDIENCE: Le résultat de l'un sur 10.
DAVID J. Malan: Ouais.
Quel est le résultat d'un divisé par 10.
Droit, parce que tous vous avez probablement grandi en sachant que un sur 10
est ce?
Ouais, il est juste de 1/10 ou 0,1.
Droit?
Voyons donc ce que cela est en réalité.
Alors laissez-moi aller de l'avant et sauver ce.
Permettez-moi de descendre ici.
Assurez imprécision point barre oblique imprécision, et de l'avis, aussi,
dans un environnement Linux, vous ne faites pas avoir à taper sur l'imprécision et de prendre
toute la journée.
Il généralement, si vous frappez Tab, il terminerez votre pensée pour vous,
sur la base des mots qui sont disponible dans le répertoire courant.
D'ACCORD.
Donc, vous aviez raison.
Une divisé par 10 est, en fait, 0,1.
Mais je suis un peu curieux.
Et il se trouve printf soutient certaines fonctionnalités
lequel vous pouvez spécifier plus le nombre de décimales par défaut.
Donc, si je veux voir 10 décimal points que je peux faire pour cent,
pour le symbole de l'espace réservé, dot 10 pour, donnez-moi 10 points décimaux,
puis encore à virgule flottante valeur, et, en passant,
quelle est cette barre oblique inverse n apparemment, nous continuons à utiliser?
Il se trouve qu'il est un symbole d'une nouvelle ligne.
Il est la manière très explicite de dire à l'ordinateur,
déplacer le curseur à la prochaine ligne après vous avez terminé.
Et nous allons voir ce qui se passe quand nous ne faisons pas cela.
>> Permettez-moi de faire recompile imprécision.
Maintenant dot slash imprécision.
D'ACCORD.
Toujours à droite.
Un divisé par 10.
Maintenant, je vais avoir un peu curieux, cependant.
Que faire si je regarde 20 décimal souligne, recompiler, rediffusée,
et comme un côté pour vitesse, vous pouvez également utiliser
votre flèches haut et bas pour Parcourez votre historique,
de sorte que vous ne devez pas continuer retaper ces commandes, entrez.
Huh.
Je ne l'ai pas appris que l'école primaire.
Très bien, alors laissez-moi voir comme 29 places sur.
Peut-être juste un coup de chance.
Peut-être que mon ordinateur est agissait bizarrement.
Cela ne veut pas d'une chose, non?
Il fait quelque chose de déterministe.
Donc, assurez imprécision.
OK, ce est foiré.
Donc ce qui se passe?
>> Donc, apparemment, votre enseignant a été couché
à vous tous de ce temps pour raisons que nous verrons avant longtemps.
Mais finissons avec un autre programme.
Ceci est un petit programmes quelqu'un a écrit il ya quelques années,
et il est en fait partie d'un concours.
Nul écrit réellement le code comme ça, et si vous le faites,
cela est stylistiquement un problème.
Mais les gens le font pour les droits de vantardise.
Pour écrire le plus déroutant programme que la recherche
fait néanmoins quelque chose d'intéressant.
Et la note que je pensais que nous partions sur aujourd'hui, avant Colton nous joue ici,
est d'exécuter ce programme, qui, même en utilisant simplement
C dans cette base de texte environnement, nous cela donne.
Merde.
>> [Rires]
>> Etre prêt.
[Inaudible] c dash l m.
Vous allez voir le magique incantation que nous verrons avant longtemps.
[Inaudible] Très bien.
Et maintenant vous pouvez même faire des choses comme cela.
C'est tout.
Pour CS50 nous, vous voir vendredi.
>> [Jouer de la musique]
>> [Applaudissements]