1 00:00:00,000 --> 00:00:00,160 2 00:00:00,160 --> 00:00:04,010 >> INTERLOCUTEUR 1: Je me sens comme j'ai tendance à écrire printf Bonjour tout le monde ou printf 3 00:00:04,010 --> 00:00:08,160 bonjour pour cent s souvent dans des contextes où je veux imprimer un 4 00:00:08,160 --> 00:00:11,360 chaîne, demandant parfois l' partie utilisateur de cette chaîne. 5 00:00:11,360 --> 00:00:14,980 Eh bien, ça ne serait pas bien si nous avons créé en fonction de notre propre appelé, 6 00:00:14,980 --> 00:00:19,900 dire, nom d'impression, dont le but dans la vie est tout simplement à imprimer bonjour virgule 7 00:00:19,900 --> 00:00:24,560 tant et si en acceptant la soi-and-so comme un argument à cette fonction? 8 00:00:24,560 --> 00:00:29,220 Nous pouvons déclarer une fonction de notre propre tout comme nous pouvons en Scratch comme suit. 9 00:00:29,220 --> 00:00:35,280 >> En d'autres termes, suppose que je voudrais printf votre nom, puis demander à l'utilisateur 10 00:00:35,280 --> 00:00:39,470 pour son nom avec de la ficelle s est égal à GetString. 11 00:00:39,470 --> 00:00:42,060 Et puis je veux appeler une fonction appelé nom d'impression 12 00:00:42,060 --> 00:00:44,340 passer un s comme entrée. 13 00:00:44,340 --> 00:00:47,770 >> Maintenant, malheureusement, il n'y a pas de fonction appelé nom d'impression en C ou en 14 00:00:47,770 --> 00:00:48,950 la bibliothèque de CS50. 15 00:00:48,950 --> 00:00:51,220 Mais peu importe, parce que nous peut faire nous-mêmes. 16 00:00:51,220 --> 00:00:54,560 Pour déclarer une fonction de notre propre et puis mettre en œuvre, nous ne pouvons tout simplement faire 17 00:00:54,560 --> 00:00:59,000 une certaine marge dans ce dossier et déclarer cette fonction comme suit, vide - 18 00:00:59,000 --> 00:01:01,900 ce qui signifie que la fonction n'est pas passe réellement à retourner quelque chose, 19 00:01:01,900 --> 00:01:03,890 même si elle aura un effet secondaire - 20 00:01:03,890 --> 00:01:08,030 imprimer le nom, et puis nous allons préciser dans parenthèses ce nom d'impression s'attend à une 21 00:01:08,030 --> 00:01:09,680 argument de type chaîne. 22 00:01:09,680 --> 00:01:12,180 Et en général, nous pensons de ce que en tant que nom. 23 00:01:12,180 --> 00:01:15,140 >> Et nous allons ouvrir notre accolade et fermer notre accolade. 24 00:01:15,140 --> 00:01:21,930 Et puis printf intérieur bonjour virgule nouveau nom de ligne de virgule pour cent. 25 00:01:21,930 --> 00:01:24,570 En d'autres termes, même si ce fonction est une seule ligne de code, il 26 00:01:24,570 --> 00:01:27,290 ne disposent maintenant d'supérieur fin de niveau à imprimer 27 00:01:27,290 --> 00:01:28,950 le nom de quelqu'un avec une salutation. 28 00:01:28,950 --> 00:01:33,115 >> Maintenant à l'intérieur de principal, remarque que je suis nom de l'appelant d'impression en passant un s. 29 00:01:33,115 --> 00:01:35,830 Et il me semble maintenant avoir un programme complet. 30 00:01:35,830 --> 00:01:38,650 La seule différence étant des autres nous avons écrit est que non seulement 31 00:01:38,650 --> 00:01:42,480 ce programme ont principale, il a également un déclaration et la mise en œuvre de 32 00:01:42,480 --> 00:01:44,740 nom d'impression, en fonction de ma propre. 33 00:01:44,740 --> 00:01:49,505 >> Compilons maintenant mon programme avec make fonction zéro, et l'exécuter avec le point 34 00:01:49,505 --> 00:01:51,080 réduire la fonction zéro. 35 00:01:51,080 --> 00:01:53,390 Lorsque vous êtes invité à mon nom Je vais taper dans David. 36 00:01:53,390 --> 00:01:55,830 Et je suis bien accueilli avec "Bonjour, David." 37 00:01:55,830 --> 00:02:00,160 >> Maintenant, il s'avère que je délibérément déclarée nom d'impression ci-dessus principal, 38 00:02:00,160 --> 00:02:03,860 ce qui indique à C à l'avance qu'il y existe une fonction appelée impression 39 00:02:03,860 --> 00:02:06,930 nom pour que je puisse utiliser plus tard dans le principal. 40 00:02:06,930 --> 00:02:11,610 Maintenant, si j'avais la place mettre le nom d'impression à le fond de mon dossier, que franchement, je 41 00:02:11,610 --> 00:02:15,310 devrait probablement faire de sorte que les principaux vestiges la première chose que j'ai ou 42 00:02:15,310 --> 00:02:18,450 un autre utilisateur voit dans mon code, il s'avère que mon code est 43 00:02:18,450 --> 00:02:19,780 ne va pas à compiler. 44 00:02:19,780 --> 00:02:23,610 >> Plus précisément, si je reviens à ma fenêtre de terminal et exécutez make fonction 45 00:02:23,610 --> 00:02:26,120 maintenant zéro, notez que je crié. 46 00:02:26,120 --> 00:02:30,340 Si je fais défiler dans ma fenêtre de terminal, Je vois cette première erreur en rouge, 47 00:02:30,340 --> 00:02:33,120 déclaration implicite de fonction nom d'impression. 48 00:02:33,120 --> 00:02:34,220 >> Maintenant, qu'est-ce que cela signifie? 49 00:02:34,220 --> 00:02:37,190 Eh bien, même si j'ai mis en œuvre imprimer nom dans ce dossier, je n'ai pas 50 00:02:37,190 --> 00:02:40,080 mis en place avant que je n'ai utilisé en principal. 51 00:02:40,080 --> 00:02:43,160 Maintenant, nous pourrions revenir à l'ancien la version et le nom d'impression de mettre 52 00:02:43,160 --> 00:02:44,450 haut jusqu'à la mise en œuvre. 53 00:02:44,450 --> 00:02:48,730 >> Mais je peux au lieu juste donner un indice C qu'il ya une fonction à venir. 54 00:02:48,730 --> 00:02:55,390 Plus précisément, au-dessus principal je peux déclarer imprimer le nom comme je l'ai déjà fait, mais 55 00:02:55,390 --> 00:02:59,450 terminer la ligne par un point virgule, ce qui promettant de mettre en œuvre, mais pas encore 56 00:02:59,450 --> 00:03:02,180 la mise en œuvre effectivement la fonction appelé nom d'impression. 57 00:03:02,180 --> 00:03:05,860 Je peux alors principal en haut de mon déposer comme je l'espère, et je ne peux réellement 58 00:03:05,860 --> 00:03:07,440 mettre en œuvre nom d'impression en bas. 59 00:03:07,440 --> 00:03:12,860 >> Si je reviens à ma fenêtre de terminal et recompiler la fonction zéro avec le maquillage, 60 00:03:12,860 --> 00:03:14,390 cette fois, il compile. 61 00:03:14,390 --> 00:03:18,240 Et si je le lance avec la fonction oblique point zéro fournir mon nom, je suis 62 00:03:18,240 --> 00:03:20,650 saluée comme "Bonjour, David." 63 00:03:20,650 --> 00:03:22,268