>> [MUSIQUE LECTURE]
>> DAVID Malan: Très bien c'est CS50 et c'est la fin de la première semaine.
Donc, je voudrais vous présenter mon ancien advisee, Andel Duff, qui permet non seulement
iPhone 5 est, ainsi que ce lutrin, il fait aussi des voitures.
ANSEL DUFF: Comment ça va, tout le monde?
Je veux juste vous dire un peu peu de Formule SAE, dont je
Je suis le capitaine.
C'est une équipe du MIT.
Je veux juste vous dire les gars un peu à ce sujet
et générer espérons un certain intérêt.
>> Alors permettez-moi de passer en revue un quelques choses à propos de notre équipe.
Nous sommes donc tout à fait dirigé par des étudiants, dans lequel tous
de la conception des membres, simuler, test, et le fabricant un sous-système
de la voiture.
Nous avons notre propre atelier d'usinage et garages, et N52-- ou désolé,
N51-- qui est le même immeuble le Musée des Sciences du MIT.
Et nous sommes le peuple qui conduisent la voiture.
Il ya un concours national au début de l'été,
et puis il ya des petits fusillade compétitions tout au long de l'année.
Et puis nous faisons la formation des conducteurs jours pour se familiariser de nouveaux membres.
>> Nos jours de construction sont sur Samedi onze heures-20 heures.
Le déjeuner et le dîner prennent soin de, de Bertucci et de Beantown
respectivement.
Nous avons une réunion hebdomadaire et séminaire, qui est pour les crédits de cours.
Ce qui est nouveau à partir de ce semestre, et il sera également pour le prochain semestre,
de sorte que vous pouvez traverser-reg pour cela.
Et puis nous avons la conception, la boutique, et les jours de CAO au cours de la semaine,
alors que les membres de façon indépendante éléments de CAO, stock de commande et ainsi de suite.
>> Donc, pour électrique ingénierie à l'équipe
nous avons notre traction, Système à haute tension,
qui fonctionne à une tension nominale 300 volts, ce qui comprend
les moteurs, les commandes de moteur, et des batteries.
Ensuite, nous avons un faible système de tension, qui se déroule
à 12 volts, ce qui comprend contrôles, CAN nœuds, le cerveau
boîte, et le tableau de bord.
En ce qui concerne CS va, nous faisons avoir maintenance du site
que nous n'avons fait pour des événements, l'adhésion changements, de nouvelles photos et de matériel de relations publiques.
Et puis nous avons un code qui contrôle la voiture pour notre contrôle de traction, lancement
contrôle, le contrôle du tableau de bord, vectorisation de couple, et les systèmes de freinage par récupération, qui
de fonctionner normalement dans MATLAB, Simulink, et LabView.
>> Vous dire un peu plus sur la voiture.
C'est donc environ 500 livres.
C'est règles limitées à 85 kilowatts.
Il dispose de 2 EMRAX 207 moteurs de la arrière, un pour chaque roue arrière.
Il a des batteries sur mesure à partir de cellules de poche A123 prismatiques,
un montant total de 300 volts et 5,6 heures kilowatts.
Et c'est à entraînement direct avec un rapport de 2,64 à 1 d'entraînement.
Voici quelques photos nous a pris de lui à la concurrence.
Voici le cône arrière, nez, et voici les moteurs,
ces grands disques noirs sous la mens et manus.
Voici une diapositive que je tirai de notre régime de concurrence.
Et cela est juste compare notre voiture à un couple de voitures disponibles dans le commerce,
comme la KTM XBOW, Ariel Atom, et Caterha M 7-280.
Si vous êtes familier avec le prix, la puissance tirez poids, dollars par cheval-vapeur,
dollars par couple, et notre voiture tous les coups hors de l'eau.
Si vous avez des questions, notez cette adresse email.
Nous tirer un email à fsae@mit.edu.
>> Nous sommes heureux de parler de ce que vous voulez.
Étudiants de Harvard sont gentils de la minorité dans l'équipe.
Si vous avez des questions au sujet que s'il vous plaît ne nous tirer un email,
heureux de parler, et je vais de retourner à David.
Merci.
Je l'apprécie, les gars.
[Applaudissements]
>> DAVID Malan: Ansel a passé l'été travailler avec nous ici sur le campus CS50
cet été.
Et en plus de travailler sur des choses comme les ampoules binaires,
il fait vraiment ouvert notre eyes-- et le mien dans particular--
à ce qui est vraiment l'intersection de pas de matériel et de logiciels peut être.
En fait, beaucoup des choses qu'il a juste vous êtes en tournée à travers finalement
créé le premier logiciel, et puis finalement fabriqué
dans le monde réel dans le matériel.
Donc, si vous êtes intéressé par explorer cette intersection,
peut-être prendre ce groupe.
>> Maintenant, quant à lui, ceux d'entre vous qui sont fans de technologie,
et les produits Apple dans notamment savoir qu'il ya
étaient un couple de annonces hier.
Mais nous avons pensé montrons vous un qui est sorti
quelques jours avant que vous n'auriez pas vu.
>> JORGEN EGHAMMER: Vous savez, une fois dans un certain temps quelque chose
vient le long de cette change la façon dont nous vivons.
Un dispositif de manière simple et intuitive l'aide il se sent presque familier.
Présentation 2015 catalogue IKEA.
Ce n'est pas un livre numérique ou un e-book, c'est un livre-livre.
>> La première chose à noter est pas câbles, pas même un câble d'alimentation.
Le catalogue IKEA 2015 vient complètement chargée,
et la durée de vie de la batterie est éternelle.
L'interface est de 7,5 par 8 pouces, mais peut s'étendre à 15 par 8 pouces.
La navigation est basée sur le toucher tactile la technologie que vous pouvez réellement sentir.
>> Contenu est livré pré-installé par 328 pages en haute définition
d'inspirer des idées d'ameublement.
Pour commencer à naviguer, il suffit de toucher et faire glisser.
Droite à gauche pour aller de l'avant, de gauche à droite pour revenir en arrière.
>> Notez autre chose?
C'est ça.
Pas de décalage.
Chaque page cristalline charges instantanément,
peu importe à quelle vitesse vous faites.
Si vous souhaitez obtenir un aperçu rapide, il suffit de tenir dans la paume de votre main,
et en utilisant simplement votre pouce, vitesse parcourir le contenu.
>> Si vous trouvez quelque chose que vous souhaitez enregistrer pour plus tard, vous pouvez simplement ajouter à vos favoris.
Et même si vous fermez l'application, vous pouvez facilement retrouver le signet.
Incroyable.
>> [Rires]
[Applaudissements]
Donc, cela nous amène à la fin de la première semaine.
Quelques annonces maintenant.
Donc sectionnement est maintenant en cours.
Aller à l'URL ici quelque temps entre aujourd'hui et vendredi à midi
de préciser effectivement si vous êtes parmi ceux qui sont moins à l'aise, plus
confortable, ou quelque part entre les deux.
>> C'est typiquement un de ceux les choses que vous venez de type de savoir.
Et en fait, ceux d'entre vous qui sont moins confortable savez probablement autant,
ceux d'entre vous qui sont plus confortable savent autant,
et encore si vous n'êtes pas sûr de ce qui de ces seaux vous tombez dans vous êtes
probablement quelque part entre les deux.
Mais rassurez-vous, vous pouvez échanger au bout de quelques semaines si nécessaire.
>> En attendant, pour la semaine à venir on ne commence pas par soi sections,
mais les sections de super, qui sont ouverts à tous les étudiants.
Ce dimanche, à un endroit être annoncé sur le site du cours
nous allons avoir un pour ceux qui sont moins à l'aise,
ainsi que l'un de ceux qui sont plus à l'aise.
Et ceux quelque part entre peut choisir lequel des deux,
ou les deux si vous le souhaitez, à un sit-in sur.
Et la mise au point de ces sera finalement sur C,
que nous allons continuer notre la conversation d'aujourd'hui.
>> Problème réglé 0 en attendant est j'espère que dans vos mains.
Officiellement en raison demain, Jeudi, à midi.
Sauf si vous encaissez un de vos 5 jours de retard,
qui l'amènerait jusqu'à vendredi à midi.
Problème réglé 1 devra quant à lui être posté sur le site Web du cours.
Et ce sera notre première incursion comme une classe en C
Et ce problème mis en spec vous guidera par beaucoup de la mécanique de ce
nous avons commencé à parler le lundi, et nous allons continuer à parler aujourd'hui.
C, Linux, le CS50 appareil, tout cela
vous attendent dans la spécification.
>> Les heures de bureau sont en cours quant à lui, dans la salle à manger de premier cycle.
Rendez-vous à l'adresse ici pour voir le planifier pour ce soir et demain,
si vous souhaitez participer.
Questions Pendant ce temps, de sorte que vous avoir la possibilité de poser des questions
asynchrone, 24/7, réaliser que vous êtes ne se limite pas aux sections et bureau
heures, mais plutôt cet outil ici, CS50 Discuter de cette URL
sera la ligne de cours logiciel de la carte d'affichage, par lequel
vous pouvez poser des questions camarades de classe et aussi personnel.
Donc, gardez à l'esprit que les ressources ainsi.
Pendant ce temps une tradition commence ce vendredi.
Comme vous avez pu entrevoir de teaser vidéo de mercredi dernier,
nous avons une tradition plus tous les vendredis pendant le mandat
de prendre quelque 50 étudiants et personnel dans un restaurant local appelé
Fire and Ice, à laquelle nous sommes généralement rejoints par certains anciens
ou des amis de l'industrie à aspirer général
pour faire une grande classe se sentent plus petits.
C'est donc un déjeuner tout à fait décontracté.
Un groupe d'entre nous, le personnel en particulier, va jouer les chaises musicales
et discuter avec les élèves sur 50, la vie à l'extérieur de 50,
vie dans l'avenir, le monde réel, Je parle de possibilités d'emploi
avec des amis dans l'industrie.
>> Donc, si vous souhaitez vous joindre à nous ce vendredi, à la tête de cette URL ici.
L'espace est limité, mais nous allons le faire cycliquement pendant toute la durée.
Rendez-vous là pour cs50.harvard.edu/rsvp.
Et si vous n'obtenez pas cette fois, ne vous inquiétez pas.
Nous le ferons à nouveau dans les semaines à venir ainsi.
>> Donc, c'est l'image nous avons peint la semaine dernière,
et vous avez probablement été barboter dans ce jour.
Mais nous allons essayer de relier cette entreprise à ce que nous allons faire aujourd'hui
et au-delà.
Pourrais-je avoir un bénévole?
Très bien, ou plusieurs.
Que diriez-vous ici sur la fin, en chemise bleue.
Montez donc, quel est votre nom?
ALANA: Alana.
DAVID Malan: Alana.
Donc, Alana, pour seulement un moment-- agréable de rencontrer vous--
va jouer le rôle de cette fonction ici.
Le bloc violet nous avons appelé jusqu'ici une fonction.
Donc ce que je vais avance ici et offrir Alana
est un peu nom de balise, de faire clairement le rôle que vous jouez.
>> Alors tu seras le bloc de dire.
Si vous voulez aller de l'avant et mettre ça sur.
Et nous allons garder ce super simple.
Si l'objectif à portée de main est tout simplement maintenant à mettre en œuvre avec Alana,
ce soi-disant dit bloc, voici comment cela va fonctionner.
Je have-- appelons-il un argument ou un paramètre,
c'est vraiment juste une feuille de papier vierge.
Et elle est blanche à type de faire penser de la boîte blanche dans laquelle vous
peut écrire des mots.
>> En attendant, je vais aller ici.
Je vais aller de l'avant et écrire H-E-L-L-O virgule monde.
Et maintenant, moi, en tant que dire le programmeur, fais pas savent réellement comment dire quelque chose.
Je peux venir avec les mots, mais je ne fais pas nécessairement
savoir comment m'exprimer verbalement ou à l'écran.
Et si ce que je vais à faire est de prendre cette pièce
de fonctionnalités, dont la input-- ou un argument, comme nous l'appellerons,
J'ai écrit sur ce morceau de paper-- et je vais le confier.
>> Et en effet, c'est le rôle que les fonctions dans un langage de programmation
peut jouer.
Quelque chose comme l'exemple bloc peut être externalisée
à quelqu'un qui sait vraiment ce qu'il ou elle parle.
Donc, si vous enjambez ici pendant un moment,
Je vais passer cette entrée pour Alana, et de demander que vous dites cette entrée.
>> ALANA: Bonjour tout le monde.
DAVID Malan: C'est ça.
Alors qu'il existe une fonction.
Maintenant, nous pouvons prendre un peu plus, nous pouvons faire un pas en avant ici.
Parce que c'était clairement décevante.
Donc, nous allons convertir maintenant ce à quelque chose d'un peu plus sophistiqué.
>> Donc, cela est bien sûr notre version de C.
Alors maintenant, si vous voulez prendre que un arrêt, ce nom étiquette hors
et nous allons avoir vous mettez sur un nouveau nom.
Mais fondamentalement vous êtes jouer le même rôle,
il se trouve à être appelé printf maintenant.
>> L'histoire est, bien sûr, va probablement être--
comme c'est underwhelming-- va être la suivante.
Vous êtes maintenant la fonction printf.
Je suis l'appelant, ou la programmeur, qui veut
reposer sur les épaules d' gens dans le passé comme vous,
qui ont déjà compris comment pour réellement écrire quelque chose.
Et cette fois, plutôt que de dire qu'il nous allons
effectivement utiliser notre écran ici.
Donc, si vous souhaitez l'étape ici, je vais
de passer à nouveau ce que entrée à mon ami printf.
Si vous pouviez aller de l'avant et imprimer que sur l'écran,
en tirant simplement avec votre le doigt sur l'écran noir.
Excellente.
D'accord, donc beaucoup de suspense pour comment cela allait se jouer.
>> Alors maintenant, nous allons prendre les choses un encoche finale, si nous le pouvions, comme suit.
Il s'agit donc d'un programme C comme nous l'avons dit la dernière fois.
Et ce fait exactement ce que vous avez fait, il imprime à l'écran, bonjour, monde.
Même si il ya clairement beaucoup de substance de distraction là-haut.
Mais prenons les choses d'un cran et introduire cette version, qui rappellent
C'était la troisième version nous nous sommes retrouvés avec la dernière fois.
>> Et maintenant, il ya clairement deux utilisations de printf.
Il ya deux appels à Alana dans ce cas pour printf,
mais il ya aussi un appel pour une autre fonction.
Qu'est-ce que la fonction clairement?
GETSTRING.
>> Pouvons-nous obtenir un plus volontaire?
OK, venez sur place.
Quel est votre nom?
>> JAVIER: Javier.
>> DAVID Malan: Javier, venez sur place.
Donc, le rôle de Javier est sur ce morceau de papier.
Ce que je vais appeler génériquement s.
Maintenant, c'est une variable, il est de type chaîne, comme le laisse entendre
par cette deuxième ligne au milieu là.
Et je voudrais que vous allez me chercher une chaîne.
Plus précisément la tête en bas à l'orchestre section et moi d'obtenir le nom d'une personne,
et de revenir avec une variable contenant cette valeur.
Il peut être qui vous voulez.
>> Et c'est parti.
Très bien, Javier est écrire le nom.
Bien.
Nous pouvons tous probablement deviner comment cela va se jouer.
Nous peut-être belaboring le point de ce
une fonction est de faire, mais néanmoins je vous remercie beaucoup.
>> Donc, Javier est revenu cette chaîne ici, qui, ne peut pas tout voir,
Jonathan est la chaîne que nous avons obtenu.
Alors maintenant, ce que je vais en fait de fournir à Alana que
est quelque chose d'un peu différent.
Parce que dans cette version de la programme, il ya d'abord l'état de votre nom.
Ainsi, le très premier argument J'ai besoin de fournir Alana
avec va être dire littéralement votre nom.
Très bien, si simple Je voudrais remettre cela pour vous.
Et au moment où j'écris le d'argument suivant, si vous
vouloir aller de l'avant et écrire ce sur la carte, nous allons aller de l'avant
et faire le dernier exemple ici de faire effacer ce qui doit arriver en fin de compte.
Donc, votre nom, écrire vers le haut
si cela ne vous dérange pas, juste pour que nous avons de la place pour une deuxième ligne.
Parce que la dernière chose que je vais de vous fournir maintenant avec n'est pas un,
mais deux morceaux de papier.
>> Bien.
H-E-L-L-O virgule, puis une ligne vierge.
Donc ce que je suis sur le point de remettre Alana maintenant est quelque chose d'un peu différent.
Non seulement elle devient ce, où remplir le vide représente
que percent-- quelle était la espace réservé nous utilisons?
Ouais, donc pour cent s.
En attendant, je vais passer elle dans un deuxième argument, qui
C'est précisément ce que Javier extraites de Jonathan.
>> Alors permettez-moi de vous donner ces deux.
Si vous souhaitez, aller de l'avant et imprimer cet effet.
Qu'est-ce qui se passe en fin de compte maintenant, Alana nouveau
joue le rôle de printf.
Javier jouait le rôle de GetString.
Donc, ça va être votre souvenir.
Et en fin de compte ce qui se passe, en dépit de ce hello-- yep aller de l'avant et la virgule.
ALANA: Est-ce que je reçois ce encore ou pas?
DAVID Malan: Yep, vous les deux reçu à la fois.
Donc, l'idée est que vous peut maintenant tourner la page
pour gérer la deuxième de ces deux entrées.
Donc, il ne s'agit que de marteler le signaler que, alors que Alana exécuté
cette ligne verte ici, puis Javier a fait celui-ci pour nous
et revenez me voir quelque chose nous appelons s, mais c'était vraiment
juste ce morceau de papier de la sienne.
Et maintenant, Alana a fait cette troisième ligne.
>> Et même si tout cela ressemble si incroyablement énigmatique peut-être
à première vue, il a vraiment est aussi simple que cela.
En passant entrées autour, obtenir sorties, soit
être physiquement remis quelque chose en retour, ou de voir un effet secondaire de ce genre.
Quelque chose de visuellement écrite sur l'écran.
Donc, nous allons aller de l'avant et merci Alana et Javier,
qui était ici-bas, pour nous rejoindre ici.
>> [Applaudissements]
>> Alors maintenant, nous allons prendre pour acquis à quel simple tout cela pourrait être.
Et nous allons procéder à fait faire quelque chose dans le code réel.
Donc, sur l'écran ici est une capture d'écran de l'appareil soi-disant CS50.
Et si vous deviez à, comme un 14h00 le mercredi après-midi,
expliquer dans une certaine ami ce que l'appareil est de CS50,
comment définiriez-vous dans une phrase?
Toute une seule phrase?
Ouais?
ETUDIANT: C'est comme un programme que fait l'ordinateur de tout le monde
de fonctionner avec le même système.
DAVID Malan: Bon!
C'est un programme qui permet à chacun de ordinateur de fonctionner avec le même système.
C'est un peu de votre propre copie d'une exploitation
système qui arrive à être appelé Ubuntu Linux.
Et il fonctionne de manière efficace à l'intérieur de une fenêtre sur votre propre Mac ou PC,
de sorte que de cette façon dès la sortie de la porte dans la semaine 1, tout le monde ici dans la classe
a accès aux mêmes outils, la même configuration,
et il n'y a pas de courbe d'apprentissage spécifique à un Mac ou un PC en particulier.
>> Maintenant, nous avons ouvert, à l'intérieur de la CS50 appareil lundi, ce programme ici.
Il arrive à être appelé gedit.
Mais c'est vraiment juste un éditeur graphique.
C'est quelque chose comme le Bloc-notes ou texte Modifier sous Windows ou Mac OS, respectivement.
Et j'ai proposé qu'il y avait vraiment trois éléments importants à cet écran.
Le côté supérieur est l'endroit où vous serait écrire votre code.
Et c'est là que nous avons passé beaucoup de notre trois exemples de la conférence de lundi.
Le fond nous avons appelé ce, cette fenêtre noir, oui?
>> ETUDIANT: compilateur?
>> DAVID Malan: Compiler nous accédé par l'intermédiaire de cette fenêtre.
Mais plus généralement.
Ouais, c'était juste une fenêtre de terminal.
C'est un vieux terme d'âge que juste décrit essentiellement un clignotement
rapide, qu'il ya quelques années l'habitude d'être sur un de ces grands moniteurs de style CRT.
Mais aujourd'hui, c'est un peu de virtuel dans le logiciel.
Et les fenêtres terminales permet de faire le taper des commandes.
Il sorte de la version simplifiée de l'interface utilisateur ou l'interface utilisateur.
Ce n'est pas un graphique l'interface utilisateur graphique ou,
c'est une interface en mode texte ou une interface de ligne de commande.
>> Et en effet, c'est là finalement J'étais capable d'écrire un peu de code.
Une fois que j'avais écrit du code si, rappelle que j'ai utilisé cette commande.
Et comme il le nom type de l'indique, ce
me permet de faire un programme appelé Bonjour.
Mais ce qui a été vraiment fait?
Eh bien make prenait mon entrée, mon code source,
et la conversion à ce que, en fin de compte?
>> Code de l'objet.
Et le code de l'objet est juste une fantaisie façon de dire zéros et de uns.
Et puis une fois que je voulais d'exécuter ce code objet,
une fois que je voulais passer en entrée les zéros et de uns dans mon ordinateur de
cerveau, la dite CPU ou de l'unité centrale de traitement,
J'ai eu à exécuter le programme.
Mais ce n'était pas tout à fait simple, le lundi comme il suffit de double cliquer sur une certaine icône.
Qu'est-ce que la place ai-je dû faire pour exécuter un programme?
>> Quelle était cette deuxième commande?
J'entends un peu barres?
Oui, oui?
>> ETUDIANT: Dot slash et le nom du programme.
DAVID Malan: Exactement.
Dot slash et le nom du programme.
Maintenant, qu'est-ce que cela signifie?
Eh bien point est juste une façon mystérieuse de dire le répertoire courant.
Quel que soit le dossier dans lequel vous êtes référencée, est représenté par point.
La barre est juste ce que vous avez vu sous Mac OS et Windows depuis des années,
c'est un séparateur entre un répertoire ou le dossier et le reste de quelque nom.
Dans Windows, il arrive à aller vers l'arrière, sous Linux et Mac
OS il arrive à aller de l'avant.
Mais c'est juste le séparateur, il est donc juste un détail syntaxique inintéressant.
>> La partie juteuse de cours est le nom du programme, Bonjour.
Et c'est ce que rendent créé pour nous.
Il sorti ce fichier pour nous.
Mais comment sommes-nous arrivés à ce point?
Posons maintenant la question, ce qui était vraiment
passe ici, au moins ce qui concerne une partie de cette syntaxe?
>> Ainsi, dans un phrase ou deux, Comment avons-nous expliquer
cette première ligne qui est surligné en vert?
Quelle était cette première ligne faisant, à l'égard de mon programme?
Ouais?
>> ETUDIANT: [inaudible].
DAVID Malan: Dites-le à nouveau?
ETUDIANT: Inclusion et téléchargement fonctions passées [inaudible].
DAVID Malan: Bon.
Y compris, je ne dirai pas le téléchargement, mais disons
y compris les fonctions que les gens ont écrit dans le passé.
Et ces fonctions sont mises en œuvre quelque part dans mon ordinateur.
Quelqu'un a écrit un fichier il ya des années, et que ce fichier
est quelque part dans le CS50 appareil, ou sur mon disque dur
plus généralement.
Et si cette ligne est essentiellement dit, aller trouver ce fichier, / O pointée standard I
h, et copier et coller son contenu ici sur le dessus de mon dossier
de sorte que je n'ai pas à faire manuellement moi-même.
>> Et parmi les morceaux les plus juteux à l'intérieur de ce fichier nous avons réclamé était quelle fonction?
Quelle est la fonction disions-nous a été déclarée ou mentionnée dans la norme E / S point h
le plus probable?
Printf, non?
Nous n'avons pas écrit sur printf Lundi, il existait seulement.
Tout comme Alana vient sur scène et elle a juste
existé et a su tirer quelque chose sur l'écran,
printf n'existe donc depuis de nombreuses années.
Et voilà comment nous accédons.
Maintenant, si nous passons ici, principal était analogue nous
dit le morceau de puzzle appelée lorsque le drapeau vert cliqué
dans le monde de Scratch.
C'est en quelque sorte de la nom par défaut que les humains
décidé représenterait la par défaut point d'entrée à un programme.
Le morceau de code de programmation qui est exécuté en premier.
>> En attendant ces accolades sont un peu comme la forme incurvée
d'un grand nombre de ces pièces à gratter jaune.
Ils genre de encapsulent un ensemble tas d'instructions ensemble.
Donc, c'est en quelque sorte lie certaines fonctionnalités connexes.
printf est bien sûr une fonction qui imprime l'écran, comme nous venons de le faire.
>> Qu'en est-il de ces parenthèses?
Comment voulez-vous define-- même si vous avez jamais programmé auparavant, mais seulement sur la base
maintenant sur une augmentation espérons intuition, ce
sont les parenthèses font pour nous ici?
Ou qu'est-ce qu'ils entourent?
Ouais?
>> ETUDIANT: Ils disent que vous allez imprimer avec printf.
>> DAVID Malan: Ouais, ils disent ce que vous allez imprimer avec printf.
Ou, plus généralement, ils sont entourant les entrées de la fonction.
Ainsi, vous pouvez presque penser de ces parenthèses
comme étant comme le métal clip sur cette presse-papiers.
C'est ce qui maintenant, c'est ce qui est va être utilisé pour fournir des arguments
dans la fonction, dans lequel ce cas est appelé printf.
>> Donc, en général, pratiquement n'importe quel temps que nous appelons une fonction,
nous allons voir une paire de parenthèses.
Peut-être que quelque chose en elle, comme maintenant, peut-être rien en elle.
Mais c'est là que vous mettriez les entrées ou les dits arguments
à une fonction.
>> Voici un tel argument.
J'ai tout mis en relief entre guillemets,
car il s'avère dans cette langue appelée
C, quand vous voulez représenter un string-- c'est un mot ou une phrase
ou même un paragraph-- vous devez l'entourer de guillemets.
Citations pas simples, doubles guillemets.
Et c'est exactement ce que j'ai fait ici.
>> Pendant ce temps, il ya un morceau de musique symbole à la fin il.
La barre oblique inverse n.
Qu'avons-nous dit que représenté?
Ouais?
>> ETUDIANT: Une nouvelle ligne.
>> DAVID Malan: Nouvelle ligne.
A droite, vous n'avez pas généralement appuyez sur Entrée quand
vous voulez que le programme à cracher une nouvelle ligne.
Plutôt que vous dites explicitement avec cette pièce certes des arcanes
de la syntaxe, la barre oblique inverse n, que vous voulez une nouvelle ligne pour y aller.
Enfin, le point-virgule.
Nous n'avons pas vraiment parler trop à ce sujet,
et de loin ce sera le fléau de certains de votre existence pour le premier problème
définir, lorsque vous venez de perdre pour réaliser vous avez oublié quelque chose d'aussi stupide
comme un point-virgule.
Et généralement mettant il y aura régler ce problème.
Mais qu'est-ce qu'il fait pour nous, diriez-vous?
>> ETUDIANT: [inaudible].
>> DAVID Malan: Désolé?
>> ETUDIANT: [inaudible].
DAVID Malan: Finition un communiqué.
C'est un peu comme la période au la fin d'une phrase en anglais,
alors que dans cette langue C c'est la fin d'une déclaration.
Une instruction de programmation code que vous voulez juste dire,
J'en ai fini avec ça.
Maintenant, remarquez que c'est le seul ici.
Donc, vous ne voulez pas entrer en l'habitude de mettre des points-virgules
après chaque parenthèse fermée.
Par exemple, il ya aucun à côté de nul effet, et nous allons
revenir à l'avenir à ce que des moyens vide.
Mais dans ce cas votre printf est une fonction, ou une déclaration utilisé,
et si nous voulons avoir que terminale à la fin de celui-ci.
>> Et je suis volontairement ramasser sur C. Et franchement un grand nombre de langages comme C, C ++
Java, JavaScript, et un certain nombre de d'autres langues ont beaucoup de ces
sorte de détails syntaxiques.
Cela a certainement si vous êtes nouveau à programmation peut véritablement vous faire trébucher.
Et vous, marquer mon mots, certains d'entre vous seront
cette expérience aux heures de bureau ou la fin
la nuit à travailler sur un p-set, où votre programme sacrément juste ne compile pas,
il ne fonctionne pas, vous avez aucune idée de ce qui ne va pas,
il semble tout à fait logiquement correct pour vous.
Et c'est parce que vous avez oublié quelque chose comme frapper
un point-virgule à la fin d'une certaine ligne.
>> Mais c'est le genre de choses que vous êtes va apprendre immédiatement à voir.
Et en effet, ce sont les choses que et les TF de de l'AC ont
été sorte de formation pour voir beaucoup plus vite que vous.
Et si ce n'est pour dire, comme vous le plongée en problème réglé 1 en particulier,
ne soyez pas frustrés par ce genre de choses.
Une fois que vous sorte de s'acclimater au monde, vous
commencer à voir des choses que vous ne pourriez pas voir à première vue de cette première semaine.
>> Donc, le code source est quelque chose comme ça.
Nous voulons passer en le compilateur dite.
Et ce compilateur comme nous l'avons dit fournit une sortie
connu sous le nom de code objet, le soi-disant zéros et de uns.
Mais à partir de là, qu'est-ce qui nous donne?
Eh bien, il nous donne à ces modèles.
Et encore une fois votre ordinateur, votre Intel à l'intérieur,
compréhension de ces modèles de zéros et de uns.
Et parfois, le modèle représente un nombre décimal réel
comme nous l'avons vu la semaine dernière, parfois il représente une lettre
comme nous l'avons vu la semaine dernière, parfois il représente une instruction,
comme l'impression de quelque chose à l'écran.
>> Donc printf pour instance-- mais, permettez-moi de revenir en arrière.
Nous avons pris pour acquis que ces zéros et de uns sont
produit par cette commande make.
Mais la marque n'est pas un compilateur.
Faire n'est pas la chose au milieu que cela la production des zéros et des uns.
Plutôt faire est juste une très commodément programme nommé dont le but dans la vie
est essentiellement de comprendre comment compiler votre programme.
Et nous l'utilisons dans ces premières semaines parce que cela
nous permet d'économiser beaucoup d'ennuis.
>> Mais ce qui est vraiment rendre faire lorsque vous compilez bonjour,
est, comme nous l'avons dit la dernière fois, c'est recherche sur votre disque dur
ou dans le dossier en cours, pour fichier appelé ce, apparemment?
Hello.c, non?
C'est juste une sorte de convention.
C'est arbitraire, mais c'est la façon dont les choses sont.
Faire, si vous spécifiez simplement le nom d'un programme qui n'existe pas encore,
il va chercher le code source dans un fichier, par défaut signifie hello.c.
Et s'il le trouve, très bien.
Il va convertir cette source Code en code objet pour vous.
>> Mais chaque fois que je l'ai frappé Entrez après l'exécution de make bonjour,
vous rappelez-vous avoir vu la dernière fois un assez long et la séquence cryptique
d'autres lettres blanches et caractères sur l'écran?
Eh bien, c'était la commande effective, le compilateur réel, qui a été en cours d'exécution.
Ainsi, le compilateur réel nous allons utiliser la plupart des le semestre est quelque chose qui s'appelle clang.
Certains d'entre vous ont utilisé Visual Studio avant, ou GCC,
ou n'importe quel nombre d'autres compilateurs.
Nous utiliserons clang.
>> Et clang nous permet effectivement de convertir que le code source pour le code objet.
Qu'est ce que cela fait dans la pratique?
Eh bien, laissez-moi aller dans l'une des mes dossiers depuis la dernière fois.
A l'intérieur de l'appareil de CS50.
Et laissez-moi aller de l'avant et de créer ce même fichier, comprennent E / S standard point h.
Void main Int.
Et nous reviendrons à l'avenir à ce que int moyens et ce que signifie vides.
Mais pour l'instant nous allons faire bonjour barre oblique inverse du monde n,
Tout comme nous l'avons fait sur la carte.
>> Permettez-moi à sauver ce fichier appelé hello.c.
Et maintenant, si je veux compiler ce Je could-- laissez-moi un zoom avant terme in--
faire entrer bonjour.
Et ce message a été cette ligne très énigmatique.
Mais maintenant au moins un mot saute probablement hors de vous.
Clang est que la ligne que nous avons vu avant.
Maintenant, il ya un tas d'autres choses franchement que nous agitons nos mains à aujourd'hui.
Mais il ya quelques sous-ensembles, quelques personnages ici
qui présentent un intérêt.
Mais je vais aller de l'avant et le faire.
Je vais première manche bonjour, juste pour prouver
que ce soit en travaillant comme c'était lundi.
Mais maintenant, je vais supprimer le programme.
Et tout comme nous avons eu ces noms courts dernière fois,
la commande de suppression quelque chose est rm, supprimer, entrez.
Vous allez obtenir une certaine questions assez énigmatiques.
Difficile de croire que vous pouvez faire même cette question difficile à comprendre.
Mais enlever bonjour de fichier régulier seulement moyen voulez-vous supprimer bonjour.
>> Et je peux aller de l'avant et y saisir pour oui, Entrez, et maintenant il est parti.
Qu'est-ce que cela signifie maintenant, si je effacer mon écran,
est qu'au lieu d' faire faire hello-- vous
sais quoi, je suis en train de bon à cela.
Je vais courir le compilateur moi-même.
Je n'ai pas besoin un programme de comprendre ce que mon fichier est appelé.
J'ai écrit bonjour.c, je savoir ce que ça s'appelle,
Je suis bien capable de taper ça.
Donc, je vais aller de l'avant et ne clang bonjour.c Entrée.
>> Semble fonctionner.
Et il n'y a pas de sortie supplémentaire, parce cliquetis est le compilateur.
C'est ce qui la conversion de la le code source de zéros et de uns.
Donc, si je le fais maintenant dot réduire bonjour Entrez, hm.
Message d'erreur Nouveau aujourd'hui.
Donc, bash est juste le nom de la clignotement rapide que nous utilisons.
C'est une simplification grossière, mais pour l'instant c'est tout ce qui est,
c'est l'invite à clignoter.
Et c'est pourquoi il hurle à nous.
>> Aucun fichier ou le répertoire est un peu plus simple.
Mais sûrement que j'ai fait que le code objet.
Mais le hic, c'est que si je tape la commande
pour afficher le contenu de cette répertoire, qui est ce?
ls pour la liste.
Il ya un tas de choses ici, dont certains sont venus avec l'appareil,
comme mon dossier Bureau, Téléchargements dossier, dossier Dropbox, et tous
ce genre de choses.
Mais ce qui est intéressant est bonjour.c, qui
J'ai créé il ya un moment avec gedit.
Et ce qui est le plus singulier regardant nom ici,
peut-être que nous n'avons pas voir la dernière fois à tous?
>> a.out, non?
Donc, retour dans la journée, il a tout simplement décidé que lorsque
vous compilez un programme pour la première fois,
et vous ne spécifiez pas le nom d'un fichier, appelons-le un.
Et a.out signifie simplement que c'était la sortie du compilateur.
Donc, c'est un nom horrible pour un programme.
Mais cette logique, dot slash pour répertoire courant, slash a.out,
devrait signifier qu'il ya, en fait, bonjour mon programme mondial.
Maintenant un peu de réchauffer l'exercice, aussi.
Si je veux renommer ce fichier s'avère que vous
déplacer un fichier d'un nom à un autre.
A.out Donc mv, et puis je peut appeler bonjour Entrée.
Il s'agit donc d'une commande Linux.
DOS avait il ya des années, Windows a une fenêtre de terminal
de quelque sorte que l'air comme ça, Linux et Mac
ordinateurs ont cette invite à clignoter.
Même si la plupart d'entre nous sans doute rarement, sinon jamais, l'utiliser.
>> Mais ce que j'ai fait est exécuté une programme, dont le nom est mv,
et j'ai fourni avec deux arguments, pour ainsi dire.
Deux entrées.
a.out est le nom original.
Bonjour est le nouveau nom.
Donc, si je le fais maintenant slash dot bonjour, Entrée, cela existe.
Et si je le fais point barre a.out, que voulez-vous que je devrais voir?
>> Bash, aucun fichier ou répertoire.
Parce que je viens retitré.
Donc, cela prend un peu de temps pour s'y habituer.
Mais le problème réglé 1 cahier des charges sera vraiment
tenir la main par une partie de cette minutae.
Parce que c'est une complète distraction intellectuelle
à partir de la plus intéressante idées à portée de main, qui
est réellement créer quelque chose de code.
Mais nous allons faire une modification maintenant à ce programme.
>> Rappelons que la dernière fois que j'ai fait quelque chose de comme ça, indiquer printf votre nom.
Et en effet, nous avons juste fait ce sur le grand écran là-bas.
Et puis j'ai fait la chaîne s obtient GetString parenthèse ouverte, près parenthèse.
Et paren juste raccourci notation de parenthèse.
Donc ne GetString prendre des arguments?
Aucune entrée Non, mais il besoin des parenthèses,
parce que c'est ce délimite l'appel d'une fonction.
>> Donc, je vais aller de l'avant et essayer de exécuter le compilateur sur ce programme maintenant.
Clang bonjour.c, parce que je n'a pas changé son nom pour le moment.
Et j'ai eu un tas d'erreurs.
Disons rétrécir ici.
Si je fais défiler à nouveau, comme je l'ai dit la dernière fois,
à la première, même erreur que j'ai eu la dernière fois.
Sur la ligne 6 du bonjour.c j'ai eu un Chaîne d'identificateur non déclaré,
ai-je veux dire dans la norme?
Je n'ai pas.
Parce que ce que je n'ai erreur accomplis dans ce programme, si vous vous souvenez de la dernière fois?
Oui, nous avons besoin de l' soi-disant roues de formation
que nous allons simplement utiliser pendant quelques semaines.
Mais je dois préciser que aussi, quelque part à l'intérieur de l'appareil,
est un fichier qui nous écrit il ya seulement quelques années.
L'intérieur de laquelle sont des fonctions comme apparemment GetString.
Alors maintenant, si je reviens ici, zoom avant, et ré-exécuter clang hello.c.
Merde, une autre erreur.
Mais nous n'avons pas vu celui-ci avant.
>> Celui-ci est un peu plus ésotérique à comprendre.
Mais ce n'est délibérément sur l'écran, parce que nous voulions raconter cette histoire.
Lorsque vous compilez bonjour.c, tout comme l'image d'avant suggéré,
vous ne convertir que le code source de zéros et de uns.
Maintenant personnel CS50 il ya quelques années a écrit CS50.h, et un fichier correspondant,
CS50.c.
Et nous, il ya quelques années, ces fichiers compilées
dans un fichier qui se passe à appeler CS50.o.
>> Ou il peut être renommé une nombre de choses différentes.
Mais c'est un moyen simple de penser.
Donc, nous avons compilé CS50 de bibliothèque dans zéros et de uns.
Mais nulle part je n'ai spécifiée que je veux combiner mes zéros
et ceux pour mon monde de bonjour programme avec les zéros et de uns
que le personnel de CS50 créé quelques années Il ya dans un programme complet.
Tout ce que j'ai précisé par écrit bonjour.c clang est compiler hello.c.
>> Je n'ai pas dit à clang lien dans les zéros et de uns
que le personnel de CS50 créé pour vous il ya quelque temps.
Donc, c'est une solution facile, dash l pour le lien, CS50.
Et nous voyons encore ce avant longtemps encore et encore.
Mais remarquez maintenant il n'y avait rien à redire.
Alors maintenant, si je n'ai point barre bonjour, maintenant ça marche.
Bien que c'est un peu trompeur puisque je viens recréé ce fichier?
a.out.
>> Permettez-moi de rembobiner pour un instant.
Le programme que nous venons compilé a trois lignes de code.
Quand j'ai couru Bonjour tout le monde, bonjour un moment Il ya, je ne vois pas d'indiquer votre nom.
Et c'est parce que j'ai couru l' ancienne version du programme.
Mais si je ne fait courir point barre a.out Entrez, indiquez votre nom, Rob, bonjour,
monde.
Hm.
C'est une sorte de bug.
Signifiait probablement dire Rob, non?
Alors, quelle est la solution ici dans le code.
ETUDIANT: [inaudible].
DAVID Malan: Exactement.
Donc, je dois juste faire ce tweak finale de sorte que je suis de passage dans un espace réservé,
comme un remplissage dans le vide, comme nous l'avons fait il ya un moment.
Mais pour cent s est maintenant que remplir le vide.
Donc, nous allons enfin de révéler une dernière détail de sorte qu'il n'y a pas de magie.
Je vais aller de l'avant et de se débarrasser de hellow.
Je vais aller de l'avant et de se débarrasser de a.out.
Alors maintenant, je n'ai pas de programmes, juste mon code source.
Et je vais courir un un peu plus longue commande, clang
tableau de bord o bonjour bonjour.c tiret LCS50.
>> Maintenant, cela commence à aller sorte de dans une oreille et sort par l'autre peut-être.
Mais juste taquiner à part ce que cela fait.
Clang est le compilateur, tableau de bord LCS50 délibérément à la fin
fait quoi dans une phrase?
Liens à la bibliothèque CS50.
Saisit les zéros et ceux que le personnel fait
et les CRAM dans mon propre programme.
Ainsi, la dernière question qui se pose est, ce qui est tableau de bord o bonjour probablement
faire, même si vous n'avez jamais vu cette syntaxe avant?
>> Sortie d'un programme qui est pas nommé a.out par défaut.
Au contraire, il est nommé bonjour.
Alors maintenant, il n'y a pas a.out.
Aucun fichier ou répertoire de ce nom, parce que je dis explicitement
appeler ce programme bonjour, de sorte que Je peux maintenant saisir un nom comme ça
et le faire se comporter.
>> Maintenant, franchement, mon garçon, c'est que sans intérêt d'avoir
de se rappeler tout cela peu minutie, non?
Donc, nous allons aller de l'avant et se débarrasser de bonjour de nouveau.
Et revenons maintenant à un monde qui il suffit de dire bonjour faire.
Mais c'est la magie qui faire est fait pour vous,
c'est l'ennui qui il est fait pour vous.
Et comme nos programmes et problèmes deviennent plus complexes,
faire va vraiment être votre ami.
Parce que pas trop longtemps à partir de maintenant, nous allons
d'avoir des programmes qui sont écrits pas avec un fichier, mais plusieurs fichiers,
et de faire permettra d'automatiser le processus de compiler tout cela pour nous ensemble.
>> Alors maintenant imprimer.
printf est à l'intérieur de ce fichier, norme I / O point h, que nous avons vu auparavant,
mais il ya plus à printf que cela.
Il ya barre oblique inverse n, mais il ya aussi un tas d'autres séquences d'échappement.
Et la séquence d'échappement est juste un façon élégante de dire quelque chose
qui commence par une barre oblique inverse, pas une barre oblique, une barre oblique inverse,
et fait quelque chose de spécial.
Et nous ne nous attarderons pas sur la plupart d'entre eux, mais pourquoi est-il anti-slash guillemets,
pensez-vous?
Pourquoi cette séquence bizarre de caractères, barre oblique inverse guillemets,
pourquoi cela pourrait-il être utile?
ETUDIANT: [inaudible].
DAVID Malan: Exactement, non?
Pensez à notre programme mondial de bonjour que nous avons vu à quelques reprises maintenant,
chaque fois que nous avons vu ce monde de bonjour programme, nous avons eu des guillemets à l'intérieur
de ce qui est bonjour virgule monde oblique n.
Mais pensez à vous-même, si vous avez réellement
voulu imprimer un guillemet?
Votre premier réflexe pourrait être, je ne sais pas savoir pourquoi je pourrais vouloir do-- ici,
nous pouvons être un peu passive agressif, bonjour ami.
Nous pourrions faire quelque chose comme ça.
>> Mais pourquoi est-ce maintenant problématique?
Ignorant les guillemets courbes de côté que principal fait pour nous automatiquement.
Pourquoi est-ce problématique?
>> Exactement.
Parce que nous avons comme 4 guillemets.
Eh bien, le premier sans doute va de pair avec la deuxième,
et peut-être la quatrième va de pair avec la troisième,
ou, je veux dire que je ne suis même pas sûr, ni l'ordinateur va être.
Ordinateurs de nouveau, les compilateurs encore une fois, sont assez muet.
Ils ne font que ce vous leur dites de faire.
Et si vous n'êtes pas sans ambiguïté, il vont probablement une erreur.
>> Si vous n'êtes pas sans ambiguïté sur la façon de faire un beurre d'arachide et sandwich à gelée
des choses étranges peuvent arriver.
C'est la même idée.
Maintenant, il suffit de dire qu'il n'y a d'autres séquences d'échappement,
mais nous reviendrons à ceux avant longtemps.
Il s'agit essentiellement de fuite séquences représentent quelque chose
que vous pourriez ne pas être en mesure trop facilement au clavier,
sans confondre l'ordinateur.
>> Maintenant, en attendant, nous avons des espaces réservés dans printf.
Pour cent d, qui peut aussi s'écrire dans presque tous les cas que pour cent i,
est un espace réservé pour ce type de données?
Quel type de valeur?
Un certain nombre décimal.
Donc, en fait, nous allons commencer en utilisant pour cent i parce que c'est
un peu plus simple, comme un nombre entier.
I pour cent.
Un entier qui se trouve être décimal.
>> Pour cent s nous avons déjà dit était un espace réservé pour une chaîne.
Qui est juste un mot, une phrase, un paragraphe, un essai, peu importe.
Il s'agit d'une séquence de les caractères d'une certaine longueur.
Et nous verrons avant longtemps certains de ces autres.
Mais pour cent c est pour un seul caractère.
Pour cent f est un nombre à virgule flottante,
comme un nombre réel qui a un point décimal en elle, qui
n'est bien sûr pas un nombre entier.
Et il ya toute une tas d'autres aussi.
>> Pendant ce temps dans C, et dans beaucoup de langues,
nous avons différents types de données.
Différents types d' verre bols si vous voulez.
Le bol j'ai utilisé la dernière fois était pour des balles de ping-pong,
mais nous pouvons également stocker différents des valeurs comme les caractères et les chaînes
et des nombres entiers dans un récipient, comme une variable, et C a ces derniers.
Char est le type de données, le type de variable,
dans lequel vous pouvez stocker un caractère.
Flotteur est un type de variable en lequel vous pouvez stocker un nombre réel.
>> Int est bien sûr pour un int.
Et plutôt ridiculement nommé un long long
C'est là que vous pouvez stocker l'essentiel un très long nombre, même avec
plusieurs chiffres alors un typique peut stocker int.
Mais nous y reviendrons qu'avant longtemps.
>> Dans CS50 point h en attendant l'autre fichier d'en-tête
que nous avons vu un couple fois en utilisation, il n'y a
deux autres types de données que n'existent pas en C habituellement.
Une est une chaîne, et nous verrons dans quelques semaines ce que les cordes vraiment
sont sous le capot.
Et on est bool.
Et un bool est une variable qui ne peut prendre sur certaines valeurs.
Et sur la base de la semaine dernière explication de Scratch,
C et, plus récemment, que feriez-vous deviner
sont les deux valeurs possibles pour certains conteneur qui est de type bool?
>> Oui et non.
Un et zéro.
Vrai ou faux.
Et en effet, c'est la dernière qui tend pour être classique dans une programmation
langue, dire quelque chose comme vrai ou faux.
>> Pendant ce temps la bibliothèque CS50 vient avec un tas de fonctionnalités
que le personnel a écrit pour vous, mais pas seulement obtenir une chaîne.
Nous avons écrit à la fonction d'avance que peut obtenir un nombre entier de l'utilisateur,
obtenir un seul caractère, obtenir un flotteur, qui
est juste un nombre avec le point décimal.
Obtenez un long long, un très grande valeur à partir de l'utilisateur.
Donc, nous avons vu que ce à action sous la forme de GetString.
Mais ces fonctions par l'intermédiaire d' sera bientôt en mesure d'écrire
des programmes qui donnent entrée de l'utilisateur.
>> Pendant ce temps examiner ce programme, et envisager
comment nous pourrions maintenant commencer à ajouter à elle avec de nouvelles constructions.
Un petit tour tourbillon puis nous verrons
à un écrit certains programmes manuellement nous-mêmes.
Désormais, si nous voulons mettre en place une condition,
ça ne va pas ressembler à un joli petit joli morceau de puzzle.
Il va chercher un peu plus obscur.
Mais c'est la canonique Structure d'une condition dans C.
>> Le mot si, deux entre parenthèses, à l'intérieur de laquelle
va être une sorte d'expression booléenne.
Maintenant, la barre oblique dans le milieu, c'est
au moment un peu comme Code pseudo espace réservé.
Mais plus correctement, une ligne de code en C qui commence par slash slash
est un commentaire.
>> C'est comme un pense-bête que vous pourriez mettre sur un essai, imprimé sur du papier.
C'est une note à vous-même.
Elle n'a pas de fonction impact sur le programme.
C'est une sorte de rappel, c'est votre propre documentation à ce qui se passe.
Donc, le faire à l'heure actuelle est une sorte de marque de réservation
pour tout ce qui est à l'intérieur de ces accolades
finirait par faire quelque chose.
>> En attendant, vous avez deux fourchettes dans le route, un autre si construire comme ça.
Vous pouvez si, elseif, autre.
Maintenant, il est intéressant de noter, en particulier si vous avez été googler autour
en ligne de ressources sur curiosité, ou si vous prenez
l'un des cours de livres recommandés sur C,
vous verrez que les humains ont beaucoup des préférences différentes sur la façon dont
de s'exprimer dans le code.
Certaines personnes aiment mettre la accolades comme je l'ai fait ici.
Certaines personnes aiment mettre le bouclés accolades, par exemple ici.
>> Certaines personnes aiment mettre la elses ici et ceci ici.
Il ya un certain nombre de façons de écrire du code, et aucun d'eux
sont juste en soi.
Bien qu'il y ait un peu qui sont assez mal.
Mais il existe no-- si c'est finalement, un débat très religieux.
En fait, l'un des plus ennuyeux choses sur l'informatique
comment opiniâtre les informaticiens peuvent être.
Et vous trouverez plus de temps que même vous développez préférences personnelles
sur la façon dont votre code devrait ressembler.
>> Non seulement se comporter, non seulement de créer une sortie, mais comment il devrait ressembler esthétiquement.
Donc, ce que nous allons faire est de vous guider tout au long la voie vers, pour l'instant du moins,
un style de CS50 standard au moins garde tout uniforme et facile à lire.
Mais plus sur les distinctions avant longtemps.
>> Une expression booléenne en C, si vous voulu dire si cette condition est vraie
et cette autre condition est vrai, vous n'écrivez pas le mot
et, comme vous le feriez en anglais.
Vous utilisez à la place esperluette esperluette, pour des raisons que nous allons revenir à.
Si vous voulez dire ou vous utilisez deux barres verticales, qui sur un clavier américain
est généralement supérieure à la Saisissez touche à côté de la barre oblique inverse.
Et cela signifie que si cette condition ou cette autre condition est vraie faire.
>> Pendant ce temps, il ya cette Ce qui est fou, qui
vous aurez l'occasion à utiliser une fois de temps en temps.
Mais c'est juste une alternative façon de vous exprimer.
Ce, pour l'instant, nous allons précise, c'est juste
une autre manière géniale d'exprimer si, elseif, elseif, elseif, elseif.
C'est juste formaté en termes des cas, où vous littéralement
énumérer les valeurs qui vous voudrez peut-être vérifier.
>> Pendant ce temps les boucles.
Nous avons vu une comparaison des Grattez avec une boucle.
Et je vais agiter ma main à ce que chacun de ces choses signifie.
Mais remarquez qu'une boucle sera très commencent souvent avec le mot-clé pour.
Ou il va commencer avec le mot-clé tout.
Ou il va commencer avec le mot-clé faire, et se terminer par le mot-clé tout.
>> Mais ce que nous sommes sur le point de voir est des choses plus comme ça.
Voici, en général en C, comment vous pourriez déclarer une variable et lui donner une valeur.
En C, il ne suffit pas, comme dans Scratch, il vous suffit
dire me donner une variable appelée quelque chose.
Vous devez dire à C, et dites le compilateur, et plus spécifiquement,
quel type de valeur que vous faire vouloir mettre dans le bol en verre.
>> Est-il un nombre entier?
Si c'est le cas, vous devez dire littéralement int puis
le nom de la variable, puis un point-virgule.
Si vous voulez à la place chaîne et appelé il s comme je le faisais mon code ici aujourd'hui,
vous diriez la virgule chaîne de.
Une fois que vous voulez lui donner une valeur vous pouvez ensuite utiliser le signe égal,
autrement connu sous le nom opérateur d'affectation.
Et remarquez comment chaque de ces lignes de code
a le point-virgule à la fin de celui-ci.
>> Mais franchement ce juste semble un peu laid.
Pourquoi ne puis-je pas dire à l'ordinateur, donner moi une variable et l'initialiser à zéro.
C'est à dire, donnez-moi un bol en verre vide.
Alors que vous pouvez.
Et si l'un de l'arrêt vous appelle y avoir à faire stylistique au fil du temps
est-ce que vous écrivez votre code comme ceci, ou ne vous sorte de nettoyer et impressionner
les gens en écrivant deux lignes comme un seul.
Et cela serait considéré comme généralement une façon plus élégante
d'écrire votre code stylistique.
>> Fonctions nous sommes bien sûr vu.
Ils vont prendre ce format.
Le nom d'une fonction, certains parenthèses, et puis peut-être un peu
choses à l'intérieur.
Ou vous pourriez voir des utilisations de multiples fonctions côté
de l'autre, quelque chose comme ça.
Or, comme une tangente, ne cette blague maintenant un sens?
>> [Rires]
Cela ne signifie pas que c'est drôle, mais il ne fait peut-être un peu plus de sens.
Alors maintenant, nous allons passer à la appareil CS50 pour un moment.
Et permettez-moi de m'ouvrir un teaser de ici.
>> Et en effet, l'une des raisons pour introduire catalogue IKEA
et clignoter l'image de l'iPhone il ya un peu
était réellement attacher dans ensemble le fait que il ya quelques années, en 2007,
ce morceau de code était libéré, qui a été
l'un des tout premier la mise en œuvre d'une pièce de logiciel
que fait ce qu'on appelle jailbreaking.
Pour ceux qui ne connaissent, jailbreaking quelque chose comme un téléphone ou un iPhone
signifie essentiellement déterminer comment faire les choses
avec elle que la société qui a fait qu'il n'a pas l'intention.
Comme vous voulez installer certains un logiciel qui n'est pas dans l'app store,
jailbreaking votre téléphone qui vous faites les choses comme cela et plus encore.
Mais ce qui était amusant dans 2007-- et il ya eu
des dizaines de versions différentes de ces choses depuis,
dans toutes sortes de languages-- est que ce programme ici, appelé iUnlock,
a été effectivement écrit en C. Et donc je tiré vers le haut le code source pour cela,
juste pour montrer gentil de votre part quelques-uns des les similitudes avec les constructions
nous avons discuté jusqu'à présent.
Maintenant, il ya beaucoup plus de complexité ici que nous avons déjà vu en classe.
Permettez-moi de défiler vers le haut un peu ici.
>> Mais remarquons these-- bien nous remarquons quelques-uns things-- de remarquer ces lignes ici,
y compris E / S standard point h.
Et tous-- ligne 24, please-- remarquerez E / S standard
point h et tout un tas d'autres Les fichiers qui apparemment d'autres personnes
ont écrit.
Et si nous faisons défiler à travers ce, peu arbitrairement,
Remarquez que je ne sais pas comment écrire tout cela me forcément encore,
mais il ya si.
Donc, apparemment, cela a une branche.
>> Et si je défiler vers le bas un peu en outre il ya une autre si.
Si je fais défiler, je pense autour de la ligne 100, j'ai vu pour.
Donc, je ne suis pas sûr comment cela fonctionne encore,
mais c'est une boucle qui va permettez-moi de itérer un nombre de fois.
Et si je fais défiler tous le chemin vers le bas
Je vois qu'il ya une fonctionner ici appelé
principal, et des crédits supplémentaires pour votre plaisir de lecture.
>> Donc ce n'est à say-- et nous allons mettre cette ligne entre la source du cours
Code today-- que même certains d'entre eux dispositifs que nous prenons pour acquis,
à la fin de la journée, vous êtes toujours l'utilisation de ces structures de base que nous avons
été l'introduction déjà à ce jour.
C'est assez de celui-là.
Très bien, alors maintenant nous allons fait construire quelque chose.
>> Allons au-delà de quelque chose comme bonjour.c, et d'ouvrir ce,
Écrivons ce programme ici.
Je vais aller de l'avant et écrire un programme appelé adder.c,
dont le but dans la vie va être comme mon premier calculateur super simple
qui ajoute juste un couple de nombres.
Non parce que c'est un disque problème, mais parce qu'il
me permet d'attacher maintenant ensemble un certain nombre de choses.
Donc, je vais aller de l'avant et inclure Je / S standard dot h et CS50 point h.
Je vais dire void main int.
Et à l'avenir nous reviendrons sur ce
dans dans ce contexte et des moyens de vide.
>> Et maintenant, je vais dire quelque chose comme printf, donnez-moi un entier.
Et maintenant sur mon deuxième ligne, comment puis-je m'exprime comme
que je tiens à déclarer une variable cela va stocker un int?
Littéralement qu'est-ce que je tape si je veux créer une variable qui stocke un int
diriez-vous?
int une égale getint.
Bien sûr, si cela fonctionne.
Et juste pour la cohérence avec le code que vous aurez
voir en ligne, laissez-moi le changement ce à x, juste parce que x
est un nom de variable commune d'utiliser, au moins en algèbre.
Maintenant, laissez-moi aller de l'avant et ne printf nouveau.
Donnez-moi un autre entier.
Et maintenant, je vais genre de tirer des leçons de ce modèle,
Je vais dire int y arrive à getint.
>> Et nous n'avons pas l'habitude Getint avant, mais juste
comme GetString va chercher une chaîne, comme Javier a fait de l'auditoire,
fait de même getint commence à clignoter l'invite.
Et effectivement attente pour l'utilisateur pour lui donner un entier, en le tapant dans
et en appuyant sur Entrée.
Maintenant, enfin je vais faire ce, la somme printf de--
et laissez-moi maintenant-- fantaisie i pour cent pour cent et i est présente
i point d'exclamation barre oblique inverse n.
Et qu'est-ce que vous pensez que je vais mettre en maintenant que les entrées supplémentaires
à printf?
>> Je ne veux pas dire citer littéralement x Unquote.
Je veux classe en x et alors, et maintenant passons fantaisie
et supposons que nous pouvons faire ce que nous voulons.
Ce que vous voulez dire par la suite?
x + y.
Et en effet, cela fonctionnera.
Il est peu langages de programmation faire comprendre l'arithmétique de base,
et si cela ne devrait en fait le travail.
>> Alors laissez-moi aller de l'avant et ne fais additionneur à ma fenêtre en noir et blanc
ici-bas, Entrée.
Ligne Cryptic mais aucune erreur message, de sorte que c'est bon.
Dot slash additionneur, donne-moi un entier, 1.
Donnez-moi un autre entier, 2.
La somme de 1 et 2 est de 3.
>> Très bien, alors un assez trivial programme, mais qu'est-ce qu'il fait?
Il m'a permis d'utiliser une fonction appeler ici, appeler une autre fonction ici,
deux appels à getint, un troisième appel à printf,
et puis en utilisant ces espaces réservés.
C'est donc un peu plus sophistiquée que la dernière fois.
Mais si je veux obtenir un peu de fantaisie?
>> Permettez-moi aller de l'avant et maintenant fais.
Permettez-moi d'aller de l'avant et créer un nouveau fichier appelé conditions zéro.
Et je vais sauver un peu de temps pour l'amour de cours
et il suffit de coller dans ce un code de point de départ.
Et maintenant, je vais juste mettre quelque chose de nouveau dans le milieu.
Donc printf J'aimerais un entier s'il vous plaît.
Et tout ce code est disponible sur le site Web de la formation,
vous n'avez pas besoin de taper tout ça en classe si vous ne souhaitez pas.
int, et maintenant je vais utiliser, à la place de x et y,
Je vais utiliser n, qui est probablement le nom le plus commun
pour un nombre entier dans un programme informatique.
Et maintenant, je veux faire un peu de jugement ici.
Je vais voir si n est supérieur à 0, puis
Je vais dire oups printf--, printf-- vous avez choisi un nombre positif,
point d'exclamation barre oblique inverse n.
Fermez cela.
Sinon je vais imprimer printf vous avez choisi un nombre négatif.
>> Maintenant, avant de vous criez à moi, lançons ce programme.
Permettez-moi de descendre ici.
Et comment puis-je compiler un programme appelé conditions tiret 0?
Faire conditions tiret 0.
Genre d'un nom stupide, mais-- merde.
OK, bon moment d'enseignement.
Pourquoi cela ne pause?
>> Qu'est-ce que j'appelle accidentellement ce fichier?
Vous pouvez sorte de déduire partir de l'onglet ici.
Donc, il n'est pas mauvais que je fait cela, parce que ce
qui se passera peut-être à certains d'entre vous.
Donc j'ai accidentellement appelé mon Code source de l'état 0.
Mais mon code source par convention devrait être dans un fichier appelé condition 0 tiret c,
ou quelque point c.
>> Permettez-moi de résoudre ce problème.
Tout comme Microsoft Word, je peux aller jusqu'à sur Enregistrer sous et faire état 0 point c.
Maintenant, il suffit d'être bien rangé je suis aller de l'avant et retirez
état 0, ce qui était mon ancienne version.
Et maintenant, ne font condition 0, Entrée.
OK, semble bon.
>> Condition 0, Entrée.
J'aimerais un entier s'il vous plaît, 50, vous avez choisi un nombre positif.
Maintenant, que diriez-négative 50?
Vous avez choisi un nombre négatif.
Que diriez-vous maintenant, 0.
Sûr que 0 n'est pas négatif.
>> Donc, c'est une sorte de bug logique.
Comment puis-je résoudre ce problème?
Sinon, si n est inférieur à 0, le faire, d'autre nous pouvons avoir une branche à trois voies ici,
printf vous avez choisi 0.
Alors maintenant, si je ReRun ce programme, après la compilation, il
nouveau avec la marque, et maintenant relancer état 0, ce que je vais voir ici
est 0 me donne cette sortie.
Alors, où allons-nous avec ça?
>> Eh bien, il est très facile de perdre de vue de la forêt pour les arbres.
Et si nous permettent de conclure avec ce 2 et 1/2 minute vidéo
qui est finalement un peu d'une annonce de Google,
mais c'est vraiment preuve de ce même en utilisant ces bâtiments de base
blocs, nous pouvons finalement faire une fois nous avons un peu de programmation
savvy sous nos ceintures.
>> [MUSIQUE LECTURE]
>> Saroo BRIERLEY (voix off): C'était il ya 26 ans,
et j'étais sur le point de tourner 5.
Nous sommes arrivés à la gare et nous avons pris notre train ensemble.
Mon frère vient de dire je vais rester ici, et je reviendrai.
Et je pensais juste que, vous le savez bien, Je pourrais aussi bien aller juste pour dormir
et il va juste me réveiller.
Et quand je me suis réveillé le lendemain jour, l'ensemble de chariot
était vide sur un train fou, un fantôme train de me prendre, je ne sais pas où.
>> J'ai été adopté à l'Australie, pour une famille australienne.
Et maman avait décoré mon séjour avec la carte de l'Inde,
qui elle a mis à côté de mon lit.
Je me suis réveillé chaque matin voir cette carte, et donc
il sorte de garder les souvenirs vivants.
Les gens diraient, vous êtes essayer de trouver une aiguille
dans une botte de foin, Saroo vous ne le trouverez jamais.
>> J'aurais flashé des endroits que je l'habitude d'aller, les éclairs de ma famille
visages.
Il était l'image de ma mère, assis les jambes croisées,
il suffit de regarder son cri.
La vie est tellement difficile.
C'était mon trésor.
Et je cherchais à Google Map et réalisé il ya Google Earth ainsi.
Dans un monde où vous pouvez zoomer sur, J'ai commencé à avoir toutes ces pensées
et quelles sont les possibilités que cela pourrait faire pour moi.
Je me suis dit, vous le savez, vous avez eu tous ces souvenirs photographiques
et des sites où vous êtes, et vous savez ce que la ville ressemble.
Cela pourrait être une application qui vous pouvez utiliser pour retrouver votre chemin.
>> J'ai pensé, eh bien je vais mettre un point sur la gare de Calcutta,
et une ligne de rayon, vous savez, que vous devrait être à la recherche autour de cette zone.
J'ai en quelque sorte tombé ces voies ferrées.
Et j'ai commencé à suivre, et Je suis venu à une station de train qui
reflète la même image c'était dans mes souvenirs.
Tout en correspondance.
J'ai juste pensé que oui, je savoir où je vais.
Je vais juste laisser le carte que j'ai dans ma tête
me conduire et me ramener à ma ville natale.
>> Je suis venu à la porte de la maison où je suis né.
Et fait le tour de 15 mètres autour du coin,
il y avait trois dames debout à l'extérieur, à côté de l'autre.
Et celui du milieu s'avança, et J'ai juste pensé, c'est votre mère.
Elle s'avança, elle m'a embrassé, et nous étions là pendant environ cinq minutes.
>> Elle a attrapé ma main et elle m'a emmené à la maison
et a obtenu sur le téléphone, où elle sonné, ma sœur et mon frère
de dire que, vous le savez, ton frère a juste
tout d'un coup apparu comme un fantôme.
Et puis la famille était réunie à nouveau.
Tout va bien, J'ai aidé ma mère à,
elle n'a pas à être trimer.
Elle peut vivre le reste de sa vie en paix.
>> C'était une aiguille dans une botte de foin, mais l'aiguille était là.
Tout est là.
Tout ce que nous avons dans le monde est au robinet d'un bouton.
Mais vous devez avoir la volonté et la détermination à vouloir.
>> [MUSIQUE LECTURE]
DAVID Malan: Merveilleusement témoignage douce
à tout ce que vous pouvez maintenant faire avec la technologie.
Nous nous reverrons la semaine prochaine.