1 00:00:00,000 --> 00:00:12,510 2 00:00:12,510 --> 00:00:13,870 >> ROB: Oke. 3 00:00:13,870 --> 00:00:16,770 Welkom bij het eerste deel. 4 00:00:16,770 --> 00:00:17,480 Ik ben Rob. 5 00:00:17,480 --> 00:00:18,806 >> JOSEPH: Ik ben Jozef. 6 00:00:18,806 --> 00:00:21,540 >> ROB: Dus we recht in duiken 7 00:00:21,540 --> 00:00:23,420 Eerste ding om te praten over is de Appliance. 8 00:00:23,420 --> 00:00:27,150 Dus hopelijk de meeste van jullie hebben gedownload reeds. 9 00:00:27,150 --> 00:00:37,180 Maar je kunt de instructies bij cs50.net/appliance. 10 00:00:37,180 --> 00:00:38,430 Oh god, nu ben ik zelfbewust. 11 00:00:38,430 --> 00:00:44,590 12 00:00:44,590 --> 00:00:45,430 Ik hoor het nog steeds. 13 00:00:45,430 --> 00:00:47,232 >> JOSEPH: Wow, het klinkt als het is gedesoriënteerd. 14 00:00:47,232 --> 00:00:52,460 >> ROB: Dus sommige mensen hebben gehad problemen mee, dus wacht niet tot 15 00:00:52,460 --> 00:00:54,940 de laatste minuut van het probleem ingesteld op proberen en het oplossen van het apparaat en 16 00:00:54,940 --> 00:00:56,320 vinden dat het niet werkt. 17 00:00:56,320 --> 00:00:59,010 >> JOSEPH: En als er iets niet werkt en je hulp nodig hebt, kunt u naar 18 00:00:59,010 --> 00:01:03,390 cs50.net/discussion waar we hebben een forum waar u 19 00:01:03,390 --> 00:01:04,110 kunt uw vragen. 20 00:01:04,110 --> 00:01:06,655 En we zullen uiteindelijk om ze te krijgen. 21 00:01:06,655 --> 00:01:07,490 >> ROB: Oke. 22 00:01:07,490 --> 00:01:12,180 Dus dit is wat de Appliance eruit ziet. 23 00:01:12,180 --> 00:01:15,480 Nogmaals, het is gewoon een volledig gescheiden besturingssysteem dat binnen 24 00:01:15,480 --> 00:01:19,440 welk besturingssysteem u draaien op uw laptop. 25 00:01:19,440 --> 00:01:24,450 En de belangrijkste dingen die je worden met behulp van zijn gedit. 26 00:01:24,450 --> 00:01:28,050 Dus hopelijk heeft dit al uitgegroeid tot een vertrouwde website. 27 00:01:28,050 --> 00:01:29,470 De terminal. 28 00:01:29,470 --> 00:01:31,890 >> En u kunt ook Chrome draaien binnen de Appliance. 29 00:01:31,890 --> 00:01:33,860 Er zijn een paar mensen geweest die internet hebben gemeld 30 00:01:33,860 --> 00:01:35,390 niet in de Appliance. 31 00:01:35,390 --> 00:01:38,090 En sommigen van hen hebben net aangenomen dat er niet hoort te zijn 32 00:01:38,090 --> 00:01:39,190 internet in de Appliance. 33 00:01:39,190 --> 00:01:40,750 Maar ja, er wordt verondersteld met internet zijn. 34 00:01:40,750 --> 00:01:44,000 35 00:01:44,000 --> 00:01:46,410 >> Ik zeg het nu, maar het doet niet echt iets betekenen. 36 00:01:46,410 --> 00:01:50,680 Als het internet niet werkt, dit is wat je de neiging om nodig 37 00:01:50,680 --> 00:01:52,180 te lopen om het te repareren. 38 00:01:52,180 --> 00:01:55,602 Als u internet problemen, niet herinneren, post het op 39 00:01:55,602 --> 00:01:57,560 Bespreken, en we zullen zeggen, lopen dat. 40 00:01:57,560 --> 00:02:00,420 Maar het internet zou moeten werken. 41 00:02:00,420 --> 00:02:06,650 >> Dus de enige andere ding - ja, niets anders is echt relevant. 42 00:02:06,650 --> 00:02:08,979 Maar ik wilde alleen maar op wijzen dat - 43 00:02:08,979 --> 00:02:13,290 zien in deze rechtsonder. 44 00:02:13,290 --> 00:02:16,530 Dus elk van uw apparaten moet hebben een IP-adres. 45 00:02:16,530 --> 00:02:22,350 En later in het semester, dit IP adres zal steeds relevanter worden naarmate 46 00:02:22,350 --> 00:02:27,230 je werkt op het web p-set, omdat je zult in staat zijn om de toegang 47 00:02:27,230 --> 00:02:32,310 website je werkt op basis van uw lokale Chrome met behulp van dit IP-adres. 48 00:02:32,310 --> 00:02:35,400 >> Maar wat ik graag het IP-adres gebruiken voor - en je hoeft dit niet te doen, ik 49 00:02:35,400 --> 00:02:37,460 wil gewoon het te wijzen - 50 00:02:37,460 --> 00:02:39,540 is hier. 51 00:02:39,540 --> 00:02:42,910 Dus dit is een terminal venster op mijn Mac, is dit niet in de 52 00:02:42,910 --> 00:02:44,580 Apparaat helemaal. 53 00:02:44,580 --> 00:02:47,190 En je kunt opzoeken wat dit commando doet. 54 00:02:47,190 --> 00:02:51,855 Maar ik ga SSH direct naar mijn Appliance. 55 00:02:51,855 --> 00:02:53,410 Ik weet niet wat het IP is. 56 00:02:53,410 --> 00:02:54,300 >> JOSEPH: 168 - 57 00:02:54,300 --> 00:02:56,080 >> 168.224.1.0. 58 00:02:56,080 --> 00:02:59,950 >> ROB: Dus zodra ik klaar ben met deze, loggen 59 00:02:59,950 --> 00:03:05,450 Nu, in principe, is identiek aan een terminal venster in mijn Appliance. 60 00:03:05,450 --> 00:03:10,280 Dus ik vrijwel nooit echt gewerkt vanuit het apparaat zelf. 61 00:03:10,280 --> 00:03:12,550 Ik heb altijd al het draaiende de achtergrond geminimaliseerd 62 00:03:12,550 --> 00:03:15,890 en SSHed erin. 63 00:03:15,890 --> 00:03:24,270 >> Het probleem met dit is dat u niet van plan kunnen gedit eenvoudig gebruik 64 00:03:24,270 --> 00:03:25,600 rechtstreeks uit deze. 65 00:03:25,600 --> 00:03:31,500 Maar als je wilt een echt cool te zijn hacker, dan moet je gebruikt om een ​​te krijgen 66 00:03:31,500 --> 00:03:34,220 command line tekstverwerker toch. 67 00:03:34,220 --> 00:03:39,620 Dus Vim en Emacs en Nano, al deze zijn verschillende alternatieven. 68 00:03:39,620 --> 00:03:41,560 Nano neiging om de gemakkelijkste. 69 00:03:41,560 --> 00:03:45,006 En ik denk dat het geen syntax highlighting. 70 00:03:45,006 --> 00:03:47,620 Oh, nee, het geheel doet. 71 00:03:47,620 --> 00:03:49,870 Dus je kunt Nano te gebruiken, omdat dat is vrij eenvoudig. 72 00:03:49,870 --> 00:03:52,000 >> Je ziet al deze commando's onderaan. 73 00:03:52,000 --> 00:03:54,750 Deze kleine wortel symbool. 74 00:03:54,750 --> 00:03:57,620 Als u nog niet eerder hebt gezien, zul je Waarschijnlijk zie het nu veel. 75 00:03:57,620 --> 00:04:02,350 Dit betekent over het algemeen de controle wortel, zoals de linksonder van je toetsenbord 76 00:04:02,350 --> 00:04:04,130 controle karakter. 77 00:04:04,130 --> 00:04:07,260 Dus hier vertelt me ​​hier beneden - 78 00:04:07,260 --> 00:04:08,710 oh, het is niet afgesneden als ik vergroten 79 00:04:08,710 --> 00:04:11,040 Dus Control, X is hoe Ik ga om af te sluiten. 80 00:04:11,040 --> 00:04:14,710 En het zegt ik kan raken Y voor Ja, voor het opslaan, N voor Nee 81 00:04:14,710 --> 00:04:17,190 Dus dat is Nano. 82 00:04:17,190 --> 00:04:22,860 >> Vim en Emacs de neiging om iets meer te zijn ingewikkeld en overweldigend. 83 00:04:22,860 --> 00:04:28,840 Maar je kunt een gebruikte om het te krijgen, en dan zul je love it. 84 00:04:28,840 --> 00:04:30,590 Dus dat is dat. 85 00:04:30,590 --> 00:04:31,720 >> JOSEPH: Geen behoefte om dat te doen. 86 00:04:31,720 --> 00:04:31,840 >> ROB: Ja. 87 00:04:31,840 --> 00:04:37,510 U bent vrij om gedit gebruiken voor de rest van het semester. 88 00:04:37,510 --> 00:04:40,630 Dus elke appliance-gerelateerde vragen? 89 00:04:40,630 --> 00:04:42,820 Of heeft u ideeën over wat anders moet worden gesproken over 90 00:04:42,820 --> 00:04:43,610 het apparaat? 91 00:04:43,610 --> 00:04:43,996 Ja. 92 00:04:43,996 --> 00:04:47,720 >> LUIDSPREKER 1: Wanneer u SSHed in uw ding, was het wachtwoord Crimson? 93 00:04:47,720 --> 00:04:48,390 >> ROB: Ja. 94 00:04:48,390 --> 00:04:50,170 Het wachtwoord voor vrijwel alles in het apparaat gaat 95 00:04:50,170 --> 00:04:52,473 zijn Crimson. 96 00:04:52,473 --> 00:04:56,517 >> SPEAKER 2: Installeer als een echte IDE op het apparaat, zal het werken? 97 00:04:56,517 --> 00:04:59,200 98 00:04:59,200 --> 00:05:07,290 >> ROB: Ik stel me Eclipse heeft wel een Fedora versie, waarbij ja, 99 00:05:07,290 --> 00:05:08,420 kun je dat doen. 100 00:05:08,420 --> 00:05:10,875 Het is waarschijnlijk niet echt de moeite waard. 101 00:05:10,875 --> 00:05:11,742 >> SPEAKER 2: OK. 102 00:05:11,742 --> 00:05:15,924 Dus het is waarschijnlijk makkelijker als ik wilde Gebruik Eclipse, gebruik gewoon de inheemse en 103 00:05:15,924 --> 00:05:17,646 vervolgens uploaden naar - 104 00:05:17,646 --> 00:05:21,090 >> ROB: Oh, dat is waarschijnlijk ook makkelijker. 105 00:05:21,090 --> 00:05:24,046 Maar je kunt het werkend te krijgen binnen de Appliance. 106 00:05:24,046 --> 00:05:27,740 >> JOSEPH En voor de camera, de vraag was, kunt u een andere installeren 107 00:05:27,740 --> 00:05:29,490 IDE binnenkant van het apparaat? 108 00:05:29,490 --> 00:05:31,520 >> ROB: Eclipse wordt een voorbeeld van een IDE. 109 00:05:31,520 --> 00:05:34,800 110 00:05:34,800 --> 00:05:36,050 Enig ander toestel vragen? 111 00:05:36,050 --> 00:05:38,250 112 00:05:38,250 --> 00:05:38,680 Oke. 113 00:05:38,680 --> 00:05:44,920 >> Dus we zullen nu overgaan tot opdrachtregel -interface-gerelateerde dingen, dus CLI. 114 00:05:44,920 --> 00:05:47,990 En nogmaals, ik ga gewoon om in te werken hier, omdat dit identiek aan 115 00:05:47,990 --> 00:05:52,780 werken binnen een terminal venster binnen de Appliance. 116 00:05:52,780 --> 00:05:54,160 Hoe gaat dat lettertype op zoek? 117 00:05:54,160 --> 00:05:55,970 Is dat groot genoeg? 118 00:05:55,970 --> 00:05:57,000 Oke. 119 00:05:57,000 --> 00:06:02,480 >> Dus er zijn een heleboel opdrachten die moet je behoorlijk aan wennen 120 00:06:02,480 --> 00:06:04,490 het hele semester. 121 00:06:04,490 --> 00:06:09,480 De grote twee voor het navigeren zijn ls, lijst de bestanden in deze map, en 122 00:06:09,480 --> 00:06:11,380 cd, dus veranderen directory. 123 00:06:11,380 --> 00:06:18,390 Dus ik kan veranderen om het bureaublad en vervolgens een veel voorkomende patroon is cd naar een 124 00:06:18,390 --> 00:06:22,550 directory en onmiddellijk ls wat in de directory. 125 00:06:22,550 --> 00:06:25,540 >> Mensen soms ook niet beseffen dat Tab voltooiing is een ding. 126 00:06:25,540 --> 00:06:28,370 Dus zoals cd, VH, en dan druk ik Tab. 127 00:06:28,370 --> 00:06:30,790 Ik heb bijna nooit uittypen het hele ding. 128 00:06:30,790 --> 00:06:32,920 En als ik dan blijft raken Tab nogmaals, het zal automatisch 129 00:06:32,920 --> 00:06:33,670 beginnen met het aanbieden voor mij. 130 00:06:33,670 --> 00:06:37,000 Dus ik kan cd vhosts, lokale host. 131 00:06:37,000 --> 00:06:39,880 En dat zal alleen maar - 132 00:06:39,880 --> 00:06:43,380 in het geval u nog niet gehoord van de term vóór, directory is gewoon een ander woord 133 00:06:43,380 --> 00:06:45,170 voor de map. 134 00:06:45,170 --> 00:06:49,930 Dus als je nu ziet - 135 00:06:49,930 --> 00:06:51,810 laten brengen dat naar boven. 136 00:06:51,810 --> 00:06:55,380 >> Dus als je nu ziet in haakjes, u zie de kleine tilde, slash, vhost, 137 00:06:55,380 --> 00:06:56,810 slash, lokale host. 138 00:06:56,810 --> 00:07:00,040 Dus de tilde, die verwijst naar mijn home directory. 139 00:07:00,040 --> 00:07:03,090 Het is een directory die je bent in wanneer je SSH inch 140 00:07:03,090 --> 00:07:05,660 Het is de map je zit wanneer open je een terminal. 141 00:07:05,660 --> 00:07:08,650 Het is waar je begint. 142 00:07:08,650 --> 00:07:13,110 En dus ben ik de binnenkant van mijn home directory, en ik ben de binnenkant van de vhost 143 00:07:13,110 --> 00:07:14,475 directory binnenkant van mijn home directory. 144 00:07:14,475 --> 00:07:19,670 En dan ben ik de binnenkant van de lokale hostmap binnenkant van dat. 145 00:07:19,670 --> 00:07:23,740 >> Dus sommige andere nuttige dingen met cd - 146 00:07:23,740 --> 00:07:29,220 of goed, in het algemeen, dus dot altijd verwijst naar de huidige directory. 147 00:07:29,220 --> 00:07:31,130 Cd, dot is een vrij waardeloos commando. 148 00:07:31,130 --> 00:07:35,150 Maar dat is aan het veranderen om de huidige directory. 149 00:07:35,150 --> 00:07:38,230 Een nuttiger een qua cd is puntje, puntje, dat is 150 00:07:38,230 --> 00:07:40,220 gewoon een map gaan. 151 00:07:40,220 --> 00:07:43,360 >> En merk op dat deze - 152 00:07:43,360 --> 00:07:48,610 Ik wil aliassen zeggen, maar deze symbolen, dot, en dot, dot, die werk 153 00:07:48,610 --> 00:07:51,740 voor vrijwel elke opdracht die u bent gaan denken van hardlopen. 154 00:07:51,740 --> 00:07:55,370 Dus zoals cd is waarschijnlijk waar je in met de meeste, maar deze zijn niet 155 00:07:55,370 --> 00:07:56,780 dingen die gewoon cd begrijpt. 156 00:07:56,780 --> 00:07:59,980 Het is vrij veel wat je hele command line begrijpt. 157 00:07:59,980 --> 00:08:01,932 Veel van de programma's te begrijpen dot en dot, dot. 158 00:08:01,932 --> 00:08:04,830 159 00:08:04,830 --> 00:08:09,090 >> Dus de andere nuttige degenen - cd, dash. 160 00:08:09,090 --> 00:08:13,460 Dus dat gaat me aan het brengen laatste map die ik was binnen 161 00:08:13,460 --> 00:08:15,980 Dus soms ga ik iets doen als, oh, ik werk hier. 162 00:08:15,980 --> 00:08:21,110 En ik zie een fout met iets, en Ik ga onderzoeken is door te gaan naar 163 00:08:21,110 --> 00:08:24,020 enkele willekeurige directory ergens. 164 00:08:24,020 --> 00:08:25,260 En ik weet niet of het zal laat me daar. 165 00:08:25,260 --> 00:08:25,720 Het zal. 166 00:08:25,720 --> 00:08:27,615 Dus dan moet ik doen wat ik wil in deze directory. 167 00:08:27,615 --> 00:08:28,950 Blah, blah, blah, blah, blah. 168 00:08:28,950 --> 00:08:31,770 En ik was als, oke, ik wil terug naar waar ik was gaan. 169 00:08:31,770 --> 00:08:34,490 cd, dashboard, en het brengt me direct terug. 170 00:08:34,490 --> 00:08:39,970 >> Dus ik ga een hoop te gooien van deze op u vandaag. 171 00:08:39,970 --> 00:08:43,730 Ik verwacht niet dat je te onthouden allemaal. 172 00:08:43,730 --> 00:08:46,170 Het is een soort van gewoon weet dat ze bestaan. 173 00:08:46,170 --> 00:08:48,690 En dan later, als je net als, hmm, ik wil terug naar de 174 00:08:48,690 --> 00:08:51,870 directory dat ik juist op, oh, wacht, zoiets bestaat. 175 00:08:51,870 --> 00:08:53,980 Je hoeft niet om gewoon te typen in in de gehele index weer. 176 00:08:53,980 --> 00:08:56,090 >> JOSEPH: En uiteindelijk zul je gewoon gebruik ze over en weer, en 177 00:08:56,090 --> 00:08:57,830 het zal spiergeheugen geworden. 178 00:08:57,830 --> 00:09:00,090 >> ROB: Ja. 179 00:09:00,090 --> 00:09:02,930 Dus hoe ik al eerder zei, dat tilde is je home directory. 180 00:09:02,930 --> 00:09:04,820 Dus ik kan cd, tilde. 181 00:09:04,820 --> 00:09:07,280 Maar ik heb niet eens te dat doen als ik - 182 00:09:07,280 --> 00:09:09,760 Ik ga terug naar de map, zodat het is niet een zinloze voorbeeld. 183 00:09:09,760 --> 00:09:14,560 Maar als ik gewoon cd doen, dat is ook de hetzelfde als, ga naar mijn home directory. 184 00:09:14,560 --> 00:09:18,380 185 00:09:18,380 --> 00:09:19,880 Ik doe Command, K. 186 00:09:19,880 --> 00:09:24,015 >> JOSEPH: U kunt ook duidelijk typen, de woord, en het moet duidelijk. 187 00:09:24,015 --> 00:09:28,650 >> ROB: En ik denk ook Control, L doet het ook. 188 00:09:28,650 --> 00:09:29,690 Zo veel verschillende manieren. 189 00:09:29,690 --> 00:09:34,070 Ik denk dat er een aantal verschillen waar duidelijke en Control, L zal alleen 190 00:09:34,070 --> 00:09:37,280 duwen echt boven en Ik kan nog steeds terug te bladeren. 191 00:09:37,280 --> 00:09:40,580 Command, K letterlijk vernietigt alles, en je 192 00:09:40,580 --> 00:09:42,960 kunnen niet terug scrollen. 193 00:09:42,960 --> 00:09:45,530 Op zijn minst, dat is hoe het werkt in iTerm2. 194 00:09:45,530 --> 00:09:48,690 Ik weet niet hoe andere dingen - 195 00:09:48,690 --> 00:09:49,360 oh. 196 00:09:49,360 --> 00:09:55,450 >> Met SSHing, dus als je op Windows, je gaat te hebben om PuTTY downloaden 197 00:09:55,450 --> 00:10:02,360 om SSH sinds Windows niet hebben als een ingebouwde SSH tool. 198 00:10:02,360 --> 00:10:06,150 Van Macs, kunt u gewoon SSH direct vanuit een terminal venster. 199 00:10:06,150 --> 00:10:08,755 200 00:10:08,755 --> 00:10:09,690 OK. 201 00:10:09,690 --> 00:10:11,840 Vragen? 202 00:10:11,840 --> 00:10:19,260 >> Met ls, dus iets om te wennen aan met de meeste van deze commando's is - 203 00:10:19,260 --> 00:10:20,060 goed, ik zal gewoon doen een. 204 00:10:20,060 --> 00:10:21,310 Ls, dash, l. 205 00:10:21,310 --> 00:10:26,330 Dus dash, l is wat we gaan om een ​​vlag te bellen met ls. 206 00:10:26,330 --> 00:10:30,770 En veel van deze commando's hebben vlaggen dat u kunt doorgeven aan hen. 207 00:10:30,770 --> 00:10:35,020 Dus in dit geval, dash, l is een vlag die vertelt het mij een volledig geven 208 00:10:35,020 --> 00:10:37,850 lijst van alle informatie van deze bestanden. 209 00:10:37,850 --> 00:10:44,790 >> We zien hier dus dat de desktop was gewijzigd op 30 juli om 12:54. 210 00:10:44,790 --> 00:10:47,160 Downloads werd gewijzigd op 6 september. 211 00:10:47,160 --> 00:10:52,350 Dit zijn de huidige omvang en bytes van deze mappen. 212 00:10:52,350 --> 00:10:54,412 Je hoeft niet te begrijpen dit alles. 213 00:10:54,412 --> 00:11:00,380 >> Dit spul aan de linkerkant, deze drwx's, dat zal veel relevanter geworden 214 00:11:00,380 --> 00:11:02,290 later wanneer je te maken hebben met - 215 00:11:02,290 --> 00:11:05,900 dat heeft te maken met wie machtigingen om te kijken naar deze bestanden. 216 00:11:05,900 --> 00:11:09,880 En dus als je de enige gebruiker op waren niet deze computer, zou je in staat te zijn 217 00:11:09,880 --> 00:11:13,345 laten we zeggen, OK, ik moet de enige zijn toegestaan ​​om te kijken naar dit bestand of ik ben 218 00:11:13,345 --> 00:11:14,870 gaan om iedereen om te kijken naar dit bestand. 219 00:11:14,870 --> 00:11:17,710 Zodat iemand anders op mijn computer kunnen kijken naar dit bestand. 220 00:11:17,710 --> 00:11:22,190 221 00:11:22,190 --> 00:11:25,600 Ik weet niet eens wat dit - wat heeft dit te doen? 222 00:11:25,600 --> 00:11:26,840 >> JOSEPH: Ik ben niet helemaal zeker, eigenlijk. 223 00:11:26,840 --> 00:11:27,705 >> ROB: Geen idee. 224 00:11:27,705 --> 00:11:30,530 >> JOSEPH: Maar als je niet weet, is er een nuttig commando dat je kunt gebruiken 225 00:11:30,530 --> 00:11:31,680 om u te vertellen wat de output betekent. 226 00:11:31,680 --> 00:11:33,780 En als je typt in de mens voor de opdracht - 227 00:11:33,780 --> 00:11:35,000 dus M-A-N. ROB: Man. 228 00:11:35,000 --> 00:11:37,690 De mens is een ander dat is erg handig. 229 00:11:37,690 --> 00:11:39,540 En man, ls. 230 00:11:39,540 --> 00:11:47,320 Dus de man-pagina's, ze hebben beide opdrachten die je gaat gebruiken 231 00:11:47,320 --> 00:11:50,330 op de opdrachtregel, en ze hebben ook functies die relevant zijn 232 00:11:50,330 --> 00:11:52,530 met C. Dus je kan de mens - 233 00:11:52,530 --> 00:11:53,720 en ik negeerde 3. 234 00:11:53,720 --> 00:11:57,410 Maar man 3 printf gaat brengen de C-versie van printf. 235 00:11:57,410 --> 00:12:01,030 Maar als ik gewoon doen man printf, dit is gaan naar de commando printf brengen 236 00:12:01,030 --> 00:12:03,540 dat gebeurt op de opdrachtregel. 237 00:12:03,540 --> 00:12:05,730 >> Dus man, ls. 238 00:12:05,730 --> 00:12:09,030 De man pagina's kunnen mooi zijn overweldigend. 239 00:12:09,030 --> 00:12:12,770 Hier, hoewel, je zult deze lijst zien al deze vlaggen die ls 240 00:12:12,770 --> 00:12:14,300 begrijpt. 241 00:12:14,300 --> 00:12:17,876 Dus als we naar dash, l, en - 242 00:12:17,876 --> 00:12:19,300 Ik ga gewoon deze naar je gooien. 243 00:12:19,300 --> 00:12:23,050 Maar om te zoeken, je wilt om eerst de vraag te raken 244 00:12:23,050 --> 00:12:24,780 mark of slash toets. 245 00:12:24,780 --> 00:12:26,040 Dus slash. 246 00:12:26,040 --> 00:12:29,000 >> En dan kan ik zoeken voor wat ik wil. 247 00:12:29,000 --> 00:12:33,780 Dus ik ga slash voor dash, l. 248 00:12:33,780 --> 00:12:35,110 En daar was het. 249 00:12:35,110 --> 00:12:37,450 Dus gebruik een lange lijst formaat. 250 00:12:37,450 --> 00:12:40,060 Dat niet helpt me erachter te komen wat dat bepaalde kolom bedoelde, maar ik 251 00:12:40,060 --> 00:12:44,480 neem aan dat ergens in hier het zou uitleggen. 252 00:12:44,480 --> 00:12:48,740 Dus gebruik de man pagina's voor elke opdracht dat je niet meteen begrijpen. 253 00:12:48,740 --> 00:12:51,080 >> Ik ben vrij zeker dat je kan zelfs de mens, man. 254 00:12:51,080 --> 00:12:53,070 Een interface naar de online handleidingen. 255 00:12:53,070 --> 00:12:57,700 256 00:12:57,700 --> 00:13:03,570 Oh, een laatste dat is misschien iets relevant is ls, dash, een. 257 00:13:03,570 --> 00:13:08,490 Dus merken als ik gewoon doen ls, Ik krijg deze vijf bestanden. 258 00:13:08,490 --> 00:13:11,480 Als ik ls doen, dash, een, ik krijgen veel meer bestanden. 259 00:13:11,480 --> 00:13:15,350 Dus het ding gemeen tussen al deze nieuwe bestanden is de stip op voorhand. 260 00:13:15,350 --> 00:13:21,220 >> Dus de conventie is dat een bestand dat begint met een punt is verborgen. 261 00:13:21,220 --> 00:13:25,300 Zodat u niet wilt dat bestand zien, je niet willen hebben knoeien met 262 00:13:25,300 --> 00:13:26,750 uw directory listing. 263 00:13:26,750 --> 00:13:30,020 Het is pas wanneer je expliciet vraagt, oke, ls, dashboard, een, toon mij. 264 00:13:30,020 --> 00:13:32,830 De een staat voor alle bestanden, waaronder verborgen degenen. 265 00:13:32,830 --> 00:13:37,260 266 00:13:37,260 --> 00:13:39,270 Dus sommige andere opdrachten. 267 00:13:39,270 --> 00:13:41,323 Oh, vragen op dat punt? 268 00:13:41,323 --> 00:13:41,746 Ja. 269 00:13:41,746 --> 00:13:45,914 >> SPEAKER 3: Wanneer je ls doen, een, wat is het punt, punt? 270 00:13:45,914 --> 00:13:46,870 >> ROB: Oh. 271 00:13:46,870 --> 00:13:48,780 Dus dit is wat ik het over had. 272 00:13:48,780 --> 00:13:50,890 Het is hetzelfde ding waar Ik kan zoals CD, puntje, puntje. 273 00:13:50,890 --> 00:13:56,790 Dus technisch, dot en dot, dot zijn bestanden die bestaan ​​in elke 274 00:13:56,790 --> 00:14:03,620 directory waar de stip bestand verwijst naar de huidige directory. 275 00:14:03,620 --> 00:14:06,930 Dus als ik cd, punt, ik ben gewoon gaan voor een verblijf in de directory. 276 00:14:06,930 --> 00:14:10,870 En puntje, puntje verwijst altijd naar de vorige map een niveau hoger. 277 00:14:10,870 --> 00:14:18,200 Dus als ik in logboeken en ls, dash, al, Ik zie puntje, puntje. cd naar dot, dot 278 00:14:18,200 --> 00:14:20,390 brengt me bij de vorige map. 279 00:14:20,390 --> 00:14:24,530 280 00:14:24,530 --> 00:14:25,780 Yeah. 281 00:14:25,780 --> 00:14:27,160 282 00:14:27,160 --> 00:14:28,110 OK. 283 00:14:28,110 --> 00:14:33,070 >> Dus nog een vrij belangrijk commando rm. 284 00:14:33,070 --> 00:14:35,650 Dus dat is wat we gaan gebruik te verwijderen. 285 00:14:35,650 --> 00:14:38,100 En laat ik eigenlijk een andere doen commando eerste. 286 00:14:38,100 --> 00:14:39,610 Dus mkdir. 287 00:14:39,610 --> 00:14:42,770 Mkdir is hoe je kunt creëren directories. 288 00:14:42,770 --> 00:14:47,530 En ik zal een tijdelijke map aan te maken en ga in die tijdelijke map. 289 00:14:47,530 --> 00:14:49,590 En zoals verwacht, het is leeg. 290 00:14:49,590 --> 00:14:53,680 Maar als ik ls, dash, een, ik heb nog steeds dot en puntje, puntje, want dot verwijst naar 291 00:14:53,680 --> 00:14:54,480 de huidige directory. 292 00:14:54,480 --> 00:14:56,170 En punt, punt verwijst naar de vorige map. 293 00:14:56,170 --> 00:14:58,700 En die zal altijd blijven bestaan, ongeacht de map waarin u zich bevindt 294 00:14:58,700 --> 00:15:01,910 295 00:15:01,910 --> 00:15:09,010 >> Dit is een volledig overbodig commando, maar aanraking. 296 00:15:09,010 --> 00:15:11,880 Ik gebruik het, want het is een eenvoudige manier om bestanden te maken. 297 00:15:11,880 --> 00:15:16,180 Dus raak een Raak b Raak c is gewoon naar drie bestanden genoemd maken, 298 00:15:16,180 --> 00:15:17,845 b en c die volledig leeg zijn. 299 00:15:17,845 --> 00:15:20,450 300 00:15:20,450 --> 00:15:24,980 Dus het punt van mij het creëren van die in de eerste plaats is gewoon zo dat rm is 301 00:15:24,980 --> 00:15:26,250 hoe we ze kunnen verwijderen. 302 00:15:26,250 --> 00:15:27,850 Dus rm, een. 303 00:15:27,850 --> 00:15:30,960 Het gaat om te vragen, te verwijderen regelmatig leeg bestand een? 304 00:15:30,960 --> 00:15:33,170 En dan zeg ik ja. 305 00:15:33,170 --> 00:15:39,090 >> Dus als ik zeker weet dat ik wil wissen dat bestand zonder dat u zijn 306 00:15:39,090 --> 00:15:44,500 gevraagd, verwijder regelmatig leeg bestand?, dan rm, dashboard, f gaat worden de 307 00:15:44,500 --> 00:15:48,230 vlag die zegt, dwingen het te verwijderen zonder zelfs gevraagd me, oh, ben je 308 00:15:48,230 --> 00:15:49,710 ervoor dat u het bestand wilt verwijderen? 309 00:15:49,710 --> 00:15:50,810 Ja, ik weet het zeker. 310 00:15:50,810 --> 00:15:56,050 Dus rm, dash, fb zal alleen doe het zonder te vragen. 311 00:15:56,050 --> 00:15:57,950 >> Dus laten we wat meer mappen. 312 00:15:57,950 --> 00:16:03,670 mkdir, tmp2, cd, tmp2, raak een, aanraking b. 313 00:16:03,670 --> 00:16:04,300 OK. 314 00:16:04,300 --> 00:16:08,180 Dus nu wil ik verwijderen tmp2 als een directory. 315 00:16:08,180 --> 00:16:10,316 Dus rm tmp2. 316 00:16:10,316 --> 00:16:12,920 Je kunt niet verwijderen tmp2, het is een directory. 317 00:16:12,920 --> 00:16:21,370 Dus het probleem hier is dat rm niet meteen aan het werk op directories. 318 00:16:21,370 --> 00:16:26,530 Het is alleen bedoeld voor bestanden zoals non-directory bestanden. 319 00:16:26,530 --> 00:16:30,800 >> En dus wat we kunnen doen hier is rm, dash, r. 320 00:16:30,800 --> 00:16:35,160 Dat staat voor recursief, die misschien wel nog niets voor u betekenen. 321 00:16:35,160 --> 00:16:38,280 Maar als je naar recursie, het zal meer betekenen. 322 00:16:38,280 --> 00:16:43,540 Dus rm, dash, r, tmp2 gaat recursief gaan in die map. 323 00:16:43,540 --> 00:16:45,540 Dus afdalen in directory tmp2? 324 00:16:45,540 --> 00:16:47,330 Ja, laten we gaan in die. 325 00:16:47,330 --> 00:16:49,360 Willen we tmp2 verwijderen / a? 326 00:16:49,360 --> 00:16:49,745 Ja. 327 00:16:49,745 --> 00:16:51,830 Willen we tmp2 / b verwijderen? 328 00:16:51,830 --> 00:16:52,840 Ja. 329 00:16:52,840 --> 00:16:55,170 Nu willen we verwijderen de directory tmp2? 330 00:16:55,170 --> 00:16:56,040 Ja. 331 00:16:56,040 --> 00:16:58,410 En dus nu de directory en alles binnen 332 00:16:58,410 --> 00:16:59,660 van deze is verwijderd. 333 00:16:59,660 --> 00:17:02,850 334 00:17:02,850 --> 00:17:07,250 >> Er is technisch gezien een commando rmdir die u kunt gebruiken om te verwijderen 335 00:17:07,250 --> 00:17:11,670 directories, maar werkt alleen op lege mappen toch. 336 00:17:11,670 --> 00:17:14,109 En om te zien dat, laten we gewoon do mkdir, tmp2 weer. 337 00:17:14,109 --> 00:17:15,940 Tmp2, raakt een. 338 00:17:15,940 --> 00:17:16,800 OK. 339 00:17:16,800 --> 00:17:22,770 Dus als ik probeer om dirtmp2 verwijderen, het zal zeggen, directory niet leeg. 340 00:17:22,770 --> 00:17:29,540 Daarom gebruik ik vrijwel nooit het verwijderen opdracht dir toch, want rm, dashboard, 341 00:17:29,540 --> 00:17:35,140 r zal werken op lege mappen en niet lege directory. 342 00:17:35,140 --> 00:17:37,760 >> En ook, als ik niet willen hebben om door dat hele proces van 343 00:17:37,760 --> 00:17:40,720 afdalen in de directory en het verwijderen van elk afzonderlijk dossier, rm, 344 00:17:40,720 --> 00:17:44,190 dash, rf, tmp2. 345 00:17:44,190 --> 00:17:45,670 En nu is het weg. 346 00:17:45,670 --> 00:17:51,220 >> Iets om voorzichtig te zijn over is rm, dash, rf. 347 00:17:51,220 --> 00:17:53,660 En het maakt me bang om nog te typen, want als ik per ongeluk 348 00:17:53,660 --> 00:17:55,090 Enter of zoiets. 349 00:17:55,090 --> 00:18:02,735 Dus rm, dash, rf, tilde zou, zonder gevraagd me, is de f niet gevraagd 350 00:18:02,735 --> 00:18:05,670 me, zal het automatisch verwijderen mijn hele home directory en 351 00:18:05,670 --> 00:18:06,780 alles erin. 352 00:18:06,780 --> 00:18:11,460 Dus je zou kunnen denken dat een dom ding om te doen. 353 00:18:11,460 --> 00:18:12,830 En ja, het is. 354 00:18:12,830 --> 00:18:18,600 >> Maar het kan heel gemakkelijk gebeuren door ongeval als, zeg, ik wilde verwijderen 355 00:18:18,600 --> 00:18:21,640 mijn slash, vhost directory. 356 00:18:21,640 --> 00:18:26,610 En voor het snel typen, Ik dit per ongeluk doen. 357 00:18:26,610 --> 00:18:31,880 Dat zal recursief verwijderen zowel mijn home directory en de vhost directory 358 00:18:31,880 --> 00:18:35,450 in deze specifieke directory die gebeurt nu niet bestaan. 359 00:18:35,450 --> 00:18:39,520 Maar dit zou toch te verwijderen mijn hele home directory. 360 00:18:39,520 --> 00:18:43,090 Althans door niet met een f, het zou me eerst vragen. 361 00:18:43,090 --> 00:18:45,670 En ik zou willen worden, oh, nee, ik niet willen doen. 362 00:18:45,670 --> 00:18:50,570 Maar mensen, schuine streep, met inbegrip me de neiging om in de 363 00:18:50,570 --> 00:18:53,090 gewoonte van om altijd rf-ing. 364 00:18:53,090 --> 00:18:58,713 Zelfs gewone bestanden die ik kan alleen rm, c, heb ik de neiging om gewoon rm, dash, rf, c. 365 00:18:58,713 --> 00:19:01,330 Wees voorzichtig wanneer u rf-ing bent. 366 00:19:01,330 --> 00:19:03,160 >> SPEAKER 4: Wat doet C doen? 367 00:19:03,160 --> 00:19:11,570 >> ROB: C Ik heb het over die C bestand in deze directory, dat rm, c. 368 00:19:11,570 --> 00:19:15,730 >> JOSEPH: En meer gevaarlijk, als je gebruik ster, verwijst naar alles 369 00:19:15,730 --> 00:19:16,450 de directory. 370 00:19:16,450 --> 00:19:20,040 Dus wat ik vaak de neiging om te doen is zal ik gaan in een map en ik wil 371 00:19:20,040 --> 00:19:21,510 Verwijder alle bestanden in. 372 00:19:21,510 --> 00:19:23,640 Dus rm, dash, rf, ster. 373 00:19:23,640 --> 00:19:25,700 >> ROB: Ja. 374 00:19:25,700 --> 00:19:26,780 Rm, dash, rf, ster. 375 00:19:26,780 --> 00:19:29,530 >> JOSEPH: En als je niet oppast welke map je zit - 376 00:19:29,530 --> 00:19:33,340 Ik was niet in temp, maar ik was per ongeluk in mijn home directory, 377 00:19:33,340 --> 00:19:35,450 dan zal ik alles verwijderen in mijn home directory. 378 00:19:35,450 --> 00:19:39,095 En ik heb eigenlijk dat eerder gedaan, en Ik denk dat je dit hebt gedaan vóór of 379 00:19:39,095 --> 00:19:40,640 Jay is al eerder gedaan. 380 00:19:40,640 --> 00:19:42,480 >> ROB: Ik heb per ongeluk verwijderd - 381 00:19:42,480 --> 00:19:44,480 dus negeer dat bevel voor een beetje. 382 00:19:44,480 --> 00:19:45,800 >> JOSEPH: Niet leuk. 383 00:19:45,800 --> 00:19:52,650 >> ROB: Dus in de slash bin directory is een bos van binaire bestanden waar er zal 384 00:19:52,650 --> 00:19:54,840 vertrouwd zijn degenen zoals Clang. 385 00:19:54,840 --> 00:20:00,740 Nou, kletteren en in principe al deze dingen die ik ben actief op de opdrachtregel 386 00:20:00,740 --> 00:20:02,060 lijn zijn in dit slash bin. 387 00:20:02,060 --> 00:20:03,090 >> JOSEPH: Net ls is hier. 388 00:20:03,090 --> 00:20:06,285 >> ROB: Dus punt, slash, ls zou een lijst van deze map. 389 00:20:06,285 --> 00:20:08,120 >> JOSEPH: Rm is ook in deze directory. 390 00:20:08,120 --> 00:20:12,770 >> ROB: Ik heb per ongeluk rm, rf-ed bin, die alle commando's ik kon verwijderd 391 00:20:12,770 --> 00:20:14,380 misschien ooit willen. 392 00:20:14,380 --> 00:20:18,085 Die dan ik gewoon opnieuw een nieuwe apparaat op dat punt. 393 00:20:18,085 --> 00:20:20,170 >> JOSEPH: Wees dus voorzichtig bij u deze opdracht gebruikt. 394 00:20:20,170 --> 00:20:21,120 >> PUBLIEK: [onverstaanbaar]? 395 00:20:21,120 --> 00:20:22,640 >> ROB: Ja. 396 00:20:22,640 --> 00:20:24,135 Dat is ook een slechte gewoonte om in. 397 00:20:24,135 --> 00:20:27,920 398 00:20:27,920 --> 00:20:30,170 Als u merkt, ik ben nu - 399 00:20:30,170 --> 00:20:33,580 Nou, je kunt niet in de gaten, maar mijn zoom-in misschien wel. 400 00:20:33,580 --> 00:20:35,360 Dus ik ben nu root @ apparaat. 401 00:20:35,360 --> 00:20:39,790 Dus jharvard is de gebruiker die we willen je altijd gebruiken. 402 00:20:39,790 --> 00:20:43,820 Root is de gebruiker die toestemming heeft om absoluut niets te doen. 403 00:20:43,820 --> 00:20:50,260 >> Dus opvalt als ik ben jharvard, als ik probeer om cd - 404 00:20:50,260 --> 00:20:52,461 wat is een map die? 405 00:20:52,461 --> 00:20:53,980 Oh, wortel is een goed voorbeeld van. 406 00:20:53,980 --> 00:20:54,950 Dus cd, wortel. 407 00:20:54,950 --> 00:20:56,030 Permission denied. 408 00:20:56,030 --> 00:21:00,060 Want als we kijken naar deze aanbieding - 409 00:21:00,060 --> 00:21:02,410 en nogmaals, je hoeft niet te helemaal begrijpen dit. 410 00:21:02,410 --> 00:21:09,210 Maar deze drie streepjes zeggen dat geen andere laten 411 00:21:09,210 --> 00:21:11,120 gebruiker in deze map. 412 00:21:11,120 --> 00:21:14,540 En de directory overkomt eigendom zijn van de gebruiker root. 413 00:21:14,540 --> 00:21:20,310 >> Dus het feit dat ik ben jharvard en geen iemand die niet als root mag in 414 00:21:20,310 --> 00:21:23,490 deze directory, dat betekent dat ik ben gaat krijgen toegang geweigerd toen ik 415 00:21:23,490 --> 00:21:25,160 proberen om cd erin. 416 00:21:25,160 --> 00:21:31,370 Dus als ik ben wortel, ik heb toestemming om doen helemaal niets, met inbegrip 417 00:21:31,370 --> 00:21:34,660 essentiële bestanden verwijderen Om het apparaat en 418 00:21:34,660 --> 00:21:36,640 vernietigen het hele ding. 419 00:21:36,640 --> 00:21:41,240 >> Dus het is een slechte gewoonte om in gewoon rond uw 420 00:21:41,240 --> 00:21:43,650 besturingssysteem als root. 421 00:21:43,650 --> 00:21:46,520 Ik doe het toch. 422 00:21:46,520 --> 00:21:48,710 Vragen? 423 00:21:48,710 --> 00:21:52,230 En ik zal wortel te verlaten, blijven als jharvard. 424 00:21:52,230 --> 00:21:54,510 OK. 425 00:21:54,510 --> 00:21:55,820 >> Meer relevante opdrachten. 426 00:21:55,820 --> 00:22:03,975 Dus gaan terug naar onze temp, de mv commando staat voor beweging. 427 00:22:03,975 --> 00:22:05,450 Je kunt verplaatsen een. 428 00:22:05,450 --> 00:22:07,610 Nu willen we noemen b, dus nu het heet b. 429 00:22:07,610 --> 00:22:10,650 Of misschien willen we verhuizen b op een map. 430 00:22:10,650 --> 00:22:12,730 Dus nu leeg van deze map. 431 00:22:12,730 --> 00:22:15,410 Ik ga terug naar mijn home directory te gaan, en we zien dat b is hier, omdat de 432 00:22:15,410 --> 00:22:19,230 home directory is een map op van de map die b had geweest inch 433 00:22:19,230 --> 00:22:24,710 434 00:22:24,710 --> 00:22:26,580 >> Er is ook cp. 435 00:22:26,580 --> 00:22:33,210 Dus cp is kopiëren super sectie, dot, tekst. 436 00:22:33,210 --> 00:22:35,750 Ik kan noemen is, punt, tekst. 437 00:22:35,750 --> 00:22:39,780 Nu hebben we allebei super sectie, stip, tekst, en s, punt, tekst. 438 00:22:39,780 --> 00:22:41,340 Dit werkt ook op directories. 439 00:22:41,340 --> 00:22:44,040 440 00:22:44,040 --> 00:22:46,560 Ik rf-ed een enkel bestand. 441 00:22:46,560 --> 00:22:48,200 Dus cp - 442 00:22:48,200 --> 00:22:51,710 goed, laten we eerst proberen cp, tmp, tmp2. 443 00:22:51,710 --> 00:22:53,220 Dus weglaten directory tmp. 444 00:22:53,220 --> 00:22:57,440 Dus vergelijkbaar met rm, het standaard gedrag is niet op directories. 445 00:22:57,440 --> 00:23:01,570 >> En nogmaals, vergelijkbaar met rm, de standaard gedrag - goed, het krijgen van het werk 446 00:23:01,570 --> 00:23:04,230 met directories is een, dash-r weg. 447 00:23:04,230 --> 00:23:09,240 Dus kopiëren recursief de temp directory in tmp2. 448 00:23:09,240 --> 00:23:13,700 En nu hebben we allebei tmp en tmp2, en dat is niet zo behulpzaam sinds tmp 449 00:23:13,700 --> 00:23:16,814 leeg was in de eerste plaats. 450 00:23:16,814 --> 00:23:18,660 Tmp2. 451 00:23:18,660 --> 00:23:22,680 >> Laten we nu eens kopiëren tmp in tmp2. 452 00:23:22,680 --> 00:23:27,900 En we zien dat tmp2 heeft ook het bestand een, omdat de directory en 453 00:23:27,900 --> 00:23:32,220 alles binnen van die directory is gekopieerd. 454 00:23:32,220 --> 00:23:36,000 En dat kan enigszins nuttig als, zeg je werkt 455 00:23:36,000 --> 00:23:38,860 op probleem set one - 456 00:23:38,860 --> 00:23:41,320 of eigenlijk, later probleem sets zijn nog belangrijker, omdat 457 00:23:41,320 --> 00:23:43,660 zal een hele hoop te zijn van bestanden en dingen. 458 00:23:43,660 --> 00:23:47,010 >> Maar je wilt, voor een split ten tweede, je bent zoals, oke, ik ben 459 00:23:47,010 --> 00:23:50,210 gaat om iets anders te proberen. 460 00:23:50,210 --> 00:23:57,860 Laat me gewoon kopiëren mijn hele pset1 directory in pset1 backup zodat als 461 00:23:57,860 --> 00:24:01,490 Ik uiteindelijk schroeven dingen, ik kan ga terug in mijn backup directory. 462 00:24:01,490 --> 00:24:07,340 Er zijn meer geschikte manieren van versiebeheer back-up van uw code, maar 463 00:24:07,340 --> 00:24:10,610 dit is altijd een snelle manier om gewoon ervoor dat u een kopie van iets 464 00:24:10,610 --> 00:24:11,860 dat je op het punt te wijzigen. 465 00:24:11,860 --> 00:24:16,974 466 00:24:16,974 --> 00:24:27,090 >> Dus echo is ook een eenmalige opdracht die soort sillily zal alleen afdrukken op de 467 00:24:27,090 --> 00:24:31,540 command line precies wat je wilde echo. 468 00:24:31,540 --> 00:24:32,680 Dus echo hi. 469 00:24:32,680 --> 00:24:35,420 We zullen gewoon uitprinten hi. 470 00:24:35,420 --> 00:24:38,030 Echo hallo wereld. 471 00:24:38,030 --> 00:24:39,800 We zullen hello wereld drukken. 472 00:24:39,800 --> 00:24:44,350 Die komt in het gebruik wanneer u start combineren commando. 473 00:24:44,350 --> 00:24:48,300 >> En nogmaals, verwacht niet dat je geheel begrijpen dit nog niet, maar het is 474 00:24:48,300 --> 00:24:49,910 iets te zien. 475 00:24:49,910 --> 00:24:52,470 En dan als je Googlen naar voorbeelden of je beseft dat je wilt doen 476 00:24:52,470 --> 00:24:55,030 iets, kan het nuttig zijn. 477 00:24:55,030 --> 00:24:59,020 Laten we als voorbeeld, zo ls, dash, l. 478 00:24:59,020 --> 00:25:01,160 Dus hier zie ik de uitgang van ls, dash, l. 479 00:25:01,160 --> 00:25:06,560 En ik zeg, oke, ik wil bewaar dat in een bestand. 480 00:25:06,560 --> 00:25:11,620 Alle van deze uitgang hier, ik wil in een apart bestand te zetten. 481 00:25:11,620 --> 00:25:16,080 >> Dus dit weinig meer dan het symbool is wat we gaan bellen. 482 00:25:16,080 --> 00:25:18,570 We heroriëntering van de uitvoer in een bestand. 483 00:25:18,570 --> 00:25:21,680 Laten we noemen het bestand blah, want dat is wat ik de neiging om altijd noemen. 484 00:25:21,680 --> 00:25:26,430 Dus nu zien we dat we een file blah hier. 485 00:25:26,430 --> 00:25:30,270 En als ik het open, zal ik zien dat het precies de uitvoer van het commando 486 00:25:30,270 --> 00:25:31,990 dat ik net liep. 487 00:25:31,990 --> 00:25:36,020 En dezelfde manier kunt u - 488 00:25:36,020 --> 00:25:41,260 als dit in een bestand, dit wordt krijgt input van een bestand. 489 00:25:41,260 --> 00:25:45,790 490 00:25:45,790 --> 00:25:47,050 Wat is een opdracht die ik - 491 00:25:47,050 --> 00:25:49,620 >> JOSEPH: Ik denk dat je kunt gebruiken minder of meer, waarschijnlijk. 492 00:25:49,620 --> 00:25:53,031 >> ROB: Maar hoe zit het iets minder blah? 493 00:25:53,031 --> 00:25:53,930 Ik weet het niet. 494 00:25:53,930 --> 00:25:57,870 Als u in dit scenario, zoals er is psets dat het nuttig voor. 495 00:25:57,870 --> 00:25:59,950 >> JOSEPH: U kunt pijp het in echo. 496 00:25:59,950 --> 00:26:02,920 Pijp het bestand in echo om het te zien. 497 00:26:02,920 --> 00:26:04,060 >> ROB: Het is pijp. 498 00:26:04,060 --> 00:26:04,860 >> JOSEPH: Sorry. 499 00:26:04,860 --> 00:26:06,190 >> ROB: Oke. 500 00:26:06,190 --> 00:26:12,720 Dus dit is uitvoer naar een bestand. 501 00:26:12,720 --> 00:26:18,700 Dit is krijgen de tekst uit het bestand en geef het over aan het programma. 502 00:26:18,700 --> 00:26:20,560 En je ziet ook deze kerel. 503 00:26:20,560 --> 00:26:24,410 Dus dit is een soort van beide tegelijk doen. 504 00:26:24,410 --> 00:26:28,310 En eigenlijk, ik zal twee nieuwe introduceren commando's gewoon gebruik van maken. 505 00:26:28,310 --> 00:26:33,060 >> Geschiedenis is een handige commando dat is gewoon gaat het afdrukken van een lijst van 506 00:26:33,060 --> 00:26:34,940 alles wat ik ooit heb een opdrachtregel. 507 00:26:34,940 --> 00:26:38,290 We zien hier dus alles wat ik heb het uitvoeren van deze hele tijd. 508 00:26:38,290 --> 00:26:39,540 Veel ls's. 509 00:26:39,540 --> 00:26:41,570 510 00:26:41,570 --> 00:26:48,470 >> En een andere nuttige commando is grep dat het doel is om te zoeken via 511 00:26:48,470 --> 00:26:52,060 tekst op zoek naar patronen, goed, op zoek naar wat je 512 00:26:52,060 --> 00:26:53,310 wilt zoeken. 513 00:26:53,310 --> 00:26:59,770 En dus een handig gebruik hier is, zeg we willen de geschiedenis te grijpen. 514 00:26:59,770 --> 00:27:03,860 En ik wil op zoek naar de commando's waar ik - wat is een 515 00:27:03,860 --> 00:27:05,000 nuttig een te zoeken? 516 00:27:05,000 --> 00:27:06,898 >> JOSEPH: [onverstaanbaar]? 517 00:27:06,898 --> 00:27:09,710 >> ROB: Of laten we gewoon kijken naar alle raakt, om welke reden. 518 00:27:09,710 --> 00:27:13,850 Dus dit is wat het eruit zal zien. 519 00:27:13,850 --> 00:27:15,560 En je hoeft niet helemaal te begrijpen dat. 520 00:27:15,560 --> 00:27:20,570 Maar het idee is hier, is de geschiedenis geven dezelfde output die het hier deed 521 00:27:20,570 --> 00:27:25,030 waar het afdrukken van de hele geschiedenis van alles wat ik ooit heb uitgevoerd. 522 00:27:25,030 --> 00:27:27,030 We worden dan terloops op dat - 523 00:27:27,030 --> 00:27:30,230 dus in plaats van deze af te drukken op het scherm, we willen doorgeven dat de 524 00:27:30,230 --> 00:27:34,640 commando grep die op zoek is naar alle exemplaren van het woord aanraking. 525 00:27:34,640 --> 00:27:40,280 >> En zo het gebruik van deze combinatie van de gereedschap geschiedenis en grep, ik kan zien, OK, 526 00:27:40,280 --> 00:27:44,820 hier is alle commando's die ik ooit heb lopen, en hier is een ietwat voorkomende. 527 00:27:44,820 --> 00:27:45,510 We zitten op de onderkant. 528 00:27:45,510 --> 00:27:47,930 En het is ook mij de opdracht Ik liep dat had de 529 00:27:47,930 --> 00:27:51,240 woord tintje erin. 530 00:27:51,240 --> 00:27:58,500 Maar de pijp is een erg handig ding voor het combineren van meerdere programma. 531 00:27:58,500 --> 00:28:04,670 En eigenlijk, het is een snelkoppeling voor te laten me uitgang geschiedenis blah bestand, en 532 00:28:04,670 --> 00:28:10,190 laat me grep behulp van het bestand blah als wat ik wil om te kijken over. 533 00:28:10,190 --> 00:28:13,460 Dus de pijp is gewoon een snelkoppeling voor die twee commando. 534 00:28:13,460 --> 00:28:13,950 Ja. 535 00:28:13,950 --> 00:28:15,306 >> SPEAKER 4: [onverstaanbaar]? 536 00:28:15,306 --> 00:28:16,556 >> ROB: Ja. 537 00:28:16,556 --> 00:28:20,142 538 00:28:20,142 --> 00:28:21,110 Wat - 539 00:28:21,110 --> 00:28:21,858 Oh. 540 00:28:21,858 --> 00:28:24,820 Laten we eens testen. 541 00:28:24,820 --> 00:28:29,170 Dus kat, hond, vis. 542 00:28:29,170 --> 00:28:33,770 Dus ik wil grep. 543 00:28:33,770 --> 00:28:37,680 Dash, r, weer, zal worden recursief, dus ik wil afdalen 544 00:28:37,680 --> 00:28:38,870 alle mappen. 545 00:28:38,870 --> 00:28:43,210 Ik wil recursief grep voor iedereen - en laat me tijdelijk te krijgen 546 00:28:43,210 --> 00:28:44,460 deze uit de weg. 547 00:28:44,460 --> 00:28:48,650 548 00:28:48,650 --> 00:28:50,740 Negeer me. 549 00:28:50,740 --> 00:28:51,360 OK. 550 00:28:51,360 --> 00:28:56,740 >> Dus ik wil tijdelijk grep voor alle exemplaren van het woord vis. 551 00:28:56,740 --> 00:29:00,510 En dus even wat ik doe is Grepping recursief voor het woord vis. 552 00:29:00,510 --> 00:29:05,410 En ster betekent dan al deze bestanden in deze map. 553 00:29:05,410 --> 00:29:08,930 En dus het gaf me een Permission Denied, omdat het niet is toegestaan ​​om te lezen dat 554 00:29:08,930 --> 00:29:10,060 bepaald bestand. 555 00:29:10,060 --> 00:29:14,040 Maar vond vis in het bestand, test. 556 00:29:14,040 --> 00:29:18,450 >> Ik zou ook kunnen zeggen, in het bijzonder, maar ik willen kijken in het bestand blah, in 557 00:29:18,450 --> 00:29:19,580 welk geval het niets zal vinden. 558 00:29:19,580 --> 00:29:20,990 Ik wil alleen maar te kijken in het bestand test. 559 00:29:20,990 --> 00:29:22,240 Het zal vis. 560 00:29:22,240 --> 00:29:25,980 561 00:29:25,980 --> 00:29:29,260 Dat is een vrij nuttig commando te weten in het algemeen. 562 00:29:29,260 --> 00:29:31,640 Er zijn een aantal alternatieven voor grep die worden verondersteld om meer te zijn 563 00:29:31,640 --> 00:29:36,780 programmeur vriendelijk, maar ik ben geneigd om nog terug te vallen op grep. 564 00:29:36,780 --> 00:29:38,030 Vragen? 565 00:29:38,030 --> 00:29:39,965 566 00:29:39,965 --> 00:29:40,919 OK. 567 00:29:40,919 --> 00:29:42,520 >> Zijn er andere opdrachten? 568 00:29:42,520 --> 00:29:45,270 Oh. 569 00:29:45,270 --> 00:29:48,370 Slechts een eenmalige een die ik altijd vinden te zijn plezier is cal. 570 00:29:48,370 --> 00:29:55,610 Dus merken wanneer ik in dit prachtige full-screen modus, ik heb geen als top 571 00:29:55,610 --> 00:29:56,720 werkbalk of wat dan ook. 572 00:29:56,720 --> 00:29:59,530 Zo cal enkel geeft me een leuk klein kalender dat klopt 573 00:29:59,530 --> 00:30:02,380 nu afgesneden, neem ik aan. 574 00:30:02,380 --> 00:30:04,770 Maar leuke opdracht. 575 00:30:04,770 --> 00:30:06,540 >> JOSEPH: Het is [onverstaanbaar]. 576 00:30:06,540 --> 00:30:09,170 Andere commando's die u zou kunnen hebben gezien onder meer clang en te maken. 577 00:30:09,170 --> 00:30:11,180 We gaan over hen in meer detail later. 578 00:30:11,180 --> 00:30:13,400 Maar als je hebt gewerkt op de PSET, moet u 579 00:30:13,400 --> 00:30:15,160 vertrouwd zijn met deze. 580 00:30:15,160 --> 00:30:16,640 >> ROB: Oke. 581 00:30:16,640 --> 00:30:18,520 Vragen over command line dingen? 582 00:30:18,520 --> 00:30:22,450 583 00:30:22,450 --> 00:30:23,260 Oke. 584 00:30:23,260 --> 00:30:27,416 Dus laten we overgaan tot een aantal C-gerelateerde spullen. 585 00:30:27,416 --> 00:30:28,666 Variabelen wiskunde. 586 00:30:28,666 --> 00:30:39,078 587 00:30:39,078 --> 00:30:40,060 OK. 588 00:30:40,060 --> 00:30:45,230 Dus net zoals we hadden wiskunde in Scratch, U kunt ook gebruik maken van wiskunde in C. 589 00:30:45,230 --> 00:30:49,270 >> Voordat we naar die volledig, dus variabelen. 590 00:30:49,270 --> 00:30:53,920 Vergeet niet dat wanneer je verklaren een variabele zoals int x of float y, u 591 00:30:53,920 --> 00:30:56,710 moeten geven voordat typt de naam van de variabele. 592 00:30:56,710 --> 00:31:03,020 Dus soorten die we hebben gezien tot nu toe zijn int, float, dubbel, lang lang, die ik 593 00:31:03,020 --> 00:31:06,150 eigenlijk niet weten of we hebben gezien dat nu toe. 594 00:31:06,150 --> 00:31:07,700 >> Er zijn een aantal andere. 595 00:31:07,700 --> 00:31:09,990 We hebben zien char. 596 00:31:09,990 --> 00:31:13,920 Er is kort, dat is alsof het de tegenovergestelde van lange lange waar het 597 00:31:13,920 --> 00:31:16,650 kleiner dan een geheel getal. 598 00:31:16,650 --> 00:31:18,580 We hebben ook gezien string. 599 00:31:18,580 --> 00:31:23,070 Dus wat is er bijzonder aan touwtje? 600 00:31:23,070 --> 00:31:25,350 Waarom zou ik zeggen dat het niet helemaal zoals int? 601 00:31:25,350 --> 00:31:27,030 >> SPEAKER 4: Het maakt niet echt bestaan. 602 00:31:27,030 --> 00:31:27,990 >> ROB: Ja. 603 00:31:27,990 --> 00:31:31,820 Dus de enige reden waarom we hebben touwtje is, want als je dat doet 604 00:31:31,820 --> 00:31:33,215 hash, omvatten cs50.h. 605 00:31:33,215 --> 00:31:36,530 606 00:31:36,530 --> 00:31:42,670 En we zullen voorbeelden van deze later te zien - oh, dat betekent niet dat goed te behandelen - 607 00:31:42,670 --> 00:31:46,160 waar cs50.h iets doet langs de lijnen van het type 608 00:31:46,160 --> 00:31:49,230 def, char ster, string. 609 00:31:49,230 --> 00:31:53,280 >> En dat zegt dat we niet eens weten wat een char ster nog. 610 00:31:53,280 --> 00:31:56,770 Maar dit is te zeggen we willen string. 611 00:31:56,770 --> 00:32:00,250 Elke plek waar je geweest bent met string wordt u zou zijn met behulp van char ster, 612 00:32:00,250 --> 00:32:04,670 die eigenlijk een type dat bestaat in de C taal. 613 00:32:04,670 --> 00:32:06,680 Maar we krijgen dat. 614 00:32:06,680 --> 00:32:07,860 Oh, en het gaat terug. 615 00:32:07,860 --> 00:32:10,170 Netjes. 616 00:32:10,170 --> 00:32:15,370 >> Dus hetzelfde met bool waar waar en onwaar. 617 00:32:15,370 --> 00:32:22,510 Dat is niet echt een ingebouwd type in C. In plaats daarvan, het is gewoon, heeft dit 618 00:32:22,510 --> 00:32:23,740 de waarde nul? 619 00:32:23,740 --> 00:32:26,200 Dan zullen we maar eens kijken dat het is vals. 620 00:32:26,200 --> 00:32:27,350 Heeft dit de waarde - 621 00:32:27,350 --> 00:32:30,530 goed, heeft dit enig waarde die niet nul is? 622 00:32:30,530 --> 00:32:32,200 Dan zullen wij nadenken dat het waar is. 623 00:32:32,200 --> 00:32:35,940 Dus een waar twee waar, iets nul is waar. 624 00:32:35,940 --> 00:32:38,710 625 00:32:38,710 --> 00:32:42,790 Dus dat zijn degenen. 626 00:32:42,790 --> 00:32:47,624 Vragen over verklaren variabelen en variabele types en zo? 627 00:32:47,624 --> 00:32:48,100 Yeah. 628 00:32:48,100 --> 00:32:52,384 >> SPEAKER 4: Voor lange lange, in het boek, het zei dat het moest long long int. 629 00:32:52,384 --> 00:32:54,288 Maar zal net lang lang werken? 630 00:32:54,288 --> 00:32:58,210 631 00:32:58,210 --> 00:33:01,470 >> ROB: Dus dit soort modifiers. 632 00:33:01,470 --> 00:33:04,170 Dus int x. 633 00:33:04,170 --> 00:33:07,710 Dus we kunnen ook zeggen unsigned int x. 634 00:33:07,710 --> 00:33:09,640 We kunnen short int x zeggen. 635 00:33:09,640 --> 00:33:12,570 We kunnen lang lang zeggen int x. 636 00:33:12,570 --> 00:33:17,250 Maar vrijwel elk van die dingen die ik net zei, unsigned int, short int, 637 00:33:17,250 --> 00:33:21,480 long long int, kunt u zich te ontdoen van de int en het zal gewoon aannemen 638 00:33:21,480 --> 00:33:22,510 dat je bedoeld int. 639 00:33:22,510 --> 00:33:26,045 Dus unsigned x, wat betekent gewoon - 640 00:33:26,045 --> 00:33:29,400 je weet hoe je normaal met een int, je kunt zeggen dat x gelijk is aan negatieve 3? 641 00:33:29,400 --> 00:33:31,636 Met een unsigned int, kan je niet. 642 00:33:31,636 --> 00:33:34,480 >> JOSEPH: En nogmaals, voor de camera, de vraag was, wat is het verschil 643 00:33:34,480 --> 00:33:37,796 tussen long long int en net lang lang? 644 00:33:37,796 --> 00:33:38,410 >> ROB: Ja. 645 00:33:38,410 --> 00:33:42,850 Zo zal ik bijna nooit schrijven long long int. 646 00:33:42,850 --> 00:33:44,100 Ik zal lang lang schrijven. 647 00:33:44,100 --> 00:33:47,770 648 00:33:47,770 --> 00:33:50,636 >> JOSEPH: Heeft u nog vragen? 649 00:33:50,636 --> 00:33:51,886 >> ROB: OK. 650 00:33:51,886 --> 00:33:56,180 651 00:33:56,180 --> 00:34:02,390 Zo dom kleine herinnering van dat is hoe we verklaren een variabele en initialiseren 652 00:34:02,390 --> 00:34:04,450 de variabele en verklaar ander variabel en initialiseren 653 00:34:04,450 --> 00:34:05,870 het allemaal in een stap. 654 00:34:05,870 --> 00:34:09,370 Dus de verklaring van de variabele en de initialisatie variabele hoeft niet 655 00:34:09,370 --> 00:34:11,120 om maar kan op dezelfde lijn. 656 00:34:11,120 --> 00:34:15,409 657 00:34:15,409 --> 00:34:20,060 >> Dus hebben we de standaard rekenkundige operatoren dat je gewend bent - 658 00:34:20,060 --> 00:34:22,199 plus, min, delen, tijden. 659 00:34:22,199 --> 00:34:24,389 Er is ook modulo, die we zullen zien. 660 00:34:24,389 --> 00:34:29,060 Er is niet, althans C, een ingebouwde power 661 00:34:29,060 --> 00:34:31,765 machtsverheffen dakje operator. 662 00:34:31,765 --> 00:34:33,770 Nou, er is een dakje operator, maar het is niet de macht. 663 00:34:33,770 --> 00:34:34,239 >> JOSEPH: Maar het is niet machtsverheffen, Ja. 664 00:34:34,239 --> 00:34:36,210 >> ROB: niet het dakje gebruiken aannemen dat het betekent 665 00:34:36,210 --> 00:34:39,980 zoals kwadraat of wat dan ook. 666 00:34:39,980 --> 00:34:42,289 Dus sommige dingen in te houden gedachten over divisie. 667 00:34:42,289 --> 00:34:46,282 668 00:34:46,282 --> 00:34:48,880 Ik zal staan. 669 00:34:48,880 --> 00:34:51,315 Dus verklaarde initialize antwoord. 670 00:34:51,315 --> 00:34:54,670 Dus we vlotter antwoord zeggen gelijk aan 1 gedeeld door 10. 671 00:34:54,670 --> 00:34:57,500 Afdrukken antwoord op twee decimalen. 672 00:34:57,500 --> 00:35:02,180 >> En dit is het soort dingen die ik zou printf mens om erachter te komen dat 673 00:35:02,180 --> 00:35:05,110 wat de heck doet%, dot, 2f betekenen? 674 00:35:05,110 --> 00:35:07,930 En dat betekent, goed, het negeren van de 0.2. 675 00:35:07,930 --> 00:35:10,420 En%, f is wat we gebruiken afdrukken te zweven. 676 00:35:10,420 --> 00:35:15,370 De 0.2 is te zeggen, druk die drijven op twee decimalen. 677 00:35:15,370 --> 00:35:19,600 Dus dit programma heeft een bug, en je zou eerder hebben gezien dit in sommige 678 00:35:19,600 --> 00:35:20,870 voorafgaand CS natuurlijk. 679 00:35:20,870 --> 00:35:22,170 Maar wat is dat fout? 680 00:35:22,170 --> 00:35:23,050 >> SPEAKER 5: Zero. 681 00:35:23,050 --> 00:35:24,130 >> ROB: Ja. 682 00:35:24,130 --> 00:35:29,630 Dus als we zeggen, antwoord gelijk 1 gedeeld door 10, we willen dat de 683 00:35:29,630 --> 00:35:31,610 beantwoorden zijn 0.1. 684 00:35:31,610 --> 00:35:37,450 Maar 1 gedeeld door 10, 1 een integer, 10 een geheel getal is. 685 00:35:37,450 --> 00:35:41,060 En dus toen we doen een geheel getal gedeeld door een geheel getal, gaan we terug te krijgen 686 00:35:41,060 --> 00:35:42,190 een geheel getal. 687 00:35:42,190 --> 00:35:43,660 So 1 gedeeld door 10 is 0,1. 688 00:35:43,660 --> 00:35:46,760 >> Aangezien het nodig hebben een geheel getal geven, het is gewoon van plan om weg te gooien dat 689 00:35:46,760 --> 00:35:49,410 decimaal en zeggen dat het antwoord is 0. 690 00:35:49,410 --> 00:35:55,314 En dus toen we drukken antwoord hier, het gaat om af te drukken 0.00. 691 00:35:55,314 --> 00:35:58,430 >> JOSEPH: En net als een noot, het eigenlijk gooit wat is na de 692 00:35:58,430 --> 00:35:59,390 komma. 693 00:35:59,390 --> 00:36:03,180 Dus als je in plaats daarvan had 6 gedeeld door 10, zou je denken dat het u zou geven 694 00:36:03,180 --> 00:36:05,200 0.6 en dan zou je ronden op 1. 695 00:36:05,200 --> 00:36:10,520 Maar eigenlijk, wat er gebeurt wanneer het typt taken is dat valt wat is 696 00:36:10,520 --> 00:36:11,470 achter de komma. 697 00:36:11,470 --> 00:36:13,020 Dus 0.6 doet geworden 0. 698 00:36:13,020 --> 00:36:13,370 >> ROB: Ja. 699 00:36:13,370 --> 00:36:15,160 En we zullen afkappen zeggen dat. 700 00:36:15,160 --> 00:36:21,760 Dus wanneer je cast naar een int, de komma wordt afgekapt. 701 00:36:21,760 --> 00:36:23,980 Dus de oplossing voor dat - er is eigenlijk twee. 702 00:36:23,980 --> 00:36:27,890 En ik ga die tweede te doen, omdat dit is een veel eenvoudiger oplossing. 703 00:36:27,890 --> 00:36:32,670 >> Dus een oplossing is gebruik maken van praalwagens in de divisie. 704 00:36:32,670 --> 00:36:34,720 En echt, je alleen maar te maakt een van hen een vlotter. 705 00:36:34,720 --> 00:36:37,400 Maar het is iets duidelijker gewoon aan beide vlotters maken. 706 00:36:37,400 --> 00:36:41,170 Dus 1,0 gedeeld door 10,0 is verdelen twee drijvers. 707 00:36:41,170 --> 00:36:43,970 Dus het antwoord zal uiteindelijk op een een float, en dus je zal 708 00:36:43,970 --> 00:36:48,050 correct af te drukken 0.10 hier. 709 00:36:48,050 --> 00:36:52,220 >> Iets dat zo goed werkt niet over dat wil zeggen, goed, zeker, het was makkelijk 710 00:36:52,220 --> 00:36:56,240 genoeg converteren 1 een drijven waardoor het 1.0. 711 00:36:56,240 --> 00:37:02,180 Maar wat als in plaats daarvan hadden we twee getallen zoals int x gelijk is aan 1 en int y 712 00:37:02,180 --> 00:37:05,660 gelijk aan 10, en daarna wilden we te doen x gedeeld door y? 713 00:37:05,660 --> 00:37:10,420 Dus het is niet gemakkelijk om gewoon doen X.0 of zoiets. 714 00:37:10,420 --> 00:37:12,790 >> Dus de oplossing voor die casting. 715 00:37:12,790 --> 00:37:19,780 Dus gieten is een manier in C om te zetten van de ene variabele type naar het andere. 716 00:37:19,780 --> 00:37:22,320 Hier, 1 een geheel getal. 717 00:37:22,320 --> 00:37:27,050 En door de invoering van deze float voor het, we gieten 1 een float. 718 00:37:27,050 --> 00:37:30,350 En dus dit zal omzetten de 1 tot 1,0. 719 00:37:30,350 --> 00:37:33,380 En dit zal omzetten 10 een 10,0. 720 00:37:33,380 --> 00:37:36,790 >> En dan dingen werken op dezelfde manier de vorige versie hebben we alleen 721 00:37:36,790 --> 00:37:42,190 waar, zoals verwacht, krijgen we 0.10 en het zal drukken dat. 722 00:37:42,190 --> 00:37:44,120 En we kunnen dit doen met variabelen, ook. 723 00:37:44,120 --> 00:37:47,376 Dus we kunnen zeggen, float x gedeeld door float y. 724 00:37:47,376 --> 00:37:48,626 >> JOSEPH: Heeft u nog vragen? 725 00:37:48,626 --> 00:37:54,182 726 00:37:54,182 --> 00:38:00,090 >> ROB: Dus net als in de reguliere wiskunde, we hebben operator voorrang. 727 00:38:00,090 --> 00:38:06,960 Dus in wiskunde klas, heb je meer kans te noemen volgorde van de bewerkingen. 728 00:38:06,960 --> 00:38:09,890 Hier is de officiële term is operator voorrang. 729 00:38:09,890 --> 00:38:15,230 Maar de exploitant voorrang, of het meest operatoren, is zoals je zou verwachten. 730 00:38:15,230 --> 00:38:22,660 >> Dus net als in wiskunde, 2 maal 10 is gaan nauwer dan gegroepeerd 731 00:38:22,660 --> 00:38:25,410 deze 10 gedeeld door 2 en vervolgens op 2. 732 00:38:25,410 --> 00:38:29,745 De volgorde van de operaties, zal het doen 2 tijden 10, 10 gedeeld door 2, en 733 00:38:29,745 --> 00:38:32,720 het zal doen 20 plus 5 plus 2. 734 00:38:32,720 --> 00:38:37,020 Dus het is zoals verwacht, en u kunt gebruiken haakjes groeperen uitdrukkingen. 735 00:38:37,020 --> 00:38:41,063 U kunt geen haakjes gebruiken groep uitdrukkingen. 736 00:38:41,063 --> 00:38:41,544 Yeah? 737 00:38:41,544 --> 00:38:43,468 >> SPEAKER 5: Kunt u eigenlijk slechts een seconde terug te gaan? 738 00:38:43,468 --> 00:38:47,316 Kun je een int cast naar een string? 739 00:38:47,316 --> 00:38:53,330 >> ROB: Dus in C, kun je alles gegoten je wilt alles wat je wilt. 740 00:38:53,330 --> 00:38:55,600 Dat betekent niet dat het is een goede zaak te doen. 741 00:38:55,600 --> 00:38:59,760 Dus als je een int cast aan een string, dat betekent - 742 00:38:59,760 --> 00:39:03,240 en we krijgen in deze veel grondiger - 743 00:39:03,240 --> 00:39:03,720 >> JOSEPH: Veel later. 744 00:39:03,720 --> 00:39:06,840 >> ROB: Ik wilde niet veel later zeggen, dus ik heb geprobeerd om mijn zin te veranderen. 745 00:39:06,840 --> 00:39:13,370 We zullen veel grondiger krijgen in het later waar echt als je een 746 00:39:13,370 --> 00:39:14,810 tekenreeksvariabele - 747 00:39:14,810 --> 00:39:17,160 dus een string kan willekeurig worden lang, toch? 748 00:39:17,160 --> 00:39:21,850 En we hebben gezegd dat een int is vier bytes en lang lang is acht 749 00:39:21,850 --> 00:39:23,620 bytes en een float is vier bytes. 750 00:39:23,620 --> 00:39:29,520 Dus een string, net als een int, heeft slechts een aantal bytes aan. 751 00:39:29,520 --> 00:39:31,800 En dat zullen vier bytes. 752 00:39:31,800 --> 00:39:34,750 >> Maar een string kan mooi zijn willekeurig lange, toch? 753 00:39:34,750 --> 00:39:40,190 Dus hello wereld al, als dat is 10 tekens of wat dan ook, dat is al 754 00:39:40,190 --> 00:39:42,670 gaat worden over de 4 bytes Ik kan passen in een string. 755 00:39:42,670 --> 00:39:51,140 En dus hoe strings echt werken is dat ze zijn waar in het geheugen die string 756 00:39:51,140 --> 00:39:52,380 wordt gehouden. 757 00:39:52,380 --> 00:39:57,290 >> En zo hier, als ik zeg snaar x evenaart hello wereld, de binnenkant van x is 758 00:39:57,290 --> 00:40:01,840 alleen maar zeggen, oh, hallo wereld wordt opgeslagen op deze bijzondere plek in het geheugen. 759 00:40:01,840 --> 00:40:07,060 Dus als we proberen om een ​​integer werpen een snaar, dan we proberen te interpreteren 760 00:40:07,060 --> 00:40:10,500 enkele willekeurige deel van het geheugen als een string. 761 00:40:10,500 --> 00:40:14,465 En dat bijna altijd breekt dingen. 762 00:40:14,465 --> 00:40:17,040 >> JOSEPH: Maar als dat verwart je, we zijn over haar 763 00:40:17,040 --> 00:40:17,550 meer in de diepte later. 764 00:40:17,550 --> 00:40:17,850 >> ROB: Ja. 765 00:40:17,850 --> 00:40:20,540 Dit is waar je naartoe gaat te krijgen in pointers. 766 00:40:20,540 --> 00:40:25,485 En dat is een aanzienlijk deel van twee weken van deze cursus. 767 00:40:25,485 --> 00:40:28,275 >> SPEAKER 6: Werkt het als objecten in andere talen of niet echt? 768 00:40:28,275 --> 00:40:34,050 >> ROB: Dus met andere talen, voorwerpen zou worden weergegeven met behulp van pointers. 769 00:40:34,050 --> 00:40:37,070 770 00:40:37,070 --> 00:40:38,793 Het is niet hetzelfde, dat wel. 771 00:40:38,793 --> 00:40:42,110 772 00:40:42,110 --> 00:40:42,910 Elke gedachten? 773 00:40:42,910 --> 00:40:43,760 >> JOSEPH: Nee. 774 00:40:43,760 --> 00:40:44,185 Geen gedachten. 775 00:40:44,185 --> 00:40:44,980 >> ROB: OK. 776 00:40:44,980 --> 00:40:46,994 >> JOSEPH: Volgende. 777 00:40:46,994 --> 00:40:48,255 >> ROB: Gewoon gaan met die. 778 00:40:48,255 --> 00:40:48,670 Oke. 779 00:40:48,670 --> 00:40:51,120 Dus modulo. 780 00:40:51,120 --> 00:40:53,900 Net zoals we hebben plus, min, verdelen, en vermenigvuldigen. 781 00:40:53,900 --> 00:40:56,720 Dus modulo is degene die je kan niet eerder hebben gezien. 782 00:40:56,720 --> 00:40:59,540 En het gewoon zegt, geven me de rest van. 783 00:40:59,540 --> 00:41:02,850 Dus 55% 10. 784 00:41:02,850 --> 00:41:06,840 De rest van het doen 55 verdeeld 10 zou 5. 785 00:41:06,840 --> 00:41:09,630 Dus 55% 10 is 5. 786 00:41:09,630 --> 00:41:12,260 En 3% 5 zou 3. 787 00:41:12,260 --> 00:41:14,180 8% 8 aan 0. 788 00:41:14,180 --> 00:41:15,903 16% 15 zal 1. 789 00:41:15,903 --> 00:41:20,670 >> JOSEPH: Een ding om op te merken met deze, Ook is het misschien niet zoals verwacht 790 00:41:20,670 --> 00:41:22,700 als u een negatief getal te gebruiken. 791 00:41:22,700 --> 00:41:26,215 Zo negatief 5% 4, sommige mensen zou kunnen denken dat is - 792 00:41:26,215 --> 00:41:28,890 793 00:41:28,890 --> 00:41:33,808 wat zou je negatief denken 5% 4 zijn? 794 00:41:33,808 --> 00:41:34,792 >> SPEAKER 5: One. 795 00:41:34,792 --> 00:41:37,920 >> JOSEPH: Dus sommige mensen zeggen een, sommige mensen zeggen negatieve. 796 00:41:37,920 --> 00:41:38,450 Maar wat - 797 00:41:38,450 --> 00:41:40,820 >> ROB: Ik zou niet eens zei een van hen. 798 00:41:40,820 --> 00:41:42,370 >> JOSEPH: Twee, sorry. 799 00:41:42,370 --> 00:41:43,240 Sommige mensen zeggen - 800 00:41:43,240 --> 00:41:43,450 >> ROB: Drie. 801 00:41:43,450 --> 00:41:43,800 >> JOSEPH: Drie? 802 00:41:43,800 --> 00:41:44,890 >> ROB: Negatief - 803 00:41:44,890 --> 00:41:45,950 wat was het - negatieve vijf - 804 00:41:45,950 --> 00:41:47,100 >> JOSEPH: Drie, drie, drie. 805 00:41:47,100 --> 00:41:48,450 Sorry. 806 00:41:48,450 --> 00:41:51,910 Omdat modulo, algemeen, wanneer je hebt elders gezien, betekent dit meestal 807 00:41:51,910 --> 00:41:54,000 terug een positief getal, toch? 808 00:41:54,000 --> 00:42:01,160 >> ROB: Dus als we zeggen in wiskunde,% 10's, ze de neiging om je wil geven - 809 00:42:01,160 --> 00:42:05,980 als we mod door 10, dan verwachten we krijgen een nummer tussen 0 en 9. 810 00:42:05,980 --> 00:42:09,860 Hier, dat is niet zo dat je krijgt negatieve getallen terug. 811 00:42:09,860 --> 00:42:15,898 >> JOSEPH: Zo negatief 5% 4 zou negatief 1 zijn. 812 00:42:15,898 --> 00:42:19,325 >> ROB: Maar het is zeldzaam dat je mod-ing bent negatieve getallen om mee te beginnen. 813 00:42:19,325 --> 00:42:25,490 814 00:42:25,490 --> 00:42:25,970 Sla deze. 815 00:42:25,970 --> 00:42:27,314 >> JOSEPH: Ja. 816 00:42:27,314 --> 00:42:29,420 >> ROB: Meh. 817 00:42:29,420 --> 00:42:29,990 OK. 818 00:42:29,990 --> 00:42:36,400 Dus een laatste ding te wijzen over drijvers is dat het een gevaarlijk gedrag, 819 00:42:36,400 --> 00:42:39,850 maar praalwagens zijn geen exacte representatie. 820 00:42:39,850 --> 00:42:46,190 Dus terug naar bytes weer op gang, vergeet dat een int is altijd vier bytes en een 821 00:42:46,190 --> 00:42:47,830 float is altijd vier bytes. 822 00:42:47,830 --> 00:42:51,340 Dus Lucas bijvoorbeeld is vrij goed. 823 00:42:51,340 --> 00:42:55,730 >> Dus denk aan 1 gedeeld door 3. 824 00:42:55,730 --> 00:42:57,800 Dus 0,3333333. 825 00:42:57,800 --> 00:43:03,540 Als ik slechts 32 bits, hoe kan Ik bewaar 0,33333 precies? 826 00:43:03,540 --> 00:43:07,250 En misschien, om welke reden dan, zeg je, oke, goed, laten we maar zeggen 827 00:43:07,250 --> 00:43:13,210 dat deze specifieke 1011001, laten we gewoon zeggen dat zou moeten zijn 0,333333. 828 00:43:13,210 --> 00:43:16,960 Nou, heb je alleen een eindig aantal die bits, dus het is onmogelijk om 829 00:43:16,960 --> 00:43:22,550 vertegenwoordigen elk floating point waarde die slechts 32 bits. 830 00:43:22,550 --> 00:43:25,580 >> Nou, het is onmogelijk om te vertegenwoordigen floating point waarde die oneindige - 831 00:43:25,580 --> 00:43:28,480 goed, aangezien elk eindig aantal bits. 832 00:43:28,480 --> 00:43:38,265 Dus het probleem hier is, nou ja, toen we om af te drukken op twee decimalen, 833 00:43:38,265 --> 00:43:42,000 we hebben juist krijgt het antwoord 0.10. 834 00:43:42,000 --> 00:43:47,510 Maar onder de motorkap, het is echt worden opgeslagen zo dicht mogelijk bij 835 00:43:47,510 --> 00:43:51,790 0,10 zoals die bits kan vertegenwoordigen. 836 00:43:51,790 --> 00:43:53,200 Is dit op de volgende dia? 837 00:43:53,200 --> 00:43:53,830 Of is het niet? 838 00:43:53,830 --> 00:43:54,660 >> JOSEPH: Ja, het is dat. 839 00:43:54,660 --> 00:43:55,750 >> ROB: Blegh, blegh. 840 00:43:55,750 --> 00:43:57,760 >> JOSEPH: Ja, je kunt gewoon Trek de noten een beetje. 841 00:43:57,760 --> 00:43:59,700 >> ROB: Ik ga gewoon om in te zoomen in het laatste op geven. 842 00:43:59,700 --> 00:44:00,950 Oh mijn god, dat is [onverstaanbaar]. 843 00:44:00,950 --> 00:44:06,089 844 00:44:06,089 --> 00:44:08,300 Zodat nummer. 845 00:44:08,300 --> 00:44:12,300 Dat is wat zal worden gedrukt als we dat programma uitvoeren. 846 00:44:12,300 --> 00:44:20,340 En merk dat is niet echt een big deal als we alleen zijn zorg over als 847 00:44:20,340 --> 00:44:21,920 02:58 decimalen. 848 00:44:21,920 --> 00:44:26,700 Alsof we alleen oorspronkelijk gedrukt 0.10, en dat is waarom we niets verkeerd zagen. 849 00:44:26,700 --> 00:44:31,380 Maar als we eenmaal beginnen met het krijgen in de precies, exact aantal dat het 850 00:44:31,380 --> 00:44:35,660 vertegenwoordigen, zien we dat het niet kan precies vertegenwoordigen 0.1. 851 00:44:35,660 --> 00:44:40,900 >> En een deel van het probleem is als, oke, dat is prima, maar goed, 852 00:44:40,900 --> 00:44:46,120 eerste, wat als we proberen te doen, antwoord is gelijk aan gelijk aan 0.1? 853 00:44:46,120 --> 00:44:49,200 Gaat dat waar of onwaar terug? 854 00:44:49,200 --> 00:44:51,850 En dus het is moeilijk te zeggen. 855 00:44:51,850 --> 00:44:53,330 Ik denk dat het eigenlijk waar zou kunnen terugkeren. 856 00:44:53,330 --> 00:44:55,265 Zal het eerst - 857 00:44:55,265 --> 00:44:56,180 Ik weet het niet. 858 00:44:56,180 --> 00:45:00,090 Het antwoord is als je eenmaal begint te maken met floating point waarden, je behoorlijk 859 00:45:00,090 --> 00:45:05,150 veel niet gebruiken gelijkheid als gevolg van deze onduidelijkheid. 860 00:45:05,150 --> 00:45:09,470 >> En voor alles wat je weet, het is de honderdste decimaal dat de 861 00:45:09,470 --> 00:45:13,670 floating point was niet in staat te kunnen verwerken. 862 00:45:13,670 --> 00:45:18,180 En dus gelijkheid zal gewoon niet zelfs hoewel het nummer - als u was geweest 863 00:45:18,180 --> 00:45:24,450 gebruik van exacte getallen, de getallen moet hebben precies hetzelfde geweest. 864 00:45:24,450 --> 00:45:27,790 Het is in de loop van als 50 berekeningen met deze drijvende 865 00:45:27,790 --> 00:45:30,270 punt waarden, kan de fout bouwen omhoog en omhoog en omhoog, en 866 00:45:30,270 --> 00:45:31,125 dingen gewoon verkeerd. 867 00:45:31,125 --> 00:45:33,870 >> JOSEPH: En zijn er echt geweest bekendste voorbeelden van dit gebeuren. 868 00:45:33,870 --> 00:45:37,190 Net als NASA-ingenieurs deze hebben gekregen verkeerd, waardoor raketten te exploderen in 869 00:45:37,190 --> 00:45:38,665 de lucht nadat ze zijn gestart. 870 00:45:38,665 --> 00:45:41,490 En veel problemen als dat. 871 00:45:41,490 --> 00:45:41,956 Dus ja. 872 00:45:41,956 --> 00:45:45,218 >> SPEAKER 6: Als je zegt 0,3 f, doet het afkappen de rest? 873 00:45:45,218 --> 00:45:46,468 Of is het afronden naar boven of beneden? 874 00:45:46,468 --> 00:45:48,800 875 00:45:48,800 --> 00:45:50,200 >> ROB: Zal ​​printf omheen? 876 00:45:50,200 --> 00:45:52,180 >> JOSEPH: Ik denk printf afknottingen. 877 00:45:52,180 --> 00:45:52,640 >> ROB: OK. 878 00:45:52,640 --> 00:45:59,890 Dus we kunnen zo ook in de tegenovergestelde richting van deze waar in dit geval 879 00:45:59,890 --> 00:46:03,320 het dichtst kon vertegenwoordigen 0.1 was met dit nummer. 880 00:46:03,320 --> 00:46:06,820 De dichtstbijzijnde is het misschien in staat zijn om 0.2 vertegenwoordigen in de tegenovergestelde 881 00:46:06,820 --> 00:46:11,420 richting, ,199999996356 of zoiets. 882 00:46:11,420 --> 00:46:17,480 Dus als we gingen in die richting van dingen, dan printf 0,3 f zou terugkeren 883 00:46:17,480 --> 00:46:20,866 1.99 in plaats van 2,00. 884 00:46:20,866 --> 00:46:22,960 >> JOSEPH: En ik ben niet helemaal zeker op dat. 885 00:46:22,960 --> 00:46:25,430 U wilt misschien een klein, weinig schrijven programma om gewoon controleren dat. 886 00:46:25,430 --> 00:46:29,370 >> ROB: Hoewel, wat wij zijn er zeker van is dat als je probeerde te werpen dat een 887 00:46:29,370 --> 00:46:33,660 int, en gieten naar een int gaat veroorzaken de decimale afkappen, indien 888 00:46:33,660 --> 00:46:38,140 je probeert te werpen 1.9999999 naar een int, krijg je 1. 889 00:46:38,140 --> 00:46:41,440 En dus moet je over het algemeen gebruik maken van de round functie in de wiskunde bibliotheek. 890 00:46:41,440 --> 00:46:44,190 891 00:46:44,190 --> 00:46:45,440 Vragen? 892 00:46:45,440 --> 00:46:47,660 893 00:46:47,660 --> 00:46:48,982 OK. 894 00:46:48,982 --> 00:46:54,000 >> JOSEPH: Dus u naar de voorwaarden en Booleaanse expressies. 895 00:46:54,000 --> 00:46:58,120 Dus je hebt gezien deze. 896 00:46:58,120 --> 00:47:07,420 En eigenlijk wil ik dat mijn maken computer is in het juiste formaat hier. 897 00:47:07,420 --> 00:47:08,670 Ruimte. 898 00:47:08,670 --> 00:47:10,630 899 00:47:10,630 --> 00:47:13,870 Sorry, we gaan te maken hebben een beetje met cutoff aan de randen. 900 00:47:13,870 --> 00:47:15,830 >> Maar ja, jullie hebben gezien dit eerder in Scratch. 901 00:47:15,830 --> 00:47:19,930 Dus dit hier is een uitdrukking die wordt gebruikt in 902 00:47:19,930 --> 00:47:21,250 een voorwaardelijke verklaring. 903 00:47:21,250 --> 00:47:23,930 Dus antwoord groter dan nul vertellen u waar of onwaar. 904 00:47:23,930 --> 00:47:26,530 En deze zijn echt belangrijk, omdat ze laten ons in te voeren 905 00:47:26,530 --> 00:47:28,670 logica in onze code. 906 00:47:28,670 --> 00:47:32,820 >> Dus bijvoorbeeld, is een programma geschreven in Scratch dat de gebruiker vraagt 907 00:47:32,820 --> 00:47:36,980 voor een integer en vertelt hen of het getal dat ze je gaf was een 908 00:47:36,980 --> 00:47:38,690 positief of negatief getal. 909 00:47:38,690 --> 00:47:42,980 En de omzetting hier te zien is u eerst een afdruk van de verklaring, 910 00:47:42,980 --> 00:47:43,870 geef me een integer. 911 00:47:43,870 --> 00:47:45,980 En ze dan vragen om een ​​geheel getal. 912 00:47:45,980 --> 00:47:49,870 >> En dan voorwaardelijke logica gebruikt u dan hier om te controleren of dat nummer 913 00:47:49,870 --> 00:47:52,030 was zelfs groter dan nul of niet. 914 00:47:52,030 --> 00:47:58,960 Dus hier hebben we een Booleaanse uitdrukking binnenkant van een voorwaardelijke Als verklaring. 915 00:47:58,960 --> 00:48:00,660 Is er nog vragen? 916 00:48:00,660 --> 00:48:03,030 Zijn er nog vragen over? 917 00:48:03,030 --> 00:48:03,950 OK. 918 00:48:03,950 --> 00:48:06,140 >> Dus er is meer dan alleen groter dan, natuurlijk. 919 00:48:06,140 --> 00:48:10,385 U kunt Booleaanse uitdrukkingen construeren gebruik van de meeste van de soorten van dingen die je 920 00:48:10,385 --> 00:48:11,150 zou denken in wiskunde. 921 00:48:11,150 --> 00:48:12,370 Dus groter dan. 922 00:48:12,370 --> 00:48:13,740 Dat moet minder zijn dan. 923 00:48:13,740 --> 00:48:14,990 Sorry. 924 00:48:14,990 --> 00:48:18,520 925 00:48:18,520 --> 00:48:19,760 En de afstand. 926 00:48:19,760 --> 00:48:22,971 >> ROB: God verhoede je het laat. 927 00:48:22,971 --> 00:48:23,620 >> JOSEPH: Oke. 928 00:48:23,620 --> 00:48:25,950 Dus groter dan, kleiner dan, groter dan, of gelijk aan, kleiner 929 00:48:25,950 --> 00:48:27,070 dan of gelijk aan. 930 00:48:27,070 --> 00:48:31,980 We maken gebruik van dubbel is om te controleren op gelijkheid, omdat enkele evenaart middelen 931 00:48:31,980 --> 00:48:32,810 opdracht, toch? 932 00:48:32,810 --> 00:48:33,140 Ja. 933 00:48:33,140 --> 00:48:37,130 En dan kunnen we ook niet gelijk aan niet door gebruik uitroepteken, evenaart. 934 00:48:37,130 --> 00:48:41,530 >> En dit uitroepteken symbool kan ook worden uitgebreid, zodat als je wilt 935 00:48:41,530 --> 00:48:44,050 om elke vorm van Booleaanse inverteren uitdrukking, kun je dat doen. 936 00:48:44,050 --> 00:48:48,530 Dus dit zal evalueren om waar indien het antwoord minder 937 00:48:48,530 --> 00:48:51,240 dan of gelijk aan nul. 938 00:48:51,240 --> 00:48:53,950 Heeft u vragen over zeggen? 939 00:48:53,950 --> 00:48:55,180 OK. 940 00:48:55,180 --> 00:48:58,840 >> Zo kunt u ook deze combineren uitdrukkingen met behulp van logische en en 941 00:48:58,840 --> 00:48:59,790 logisch Or. 942 00:48:59,790 --> 00:49:03,530 Dus dit is gewoon de En-symbool, die moet Shift, 7 zijn. 943 00:49:03,530 --> 00:49:07,720 En dit is de pijp symbool, dat is niet een kleine letter L. Het is het een 944 00:49:07,720 --> 00:49:09,440 dat is recht boven je Enter-toets. 945 00:49:09,440 --> 00:49:12,870 Zodat u twee van deze gebruiken om te symboliseren logisch En de logische Or. 946 00:49:12,870 --> 00:49:18,180 >> Dus dit is alleen maar waar terugkeren als antwoord een, twee, drie, of vier. 947 00:49:18,180 --> 00:49:23,030 En dit zal enige ware terugkeren als antwoord buiten dat aan beide zijden. 948 00:49:23,030 --> 00:49:26,190 Dus het is niet een, twee, drie, of vier. 949 00:49:26,190 --> 00:49:28,385 En de manier waarop je zou gebruiken dat in een expressie - 950 00:49:28,385 --> 00:49:29,990 >> ROB: Of een nul of een vijf. 951 00:49:29,990 --> 00:49:32,200 >> JOSEPH: nul of een vijf. 952 00:49:32,200 --> 00:49:32,380 Sorry. 953 00:49:32,380 --> 00:49:33,320 Ja, ja, ja. 954 00:49:33,320 --> 00:49:34,180 OK. 955 00:49:34,180 --> 00:49:38,980 En dan nu hier, op dezelfde manier als zou die uitdrukking te gebruiken, een kleiner 956 00:49:38,980 --> 00:49:42,000 expressie kant van een If voorwaardelijke verklaring, zou je het ook gebruiken de 957 00:49:42,000 --> 00:49:47,800 dezelfde manier door zomaar te binnen van de haakjes van het If statement. 958 00:49:47,800 --> 00:49:54,020 Dus dit printf alleen ontslaan als antwoord een, twee, drie, of vier. 959 00:49:54,020 --> 00:49:56,002 Heeft u vragen op het combineren uitdrukkingen? 960 00:49:56,002 --> 00:50:00,450 961 00:50:00,450 --> 00:50:04,240 >> Dus er is nog een voorwaardelijke construeren we noemen een If / Else. 962 00:50:04,240 --> 00:50:08,120 Dus eigenlijk, dit betekent nu, OK, als iets wat ik wilde controleren niet was 963 00:50:08,120 --> 00:50:11,600 waar is, ga dan naar de Else en uitvoeren die andere actie. 964 00:50:11,600 --> 00:50:15,570 Dus in dit geval, vroeg ik de gebruiker voor een geheel getal. 965 00:50:15,570 --> 00:50:17,790 Het gehele getal groter dan nul? 966 00:50:17,790 --> 00:50:18,310 Ja? 967 00:50:18,310 --> 00:50:20,100 Nou, dan pakte ze een positief getal. 968 00:50:20,100 --> 00:50:22,320 Zo niet, dan moet het hebben negatief of nul geweest. 969 00:50:22,320 --> 00:50:27,530 Dus u een negatief getal geplukt of in dit geval nul. 970 00:50:27,530 --> 00:50:29,235 Ja. 971 00:50:29,235 --> 00:50:30,485 Of nul. 972 00:50:30,485 --> 00:50:36,320 973 00:50:36,320 --> 00:50:39,300 >> En dan hebben we ook If / Else, Indien en Else. 974 00:50:39,300 --> 00:50:45,640 Dus dit laat ons een reeks van uit te voeren dingen alleen als de eersten mislukken. 975 00:50:45,640 --> 00:50:49,540 Dus in dit geval, nu we maken de laatste die u nul halen. 976 00:50:49,540 --> 00:50:53,080 Dus als ze niet geplukt een positieve noch een negatief getal, dan moet ze 977 00:50:53,080 --> 00:50:53,640 hebben nul geplukt. 978 00:50:53,640 --> 00:50:56,720 Dus het gaat gewoon naar beneden de keten als deze. 979 00:50:56,720 --> 00:50:59,960 >> Dus een voorbeeld van hoe een Als verschilt van - 980 00:50:59,960 --> 00:51:02,590 een If / Else is anders slechts een opeenvolging van Ifs. 981 00:51:02,590 --> 00:51:07,680 En dit is een veel voorkomende vraag die mensen vragen is, nou ja, als je als een 982 00:51:07,680 --> 00:51:11,265 95 CS50, zal wat dit programma u vertellen? 983 00:51:11,265 --> 00:51:12,600 >> SPEAKER 5: Je hebt een A. 984 00:51:12,600 --> 00:51:13,490 >> JOSEPH: Ja. 985 00:51:13,490 --> 00:51:14,960 Je hebt elke een van die rechter. 986 00:51:14,960 --> 00:51:17,130 Je hebt een A, je hebt een B, je kreeg een C en een D, toch? 987 00:51:17,130 --> 00:51:19,770 Dus al deze krijgen geëvalueerd in orde is. 988 00:51:19,770 --> 00:51:23,570 Dus terwijl een 95 groter is dan 90, is het ook groter dan 80, het is ook 989 00:51:23,570 --> 00:51:25,790 groter dan 70 en het ook groter dan 60. 990 00:51:25,790 --> 00:51:27,620 Dus je hebt al die kwaliteiten. 991 00:51:27,620 --> 00:51:31,630 En ik neem aan dat je dat zou doen willen alleen de A. 992 00:51:31,630 --> 00:51:34,060 >> De manier om vast te stellen dat in de plaats komt degenen met Else / Als 's. 993 00:51:34,060 --> 00:51:37,540 Dus in dit scenario, het ziet dat 95 groter dan 90 en dan maakt 994 00:51:37,540 --> 00:51:38,885 niet de rest te evalueren van de verklaringen. 995 00:51:38,885 --> 00:51:41,900 996 00:51:41,900 --> 00:51:43,150 Heeft u vragen over dat? 997 00:51:43,150 --> 00:51:48,580 998 00:51:48,580 --> 00:51:52,470 >> Dus er is nog een voorwaardelijke soort structuur die we hier hebben, die we 999 00:51:52,470 --> 00:51:53,390 bel een switch statement. 1000 00:51:53,390 --> 00:51:57,390 Hiermee kun je dus in principe controleren wat de waarde van een getal je 1001 00:51:57,390 --> 00:51:59,000 in de switch statement is. 1002 00:51:59,000 --> 00:52:03,200 Dus in dit scenario, we schakelen op n, en we zeggen, oh, als n 1003 00:52:03,200 --> 00:52:04,710 een, dan afdrukken die verklaring. 1004 00:52:04,710 --> 00:52:07,910 En dan breken, welke afslag betekent uit de instructie switch. 1005 00:52:07,910 --> 00:52:12,670 >> Als het niet een, dan, nou ja, gewoon uiteindelijk al die gevallen controleren. 1006 00:52:12,670 --> 00:52:16,280 En dus kijkt het of het een of twee of drie, en dienovereenkomstig wordt afgedrukt. 1007 00:52:16,280 --> 00:52:19,780 En wat dit standaard zoekwoord hier beneden middel is als ze niet heeft ingevuld 1008 00:52:19,780 --> 00:52:21,690 van die, dan zeg Ongeldige. 1009 00:52:21,690 --> 00:52:25,910 Dus laten we zeggen dat ik vraag om n en de gebruiker geeft me vier. 1010 00:52:25,910 --> 00:52:29,470 Nou, het past geen van deze gevallen, dus het zal drukken wat er in de 1011 00:52:29,470 --> 00:52:30,540 standaard sectie. 1012 00:52:30,540 --> 00:52:31,180 Ja, vraag? 1013 00:52:31,180 --> 00:52:32,614 >> SPEAKER 5: Kunt u Boolean gebruiken uitdrukkingen plaats van 1014 00:52:32,614 --> 00:52:33,570 een, twee, of drie? 1015 00:52:33,570 --> 00:52:36,940 >> JOSEPH: Dus de vraag is kunt u gebruik maken van Booleaanse expressies plaats van een, 1016 00:52:36,940 --> 00:52:37,940 twee en drie? 1017 00:52:37,940 --> 00:52:40,520 En in C, ik geloof je kan dat niet doen. 1018 00:52:40,520 --> 00:52:44,320 Maar in andere talen, die je misschien tegenkomen op het einde van de 1019 00:52:44,320 --> 00:52:46,460 semester zoals JavaScript, je kunt. 1020 00:52:46,460 --> 00:52:50,050 Nou, zou je eerst berekenen die waarde en vervolgens gebruiken in de 1021 00:52:50,050 --> 00:52:50,650 switch statement. 1022 00:52:50,650 --> 00:52:50,930 Yeah? 1023 00:52:50,930 --> 00:52:54,760 >> ROB: Dus een deel van het voordeel van de schakelaar verklaringen is denken als je dit hebt gedaan 1024 00:52:54,760 --> 00:52:58,680 als een If / Else, dus net als n gelijk staat voor een of wat dan ook. 1025 00:52:58,680 --> 00:53:00,300 Else / Als n gelijk is twee, wat dan ook. 1026 00:53:00,300 --> 00:53:01,960 Else / Als n gelijk is drie. 1027 00:53:01,960 --> 00:53:05,930 Dus de manier waarop het programma zou lopen is het zou achtereenvolgens naar beneden die lijst 1028 00:53:05,930 --> 00:53:07,500 en controleren, is n een? 1029 00:53:07,500 --> 00:53:08,040 Nope. 1030 00:53:08,040 --> 00:53:09,070 Is n twee? 1031 00:53:09,070 --> 00:53:09,490 Nope. 1032 00:53:09,490 --> 00:53:10,940 Is n drie? 1033 00:53:10,940 --> 00:53:11,710 Yeah. 1034 00:53:11,710 --> 00:53:12,610 Doe dit. 1035 00:53:12,610 --> 00:53:15,270 >> Overwegende met schakelaar statements, het is daadwerkelijk in staat te compileren dat het is 1036 00:53:15,270 --> 00:53:16,360 echt snel. 1037 00:53:16,360 --> 00:53:19,550 En zodra het zegt schakelaar, zegt, oke, n is twee, ben ik 1038 00:53:19,550 --> 00:53:23,060 meteen gaat springen naar waar Ik moet gaan uitvoeren. 1039 00:53:23,060 --> 00:53:26,080 Ik ben niet van plan om eerst te controleren, is n een, is n twee? 1040 00:53:26,080 --> 00:53:28,860 Het kan onmiddellijk beginnen met het doen wat het verondersteld wordt te doen. 1041 00:53:28,860 --> 00:53:33,830 >> En daarom, het kan niet nemen Boolean voorwaarden. 1042 00:53:33,830 --> 00:53:36,480 Of anders zou moeten doen de sequentieel, zoals, oke, is n 1043 00:53:36,480 --> 00:53:37,820 groter dan nul? 1044 00:53:37,820 --> 00:53:41,140 Else is n groter is dan 10 of wat dan ook. 1045 00:53:41,140 --> 00:53:44,780 >> JOSEPH: In dit geval, als je gewend If / Else, Als het, dan is de schakelaar zou 1046 00:53:44,780 --> 00:53:47,792 rijden ongeveer drie keer sneller dan de If / Else, Als. 1047 00:53:47,792 --> 00:53:53,060 1048 00:53:53,060 --> 00:53:56,040 We kunnen de schakelaar zo in te een manier die wij niet breken 1049 00:53:56,040 --> 00:53:57,520 na elk van de gevallen. 1050 00:53:57,520 --> 00:54:00,960 Dus in dit geval, ik ben het partitioneren van de nummers die we kiezen in een en 1051 00:54:00,960 --> 00:54:04,250 twee zijn geen hoge aantallen en drie zijn een groot aantal. 1052 00:54:04,250 --> 00:54:08,290 >> Dus in dit geval, wanneer n een of twee is het geval zal raken en dan zal het 1053 00:54:08,290 --> 00:54:10,640 vallen door, omdat er is geen pauze. 1054 00:54:10,640 --> 00:54:11,610 En het zal hier eindigen. 1055 00:54:11,610 --> 00:54:15,360 Dus als we kiezen een, zal het de printf doen en dan breken zodat geen van 1056 00:54:15,360 --> 00:54:17,610 Dit wordt uitgevoerd. 1057 00:54:17,610 --> 00:54:21,870 En natuurlijk, als zij komen binnen drie of iets anders, dan zal overslaan 1058 00:54:21,870 --> 00:54:25,320 deze en niet naar daar, en het zal in plaats daarvan voeren de 1059 00:54:25,320 --> 00:54:27,490 bijbehorende lijn. 1060 00:54:27,490 --> 00:54:29,390 Zijn er nog vragen over? 1061 00:54:29,390 --> 00:54:29,780 Ja? 1062 00:54:29,780 --> 00:54:32,642 >> SPEAKER 4: Zou u een foutmelding krijgt als je had een pauze na het geval een, maar het 1063 00:54:32,642 --> 00:54:34,550 is er iets niet voor te doen? 1064 00:54:34,550 --> 00:54:37,820 >> JOSEPH: Dus de vraag is zou je een fout als je een pauze na 1065 00:54:37,820 --> 00:54:39,730 het geval een, maar er is niets te doen? 1066 00:54:39,730 --> 00:54:41,520 En het antwoord is nee. 1067 00:54:41,520 --> 00:54:43,172 Je zal niet echt een fout. 1068 00:54:43,172 --> 00:54:44,590 Ja, mm hmm. 1069 00:54:44,590 --> 00:54:54,540 >> Dus als een soort van een kleine verandering hier, Ik ga een printf hier plaatsen. 1070 00:54:54,540 --> 00:54:55,790 Whoops. 1071 00:54:55,790 --> 00:55:00,994 1072 00:55:00,994 --> 00:55:04,880 Dus wat zou deze afdrukken als Ik zette een in als input? 1073 00:55:04,880 --> 00:55:07,530 1074 00:55:07,530 --> 00:55:07,770 Yeah. 1075 00:55:07,770 --> 00:55:10,360 Het zou u zeggen dat geen rekening een groot aantal twee keer, toch? 1076 00:55:10,360 --> 00:55:13,500 Omdat het dat eerste geval zou raken, het zou niet breken, en het zou vallen 1077 00:55:13,500 --> 00:55:15,730 met het tweede geval. 1078 00:55:15,730 --> 00:55:16,950 Heeft u vragen over dat? 1079 00:55:16,950 --> 00:55:18,280 >> ROB: Heeft u een andere vraag? 1080 00:55:18,280 --> 00:55:20,840 >> JOSEPH: OK, koelen. 1081 00:55:20,840 --> 00:55:22,400 Oke. 1082 00:55:22,400 --> 00:55:25,780 Dus er is iets anders wat we noemen een ternaire operator die in feite een 1083 00:55:25,780 --> 00:55:29,010 alternatieve syntax te doen Indien en vervolgens Else. 1084 00:55:29,010 --> 00:55:30,470 En het laat je het allemaal op een lijn. 1085 00:55:30,470 --> 00:55:34,110 Dus in dit programma, Ik vraag de gebruiker voor n. 1086 00:55:34,110 --> 00:55:37,190 En als n groter is dan 100, ik zeg ze kozen ze een hoog aantal. 1087 00:55:37,190 --> 00:55:39,560 Anders ik vertel hen dat ze pakte een laag getal. 1088 00:55:39,560 --> 00:55:43,030 >> Dus we kunnen dit echt lang syntaxis, snaar, S, en dan controleren of n 1089 00:55:43,030 --> 00:55:45,260 groter dan 100 en toewijzen dienovereenkomstig. 1090 00:55:45,260 --> 00:55:49,450 Maar we kunnen dit veel bondiger maken door het gebruik van deze ternaire operator syntaxis 1091 00:55:49,450 --> 00:55:52,090 die een vraag impliceert merk en een dubbele punt. 1092 00:55:52,090 --> 00:55:55,070 Dus het vraagteken is in wezen het stellen van een vraag, toch? 1093 00:55:55,070 --> 00:55:56,625 >> ROB: Misschien in te zoomen op dat. 1094 00:55:56,625 --> 00:55:57,372 >> JOSEPH: Ja. 1095 00:55:57,372 --> 00:56:00,210 Goed punt. 1096 00:56:00,210 --> 00:56:02,550 Dus dit is de ternaire operator. 1097 00:56:02,550 --> 00:56:06,100 Ik voor het eerst de vraag te stellen, is n groter dan 100? 1098 00:56:06,100 --> 00:56:09,770 Als het is, dan voer ik de eerste gedeelte voor de dubbele punt. 1099 00:56:09,770 --> 00:56:13,360 Als het niet, dan voer ik de tweede deel na de dubbele punt. 1100 00:56:13,360 --> 00:56:16,640 Als n groter is dan 100, dan pakt hoog en zet 1101 00:56:16,640 --> 00:56:18,360 dat in tekenreeks s. 1102 00:56:18,360 --> 00:56:22,170 Als n kleiner is dan 100, het lage pikt en zet dan is dat in de tekenreeks s. 1103 00:56:22,170 --> 00:56:30,186 Dus dat zal dit grote brok condenseren beneden in die ene lijn. 1104 00:56:30,186 --> 00:56:32,010 >> SPEAKER 5: Is dat populair? 1105 00:56:32,010 --> 00:56:36,070 >> JOSEPH: Ja, het is heel populair voor dingen waar wezen je wilt 1106 00:56:36,070 --> 00:56:38,700 heb een opdracht op basis van een soort van aandoening. 1107 00:56:38,700 --> 00:56:43,110 En in dit geval, werden we proberen om een ​​waarde toe te kennen aan tekenreeks s. 1108 00:56:43,110 --> 00:56:44,840 Het is niet zo - 1109 00:56:44,840 --> 00:56:47,670 Ik denk dat ik niet echt de voorkeur in andere gevallen. 1110 00:56:47,670 --> 00:56:49,390 Maar het is vooral handig voor deze opdracht. 1111 00:56:49,390 --> 00:56:54,490 >> ROB: Dat is een vrij normaal patroon waar je een aantal variabele die 1112 00:56:54,490 --> 00:56:58,200 je gaat zeggen, als er iets, set deze variabele om een ​​waarde, anders, stellen 1113 00:56:58,200 --> 00:56:59,810 deze variabele een andere waarde. 1114 00:56:59,810 --> 00:57:03,360 En dat is het scenario waar gebruik van een ternair. 1115 00:57:03,360 --> 00:57:05,220 >> JOSEPH: En je bespaart veel lijnen, toch? 1116 00:57:05,220 --> 00:57:08,090 En het gewoon maakt je code misschien wel een beetje meer leesbaar. 1117 00:57:08,090 --> 00:57:08,635 Ja, vraag? 1118 00:57:08,635 --> 00:57:12,384 >> SPEAKER 6: Voor een ternair, kun je gaan, snaar s gelijken s, vraagteken? 1119 00:57:12,384 --> 00:57:15,280 En dan kun je, laten we zeggen, vijf verschillende opties. 1120 00:57:15,280 --> 00:57:18,310 En afhankelijk van het aantal n was, zou u een van die? 1121 00:57:18,310 --> 00:57:22,210 >> JOSEPH: Dus de vraag is, is er een soort syntax waar je string kan doen 1122 00:57:22,210 --> 00:57:25,910 s is gelijk aan n, en dan meer dan twee opties na dat vraagteken? 1123 00:57:25,910 --> 00:57:29,740 En een eenvoudig antwoord is nee, er is geen echt een goede manier om dat te doen, tenzij 1124 00:57:29,740 --> 00:57:33,850 die u wilt nesten meerdere ternair ondernemingen binnen elkaar. 1125 00:57:33,850 --> 00:57:38,050 >> Je zou kunnen doen als n groter is dan 100, vraagteken, en dan nog 1126 00:57:38,050 --> 00:57:41,850 ternaire operator, n groter is dan 50, vraagteken, en nest op die manier. 1127 00:57:41,850 --> 00:57:45,240 Maar in dat scenario, uw code is word een beetje onleesbaar en rommelig, 1128 00:57:45,240 --> 00:57:47,920 en is het misschien beter om gewoon naar een If / Else verklaring op dat punt. 1129 00:57:47,920 --> 00:57:54,530 >> ROB: En ook, als een kanttekening, PHP verkeerd implementeert de ternaire 1130 00:57:54,530 --> 00:57:58,053 operator zodanig dat geneste ternaries zelfs niet werken zoals ze zouden moeten. 1131 00:57:58,053 --> 00:57:58,840 >> JOSEPH: Ja. 1132 00:57:58,840 --> 00:58:01,170 Dus het wordt een beetje verwarrend, vooral als je gaat 1133 00:58:01,170 --> 00:58:02,145 verschillende talen. 1134 00:58:02,145 --> 00:58:04,810 >> ROB: Het is verwarrend genoeg dat talen zijn verkeerd over. 1135 00:58:04,810 --> 00:58:08,030 1136 00:58:08,030 --> 00:58:11,510 >> JOSEPH: Dus eigenlijk, gewoon om te verduidelijken, weet iedereen wat dat 1137 00:58:11,510 --> 00:58:13,900 % S doet hier? 1138 00:58:13,900 --> 00:58:15,650 Heeft u vragen over dat? 1139 00:58:15,650 --> 00:58:19,760 Ik denk dat alleen voor de camera, de% s laat eigenlijk ons ​​zet een placeholder 1140 00:58:19,760 --> 00:58:20,790 voor een string. 1141 00:58:20,790 --> 00:58:23,920 En dan aan het einde, we aangeven dat de variabele willen we in deze om te zetten 1142 00:58:23,920 --> 00:58:25,500 place holder is s. 1143 00:58:25,500 --> 00:58:27,730 Dus dat duurt in principe s en zet het in hier. 1144 00:58:27,730 --> 00:58:32,130 En dan zal het uitprinten, je pakte een hoog of je pakte een laag getal. 1145 00:58:32,130 --> 00:58:33,770 OK. 1146 00:58:33,770 --> 00:58:36,970 >> Dus loops kun je dingen uit te voeren in cirkelvormige bewegingen, toch? 1147 00:58:36,970 --> 00:58:40,300 Je zou dit hebben ondervonden in Scratch in de vorm van Forever lussen 1148 00:58:40,300 --> 00:58:45,650 of herhalen totdat of herhalen van een bepaalde aantal keren. 1149 00:58:45,650 --> 00:58:47,540 Dus waarom is dit goed voor ons? 1150 00:58:47,540 --> 00:58:51,500 Nou, in C, laten we zeggen dat we dit lied geïmplementeerd in Scratch dat 1151 00:58:51,500 --> 00:58:53,450 sings, is het nummer dat nooit eindigt. 1152 00:58:53,450 --> 00:58:55,710 Het gaat maar door en door en voor altijd en eeuwig. 1153 00:58:55,710 --> 00:58:59,395 Nou, je kunt niet echt een programma maken dat heeft een oneindig aantal printf 1154 00:58:59,395 --> 00:59:00,850 verklaringen in, toch? 1155 00:59:00,850 --> 00:59:04,900 >> Dus in dit scenario, een manier dat je dit werk zou kunnen maken en 1156 00:59:04,900 --> 00:59:09,330 om het voor altijd te drukken is door in plaats daarvan een While-lus. 1157 00:59:09,330 --> 00:59:13,640 Dus een While-lus zal uitvoeren wat is in het lichaam van de twee beugels die 1158 00:59:13,640 --> 00:59:17,250 behoort tot het op basis van wat de aandoening. 1159 00:59:17,250 --> 00:59:21,170 Dus in dit voorbeeld voor indien we willen dit voor altijd af te drukken, wat 1160 00:59:21,170 --> 00:59:23,590 kunnen we doen? 1161 00:59:23,590 --> 00:59:25,190 Nou ja, zeker, toch? 1162 00:59:25,190 --> 00:59:32,290 >> Dus dit soort combineert het idee sommige Booleaanse uitdrukking 1163 00:59:32,290 --> 00:59:33,610 samen met een lus. 1164 00:59:33,610 --> 00:59:35,780 En we leerden over Booleaanse uitdrukkingen eerder. 1165 00:59:35,780 --> 00:59:39,650 Dus wanneer de toestand binnenkant van Terwijl dat waar blijft, deze lus 1166 00:59:39,650 --> 00:59:41,480 zal uitvoeren op en op en op. 1167 00:59:41,480 --> 00:59:44,640 En in dit geval, als we gewoon leveren het met echte, veroorzaakt dit een oneindige 1168 00:59:44,640 --> 00:59:49,310 lus die het lied drukt op en op en als wij gewenst eerder zonder 1169 00:59:49,310 --> 00:59:52,410 met een programma dat een oneindige heeft aantal printf verklaringen, die is 1170 00:59:52,410 --> 00:59:55,220 niet mogelijk. 1171 00:59:55,220 --> 00:59:57,810 >> Dus meer dwingend, hoewel, u kunt deze gebruiken met een 1172 00:59:57,810 --> 00:59:59,710 variabele en een voorwaarde. 1173 00:59:59,710 --> 01:00:04,420 Dus laten we zeggen dat we willen herhalen zin, totaal geschift, 10 keer. 1174 01:00:04,420 --> 01:00:08,380 Dus wat je kunt doen met een While-lus is kunt u eerst een teller initialiseren 1175 01:00:08,380 --> 01:00:10,860 variabele buiten de Terwijl lus tot 10. 1176 01:00:10,860 --> 01:00:14,360 En dan in principe, elke keer dat je gaat door de While-lus, print je uit 1177 01:00:14,360 --> 01:00:19,090 de verklaring en dan verminderen de tellervariabele tot eind, 1178 01:00:19,090 --> 01:00:23,020 op een gegeven moment, als we aftrekken ik genoeg tijden, 1 van I vaak genoeg - 1179 01:00:23,020 --> 01:00:27,290 en gewoon te verduidelijken, ik minus minus betekent dat ik gelijk ik minus 1. 1180 01:00:27,290 --> 01:00:31,280 >> Dat zal in principe breng ik naar beneden naar de punt waar zodra ik hit nul, wordt dit 1181 01:00:31,280 --> 01:00:35,260 voorwaarde is niet langer waar en dus het verlaat uit de lus. 1182 01:00:35,260 --> 01:00:37,045 Zo totaal geschift drukt slechts 10 keer. 1183 01:00:37,045 --> 01:00:39,550 1184 01:00:39,550 --> 01:00:41,080 Heeft u vragen over een While-lus? 1185 01:00:41,080 --> 01:00:44,580 1186 01:00:44,580 --> 01:00:46,790 OK. 1187 01:00:46,790 --> 01:00:50,550 >> Dus er is een manier waarop we kunnen doen wat we net deed in een meer beknopte wijze met 1188 01:00:50,550 --> 01:00:51,715 wat wij noemen een For-lus. 1189 01:00:51,715 --> 01:00:55,750 Dus een For-lus bestaat uit een initialisatie, een voorwaarde, en een 1190 01:00:55,750 --> 01:00:58,950 bijwerken, net als we eerder hadden in deze While-lus. 1191 01:00:58,950 --> 01:00:59,890 Dus laten we eens een kijkje nemen. 1192 01:00:59,890 --> 01:01:02,900 In deze While-lus, hadden we een initialisatie, dan hadden we een 1193 01:01:02,900 --> 01:01:04,260 voorwaarde dat we gecontroleerd. 1194 01:01:04,260 --> 01:01:06,450 En dan een update hadden we stap bovenaan. 1195 01:01:06,450 --> 01:01:10,060 >> Met een For-lus, dit duurt in principe deze drie dingen en condenseert het 1196 01:01:10,060 --> 01:01:11,370 naar beneden in een lijn. 1197 01:01:11,370 --> 01:01:15,130 Dus het eerste wat zij doet in de For-lus is de initialisatie. 1198 01:01:15,130 --> 01:01:19,090 En dan een puntkomma doe je, en dan je doet de voorwaarde, die ik 1199 01:01:19,090 --> 01:01:22,200 groter dan nul gaat daar, en vervolgens de update stap. 1200 01:01:22,200 --> 01:01:26,470 Dus wordt dit uitgevoerd op het einde van de lus lichaam. 1201 01:01:26,470 --> 01:01:28,790 Dus deze twee programma's zijn hoofdzaak equivalent. 1202 01:01:28,790 --> 01:01:31,960 1203 01:01:31,960 --> 01:01:33,870 >> Heeft u nog vragen? 1204 01:01:33,870 --> 01:01:37,000 Dus wat is een verschil tussen deze twee? 1205 01:01:37,000 --> 01:01:38,000 Kan iedereen wijzen het uit? 1206 01:01:38,000 --> 01:01:40,480 Het is misschien een beetje subtiel. 1207 01:01:40,480 --> 01:01:41,930 Het is gewoon een heel klein verschil. 1208 01:01:41,930 --> 01:01:42,330 Ja? 1209 01:01:42,330 --> 01:01:49,008 >> SPEAKER 5: Je zou het niet kunnen gebruiken de I variabele buiten de For-lus 1210 01:01:49,008 --> 01:01:49,962 [Onverstaanbaar]? 1211 01:01:49,962 --> 01:01:50,900 >> JOSEPH: Precies. 1212 01:01:50,900 --> 01:01:53,550 Dus dit is iets wat we zullen krijgen later belde variabele reikwijdte. 1213 01:01:53,550 --> 01:01:56,610 Maar in wezen is dit int ik leven buiten deze While-lus. 1214 01:01:56,610 --> 01:01:59,800 Dus zodra deze While-lus wordt gedaan uitvoeren, zal ik in staat om later te gebruiken I 1215 01:01:59,800 --> 01:02:00,880 op in het programma. 1216 01:02:00,880 --> 01:02:05,430 >> Overwegende dat met deze For-lus, dit int I is scoped binnenkant van deze For-lus. 1217 01:02:05,430 --> 01:02:10,240 En omdat het is de binnenkant van dit deel van de For-lus, die begint 1218 01:02:10,240 --> 01:02:13,200 op de haakjes en eindigt met de accolade daar. 1219 01:02:13,200 --> 01:02:16,120 Alles dat verklaard binnenkant van hier kan niet buiten gebruikt. 1220 01:02:16,120 --> 01:02:20,420 Dus als ik probeer om buiten gebruik ik, het zal vertel me, zwart symbool. 1221 01:02:20,420 --> 01:02:22,420 En in wezen, zou ik niet in staat zijn om het te gebruiken. 1222 01:02:22,420 --> 01:02:28,460 >> ROB: En ja, 10 jaar geleden, in letterlijk alle gevallen, accolades zijn 1223 01:02:28,460 --> 01:02:31,140 wat je gebruikt om te bepalen het bereik van een variabele. 1224 01:02:31,140 --> 01:02:37,240 Dus daar, int ik gelijk aan 10 is de binnenkant van deze verklaard 1225 01:02:37,240 --> 01:02:38,520 set van accolades. 1226 01:02:38,520 --> 01:02:42,530 En zo dan zo lang als je probeert om die ik gebruik voordat deze accolade, het is prima. 1227 01:02:42,530 --> 01:02:47,090 1228 01:02:47,090 --> 01:02:51,460 U kunt zien wanneer u typt te maken, je zie dash, dash, std, evenaart, C99. 1229 01:02:51,460 --> 01:02:57,100 >> Dus dat is een latere versie van C die GCC heeft geïmplementeerd dat geeft ook 1230 01:02:57,100 --> 01:02:58,740 deze snelkoppeling. 1231 01:02:58,740 --> 01:03:03,505 Dus dit was vroeger niet toegestaan ​​in C. En kunt u zien waarom, want dit int 1232 01:03:03,505 --> 01:03:07,600 Ik is buiten deze accolade maar het is nog steeds beschouwd als de 1233 01:03:07,600 --> 01:03:09,750 reikwijdte van deze accolades. 1234 01:03:09,750 --> 01:03:14,120 Maar dit is een erg handig ding, en dus is een goede extensie. 1235 01:03:14,120 --> 01:03:15,370 >> JOSEPH: Heeft u nog vragen? 1236 01:03:15,370 --> 01:03:17,550 1237 01:03:17,550 --> 01:03:19,260 OK. 1238 01:03:19,260 --> 01:03:22,820 Dus wat is nuttiger is dat soms je wilt soort dynamiek in 1239 01:03:22,820 --> 01:03:23,410 je loop, toch? 1240 01:03:23,410 --> 01:03:26,350 U wilt niet alleen per se af te drukken volkomen geschift de hele tijd, je 1241 01:03:26,350 --> 01:03:28,650 af te tellen vanaf 10 of zo. 1242 01:03:28,650 --> 01:03:32,010 En zo kan je de teller variabele gebruiken binnenkant van die lus ook. 1243 01:03:32,010 --> 01:03:35,530 En in dit geval, het programma gewoon telt af van 10 helemaal naar beneden. 1244 01:03:35,530 --> 01:03:39,260 En wat doet het niet af? 1245 01:03:39,260 --> 01:03:42,790 Het doet niet af aan nul, recht, want als - 1246 01:03:42,790 --> 01:03:45,460 Ja, het doet ook niet af 11. 1247 01:03:45,460 --> 01:03:49,200 >> Zodat het niet afgedrukt nul, want als Ik nul is, vergeet niet, het evalueert 1248 01:03:49,200 --> 01:03:52,170 de staat voordat het gaat over het luslichaam te voeren. 1249 01:03:52,170 --> 01:03:56,820 En toen ik nul is, dit is vals, zo het niet uitprinten aftellen 1250 01:03:56,820 --> 01:04:00,200 nul, drukt het gewoon uit te tellen een daling van 10 helemaal naar beneden tot 1. 1251 01:04:00,200 --> 01:04:03,420 Als we eigenlijk wilden het afdrukken nul, dan zouden we een gelijk-teken te zetten 1252 01:04:03,420 --> 01:04:04,750 na deze groter dan teken. 1253 01:04:04,750 --> 01:04:09,400 1254 01:04:09,400 --> 01:04:10,130 OK. 1255 01:04:10,130 --> 01:04:16,410 >> Dus een manier om input validatie doen, die is wanneer u de gebruiker vragen om te doen 1256 01:04:16,410 --> 01:04:18,620 iets, je wilt dat ze doen volg je de instructies, is het gebruik van 1257 01:04:18,620 --> 01:04:19,400 de While-lus, toch? 1258 01:04:19,400 --> 01:04:22,990 Dus in dit geval, ik vraag voor een positief getal, dan ben ik 1259 01:04:22,990 --> 01:04:23,810 wacht op invoer. 1260 01:04:23,810 --> 01:04:28,210 >> En dan heb ik gecontroleerd Terwijl de ingang minder dan nul, houden hen te vragen. 1261 01:04:28,210 --> 01:04:32,100 Dus zolang ze geven me een aantal dat is niet positief, blijven vragen, 1262 01:04:32,100 --> 01:04:33,600 blijven vragen, blijven vragen. 1263 01:04:33,600 --> 01:04:35,860 Maar wat is een soort van raar over dit? 1264 01:04:35,860 --> 01:04:38,570 Of wat lijkt niet optimaal over deze structuur hier? 1265 01:04:38,570 --> 01:04:44,282 1266 01:04:44,282 --> 01:04:44,758 Iedereen? 1267 01:04:44,758 --> 01:04:45,234 Ja? 1268 01:04:45,234 --> 01:04:47,614 >> SPEAKER 6: Je herhalen de instructie twee keer. 1269 01:04:47,614 --> 01:04:48,100 >> JOSEPH: Juist. 1270 01:04:48,100 --> 01:04:50,090 Dus hebben we twee printf verklaringen hier, toch? 1271 01:04:50,090 --> 01:04:53,440 Dus er is een manier waarop we konden dit gewoon neer op een, dat zou onze 1272 01:04:53,440 --> 01:04:57,170 code gemakkelijker te lezen en een beetje meer schoon. 1273 01:04:57,170 --> 01:05:00,180 En dan zouden we niet moeten hebben Neem twee keer zo goed. 1274 01:05:00,180 --> 01:05:03,740 En een manier waarop je dit kunt doen is met behulp van een Do-While-lus. 1275 01:05:03,740 --> 01:05:07,670 >> En een do-while lus is in feite een andere vorm van een While-lus waar 1276 01:05:07,670 --> 01:05:11,460 alles wat in de accolades wordt ten minste eenmaal uitgevoerd. 1277 01:05:11,460 --> 01:05:14,840 Dus hier, verklaar ik, int ingang buiten eerste. 1278 01:05:14,840 --> 01:05:18,100 En dan zeg ik gewoon, doe dit instructie terwijl ingang 1279 01:05:18,100 --> 01:05:19,140 kleiner is dan nul. 1280 01:05:19,140 --> 01:05:20,530 Dus het raakt eerst de Do. 1281 01:05:20,530 --> 01:05:24,190 Zij zal dit altijd ten uitvoer ten minste een keer, dus het zal altijd de gebruiker vragen 1282 01:05:24,190 --> 01:05:25,960 voor invoer tenminste eenmaal. 1283 01:05:25,960 --> 01:05:29,390 En dan evalueert die ingang, en het gaat op in een cirkel. 1284 01:05:29,390 --> 01:05:30,135 Ja, vraag? 1285 01:05:30,135 --> 01:05:32,602 >> SPEAKER 6: Is er een manier om het te doen [Onverstaanbaar] soorten, zoals als je zegt, 1286 01:05:32,602 --> 01:05:34,268 GetString, en iemand [onverstaanbaar] 1287 01:05:34,268 --> 01:05:35,220 is er een manier om [onverstaanbaar] 1288 01:05:35,220 --> 01:05:40,060 >> JOSEPH: Dus de vraag is, is er een manier om de validatie van invoer doen als de gebruiker 1289 01:05:40,060 --> 01:05:41,850 niet in de juiste type variabele? 1290 01:05:41,850 --> 01:05:44,460 Dus als we vragen om een ​​int en ze geven ons een string in plaats daarvan. 1291 01:05:44,460 --> 01:05:49,110 En in de functies die we uitvoeren voor u, getint, GetString in alle 1292 01:05:49,110 --> 01:05:52,680 die functies, maar die eigenlijk al doen dat soort basic input type 1293 01:05:52,680 --> 01:05:54,120 validering onder de motorkap. 1294 01:05:54,120 --> 01:05:57,390 Dus als je gebruik maakt van de functies die we gaf je, hoef je niet echt hoeft te doen. 1295 01:05:57,390 --> 01:06:01,380 >> Maar als je meer wilt kijken naar hoe je kunt eigenlijk doen, kunt u kijken 1296 01:06:01,380 --> 01:06:03,360 onder de motorkap bij het bestand I/O-- 1297 01:06:03,360 --> 01:06:07,990 niet bestand, de standaard I / O-functies als een lezen van standaard input en 1298 01:06:07,990 --> 01:06:08,580 standaard output. 1299 01:06:08,580 --> 01:06:10,630 En je kunt een beter gevoel te krijgen van hoe je zou kunnen doen. 1300 01:06:10,630 --> 01:06:13,670 >> ROB: Een kwestie is echter specifiek met het voorbeeld dat je 1301 01:06:13,670 --> 01:06:17,070 zei een string verwacht je en ik voer een int. 1302 01:06:17,070 --> 01:06:20,110 Hoe zou u het verschil te vertellen tussen opzettelijk willen de 1303 01:06:20,110 --> 01:06:23,130 snaar 123 versus willen de int 123? 1304 01:06:23,130 --> 01:06:29,230 Dus touwtje, het is vrij veel is er geen validatie, het is gewoon wat ze 1305 01:06:29,230 --> 01:06:31,600 ingevoerd, wordt u interpreteren als een string. 1306 01:06:31,600 --> 01:06:35,790 >> Int is makkelijker, omdat niet uit de ingang u van de gebruiker, u bent 1307 01:06:35,790 --> 01:06:37,470 altijd het nemen van een string. 1308 01:06:37,470 --> 01:06:40,650 En zo die string u kunt dan controleren, zijn al deze 1309 01:06:40,650 --> 01:06:44,218 eigenlijk numerieke cijfers? 1310 01:06:44,218 --> 01:06:45,170 >> JOSEPH: OK. 1311 01:06:45,170 --> 01:06:46,420 Heeft u vragen over een Do-While-lus? 1312 01:06:46,420 --> 01:06:49,170 >> ROB: Oh, en dit is ook - 1313 01:06:49,170 --> 01:06:55,130 terug te gaan naar omvang, een enigszins gemeenschappelijk fout probeert te gebruiken een aantal lokale 1314 01:06:55,130 --> 01:06:59,540 variabele vanuit deze Do-While lus binnenkant van deze aandoening. 1315 01:06:59,540 --> 01:07:02,850 En eigenlijk, als we net verlost van dit en zei, int ingang gelijk 1316 01:07:02,850 --> 01:07:06,990 Getint, dan is de compiler zal schreeuwen op ons, want ingang bestaat niet 1317 01:07:06,990 --> 01:07:08,900 buiten het bereik van deze accolades. 1318 01:07:08,900 --> 01:07:10,792 >> JOSEPH: En dat is waarom we moet hier deze lineup. 1319 01:07:10,792 --> 01:07:13,620 1320 01:07:13,620 --> 01:07:14,630 OK. 1321 01:07:14,630 --> 01:07:17,530 Zo kunt u ook uit te breken van een lus vroeg als je wilt. 1322 01:07:17,530 --> 01:07:21,240 Dus dit is een andere manier van uitvoering van wat we net geïmplementeerd. 1323 01:07:21,240 --> 01:07:24,340 En in plaats van de aandoening binnen de haakjes, gebruiken we een 1324 01:07:24,340 --> 01:07:26,920 Als verklaring binnenkant van het lichaam van de do-while lus. 1325 01:07:26,920 --> 01:07:30,000 >> En eigenlijk, wanneer de ingang is eindelijk groter dan nul, zullen we 1326 01:07:30,000 --> 01:07:31,000 breken van de lus. 1327 01:07:31,000 --> 01:07:33,420 En dus gaan we allemaal de weg naar hier beneden. 1328 01:07:33,420 --> 01:07:37,920 En je kunt zien dat dit zou waarschijnlijk de voorkeur in deze 1329 01:07:37,920 --> 01:07:39,870 scenario, want het is een beetje beetje schoner en een beetje 1330 01:07:39,870 --> 01:07:41,380 stuk makkelijker om te lezen. 1331 01:07:41,380 --> 01:07:45,210 Overwegende dat deze, je soort van aanvullende lijnen in het. 1332 01:07:45,210 --> 01:07:47,890 Het is gewoon een beetje lelijker, Ik denk dat, in zekere zin. 1333 01:07:47,890 --> 01:07:48,530 Ja, vraag? 1334 01:07:48,530 --> 01:07:52,178 >> SPEAKER 4: Zal ​​alleen breken krijgen je uit een set bretels? 1335 01:07:52,178 --> 01:07:53,080 >> JOSEPH: Juist. 1336 01:07:53,080 --> 01:07:58,100 Dus de vraag is alleen breken je uit een lus? 1337 01:07:58,100 --> 01:07:59,280 En het antwoord is ja. 1338 01:07:59,280 --> 01:08:04,290 Dus als je geneste For-lussen, voor Bijvoorbeeld, als ik heb voor int I gelijk is aan 0 1339 01:08:04,290 --> 01:08:09,040 tot 10 en dan voor int J gelijk is aan 0 tot 10, als ik het breken van de innerlijke 1340 01:08:09,040 --> 01:08:12,310 loop, zal ik nog steeds gaan de buitenste lus. 1341 01:08:12,310 --> 01:08:15,760 Dus het zal blijven presteren de operaties op de buitenkant. 1342 01:08:15,760 --> 01:08:17,640 Heeft u vragen over dat? 1343 01:08:17,640 --> 01:08:18,000 Ja? 1344 01:08:18,000 --> 01:08:21,760 >> SPEAKER 5: Maar breken alleen functies voor accolades, niet voor andere 1345 01:08:21,760 --> 01:08:22,230 uitspraken? 1346 01:08:22,230 --> 01:08:22,700 [Onverstaanbaar] 1347 01:08:22,700 --> 01:08:27,620 >> JOSEPH: Dus de vraag is zal breken enige functie lussen tegenover 1348 01:08:27,620 --> 01:08:29,014 andere uitspraken als If? 1349 01:08:29,014 --> 01:08:32,950 En ja, dat is het geval, omdat Je breekt uit een lus, recht, 1350 01:08:32,950 --> 01:08:33,630 in zekere zin. 1351 01:08:33,630 --> 01:08:37,215 >> ROB: In de overgrote meerderheid van de gevallen, het is dit is het soort Als er iets, 1352 01:08:37,215 --> 01:08:37,660 dan breken. 1353 01:08:37,660 --> 01:08:41,580 Dus je hoeft niet te breken van toepassing op Als dat het is inpakken omheen. 1354 01:08:41,580 --> 01:08:45,250 En ook is dit niet zo'n lus, maar vergeet niet dat switches zijn ook 1355 01:08:45,250 --> 01:08:46,340 uit gebroken door pauzes. 1356 01:08:46,340 --> 01:08:48,390 We zagen pauzes wordt gebruikt met schakelaars voor. 1357 01:08:48,390 --> 01:08:52,189 >> JOSEPH: En je kunt ze ook gebruiken Terwijl in lussen en For-lussen. 1358 01:08:52,189 --> 01:08:54,560 Heeft u nog vragen? 1359 01:08:54,560 --> 01:08:55,830 OK. 1360 01:08:55,830 --> 01:08:57,779 Dus de volgende up is functies. 1361 01:08:57,779 --> 01:09:01,500 Dus je zou gebruik hebben gemaakt van een van deze BYOB blokken in uw Scratch project. 1362 01:09:01,500 --> 01:09:04,569 En dit maakt in principe u om een ​​reeks te definiëren 1363 01:09:04,569 --> 01:09:05,680 instructies te volgen. 1364 01:09:05,680 --> 01:09:09,569 >> En wat ik daarmee bedoel is laten we denken terug naar wiskunde, rechts, algebra. 1365 01:09:09,569 --> 01:09:13,370 Je hebt wat we een functie van x noemen, enkele variabele, en laten we dit zeggen 1366 01:09:13,370 --> 01:09:16,080 functie is f van x is gelijk aan x plus 5. 1367 01:09:16,080 --> 01:09:20,410 Zo kunt u denken aan f van x als deze zwarte box die 15 neemt in en vervolgens 1368 01:09:20,410 --> 01:09:22,590 20 produceert. 1369 01:09:22,590 --> 01:09:26,630 >> Dus algemeen iedere functie iets dat sommige ingangen en draait 1370 01:09:26,630 --> 01:09:27,880 dan produceert een aantal uitgangen. 1371 01:09:27,880 --> 01:09:31,920 1372 01:09:31,920 --> 01:09:32,960 En waarom zijn functies goed? 1373 01:09:32,960 --> 01:09:35,189 Ze zijn goed voor een aantal redenen. 1374 01:09:35,189 --> 01:09:40,470 Dus heeft iemand wil een gooi te nemen bij welke organisatie betekent? 1375 01:09:40,470 --> 01:09:42,630 In termen van waarom functies zijn nuttig? 1376 01:09:42,630 --> 01:09:43,090 Ja? 1377 01:09:43,090 --> 01:09:44,735 >> SPEAKER 4: Het maakt je code beter leesbaar. 1378 01:09:44,735 --> 01:09:45,399 >> JOSEPH: Juist. 1379 01:09:45,399 --> 01:09:47,670 Dus een van de dingen is het maakt uw code beter leesbaar, toch? 1380 01:09:47,670 --> 01:09:53,710 In plaats van zoals int x gelijk aan x maal x maal x, kan ik kubus van x hebben, 1381 01:09:53,710 --> 01:09:57,190 dat is beter leesbaar en meer begrijpelijk voor een lezer. 1382 01:09:57,190 --> 01:10:01,150 >> Organisatie is ook in termen van opsplitsen van uw code in hanteerbare 1383 01:10:01,150 --> 01:10:05,610 delen, zodat in plaats van het proberen om uitvoering van dit alles in een lange sectie 1384 01:10:05,610 --> 01:10:09,070 in de belangrijkste, kun je een soort van split up in als, OK, laten we schrijven een functie 1385 01:10:09,070 --> 01:10:11,910 iets kubus, laten we schrijven functie om iets te regelen. 1386 01:10:11,910 --> 01:10:15,950 Op die manier kun je het op te splitsen in kleine, kleine onderdelen die je kunt pakken 1387 01:10:15,950 --> 01:10:18,944 in tegenstelling tot het proberen aan te pakken een groot probleem in een keer. 1388 01:10:18,944 --> 01:10:21,806 >> ROB: Of zelfs uiterst klein, weinig onderdelen die u en een partner kunnen aanpakken. 1389 01:10:21,806 --> 01:10:22,283 >> JOSEPH: Ja. 1390 01:10:22,283 --> 01:10:23,855 >> ROB: In plaats van beide Probeer je een implantaat 1391 01:10:23,855 --> 01:10:27,170 werken tegelijkertijd. 1392 01:10:27,170 --> 01:10:28,800 >> JOSEPH: Vereenvoudiging. 1393 01:10:28,800 --> 01:10:30,050 Wil iemand een gok te nemen? 1394 01:10:30,050 --> 01:10:33,080 1395 01:10:33,080 --> 01:10:33,410 Ja? 1396 01:10:33,410 --> 01:10:34,675 >> SPEAKER 5: Meer herhaling. 1397 01:10:34,675 --> 01:10:35,260 >> JOSEPH: Juist. 1398 01:10:35,260 --> 01:10:39,210 Dus een ding dat je kunt doen met vereenvoudiging is dat het soort op 1399 01:10:39,210 --> 01:10:42,520 dezelfde lijnen als herbruikbaarheid is dat zodra ik schrijf een kubus functie, kan ik 1400 01:10:42,520 --> 01:10:45,410 gebruik gewoon dat over en over en over weer in mijn programma in plaats van te typen 1401 01:10:45,410 --> 01:10:49,610 x maal x maal x over en over en weer. 1402 01:10:49,610 --> 01:10:52,980 En vereenvoudiging hier ook gewoon betekent het maakt je code soort 1403 01:10:52,980 --> 01:10:55,900 makkelijker te debuggen als je eenmaal splitsen deze op in functies. 1404 01:10:55,900 --> 01:10:58,250 Want dan kun je waar lokaliseren uw problemen soort zijn. 1405 01:10:58,250 --> 01:11:00,910 1406 01:11:00,910 --> 01:11:02,160 Heeft u nog vragen? 1407 01:11:02,160 --> 01:11:04,200 1408 01:11:04,200 --> 01:11:06,540 >> Dus een ander idee is abstractie, toch? 1409 01:11:06,540 --> 01:11:07,390 Deze zwarte doos. 1410 01:11:07,390 --> 01:11:11,360 Net weet je wat getInt doet om input van de gebruiker? 1411 01:11:11,360 --> 01:11:12,510 We hebben niet echt verteld, toch? 1412 01:11:12,510 --> 01:11:15,670 Alles wat we hebben je verteld is getInt doet precies wat het zegt dat het doet. 1413 01:11:15,670 --> 01:11:18,440 Dus zelfs als we je niet vertellen hoe het werkt, weet je toch. 1414 01:11:18,440 --> 01:11:21,670 >> Dus in dit geval, is een viervoudige functie die doet 1415 01:11:21,670 --> 01:11:24,520 verschillende dingen voor een ingang een output. 1416 01:11:24,520 --> 01:11:28,050 En u kunt een aantal verviervoudigen door te vermenigvuldigen met vier. 1417 01:11:28,050 --> 01:11:30,790 Of u kunt wat wij noemen bits verschuiven twee. 1418 01:11:30,790 --> 01:11:32,960 En we zullen dit dekken een beetje later. 1419 01:11:32,960 --> 01:11:36,570 En er is geen behoefte om te weten hoe dit functie? zolang 1420 01:11:36,570 --> 01:11:37,640 werkt als aangegeven. 1421 01:11:37,640 --> 01:11:40,740 >> Dus onder de motorkap, kon ik zoals, terug ingang tijden 1422 01:11:40,740 --> 01:11:41,690 acht gedeeld door twee. 1423 01:11:41,690 --> 01:11:42,510 En je zou het niet weten, toch? 1424 01:11:42,510 --> 01:11:44,970 Alles wat je moet weten is het doet wat het zegt. 1425 01:11:44,970 --> 01:11:48,070 Dus dat is het nuttig ding over abstractie. 1426 01:11:48,070 --> 01:11:52,910 >> En een ander ding is een soort van dit idee van lokaliseren van uw code op een 1427 01:11:52,910 --> 01:11:54,280 bepaalde sectie. 1428 01:11:54,280 --> 01:11:57,450 Dus als je een probleem hebt, je niet moeten gaan over je code proberen 1429 01:11:57,450 --> 01:11:58,730 vast te stellen waar het probleem was. 1430 01:11:58,730 --> 01:12:00,990 Dus in dit geval, ik geïmplementeerd kubus verkeerd. 1431 01:12:00,990 --> 01:12:02,820 Ik dacht kubus werd vermenigvuldigen door drie. 1432 01:12:02,820 --> 01:12:05,760 >> Dus in dit geval is dat een programma die net is te vermenigvuldigen met drie 1433 01:12:05,760 --> 01:12:06,750 overal. 1434 01:12:06,750 --> 01:12:10,910 En er is een ander programma dat heeft gefactorde kubus uit in een functie. 1435 01:12:10,910 --> 01:12:14,040 En dus nu als ik wil mijn fout te repareren hier, ik moet elke lijn te repareren 1436 01:12:14,040 --> 01:12:15,620 van code in dit programma. 1437 01:12:15,620 --> 01:12:19,190 Terwijl aan de andere kant, als ik de functie, moet ik alleen maar om te veranderen 1438 01:12:19,190 --> 01:12:20,650 wat er mis was op een plaats. 1439 01:12:20,650 --> 01:12:25,330 1440 01:12:25,330 --> 01:12:28,730 >> Dus in de informatica, we bel-en uitgangen. 1441 01:12:28,730 --> 01:12:31,640 Ingangen worden parameters genoemd of argumenten en voert genoemd 1442 01:12:31,640 --> 01:12:32,950 terugkeren waarden. 1443 01:12:32,950 --> 01:12:39,000 En we zullen zien hoe dit helpt ons soort een functie definiëren in een tweede. 1444 01:12:39,000 --> 01:12:41,430 Dus dit is een functie-definitie voor cubing. 1445 01:12:41,430 --> 01:12:45,110 Dus het duurt een input, en vervolgens keert dat aantal keren 1446 01:12:45,110 --> 01:12:47,020 zelf drie keer. 1447 01:12:47,020 --> 01:12:48,020 Dus laten we breken deze af. 1448 01:12:48,020 --> 01:12:53,090 >> We hebben dus een functie header, die in feite bestaat uit drie dingen. 1449 01:12:53,090 --> 01:12:56,050 Dus hebben we de parameters die zijn, zoals ik al zei, de 1450 01:12:56,050 --> 01:12:57,680 input voor deze functie. 1451 01:12:57,680 --> 01:12:59,300 En dan geven we de functie een naam. 1452 01:12:59,300 --> 01:13:00,740 In dit geval, het heet kubus. 1453 01:13:00,740 --> 01:13:03,860 En dan geven wij wat het type van de return waarde is. 1454 01:13:03,860 --> 01:13:06,760 >> Dus in dit geval, mijn kubusfunctie neemt in een integer en het is ook 1455 01:13:06,760 --> 01:13:07,890 geeft een geheel. 1456 01:13:07,890 --> 01:13:11,510 Dus als ik pas in twee, twee is een geheel getal, het terugkeert acht tot mij, die 1457 01:13:11,510 --> 01:13:13,250 een geheel getal. 1458 01:13:13,250 --> 01:13:15,420 Dus terug typenaam parameters. 1459 01:13:15,420 --> 01:13:16,670 Vragen over dat? 1460 01:13:16,670 --> 01:13:19,440 1461 01:13:19,440 --> 01:13:24,230 >> En dan is de return waarde is eigenlijk aan het einde aangegeven door te zeggen terugkeer 1462 01:13:24,230 --> 01:13:27,540 en vervolgens terug te keren wat bevat de return waarde. 1463 01:13:27,540 --> 01:13:30,940 Dus in dit geval, als we het allemaal samen, een functie heeft in 1464 01:13:30,940 --> 01:13:35,100 parameters, het is iets genaamd, en het iets dat is het type terug 1465 01:13:35,100 --> 01:13:36,350 dat we zeggen dat het zou gaan worden. 1466 01:13:36,350 --> 01:13:39,830 1467 01:13:39,830 --> 01:13:41,080 Heeft u nog vragen? 1468 01:13:41,080 --> 01:13:43,710 1469 01:13:43,710 --> 01:13:45,080 >> Dus hoe kunnen we een functie gebruiken? 1470 01:13:45,080 --> 01:13:49,230 Nou, schrijven we een functie en vervolgens we gebruiken in ons programma, toch? 1471 01:13:49,230 --> 01:13:51,565 Dus belde ik het kubus, en dan kan ik gebruik maken van kubus. 1472 01:13:51,565 --> 01:13:54,200 >> Maar wat is belangrijk op te merken is die volgorde zaken. 1473 01:13:54,200 --> 01:13:58,100 Als ik kubus hieronder belangrijkste, het is gaan lopen in kubus. 1474 01:13:58,100 --> 01:14:00,360 En op dit punt, is er niets riep kubus in het programma, en het is 1475 01:14:00,360 --> 01:14:02,550 gewoon de bus zou komen, heb ik geen idee wat kubus is. 1476 01:14:02,550 --> 01:14:05,060 >> Dus het zal u vertellen, impliciete verklaring van de functie. 1477 01:14:05,060 --> 01:14:06,690 Dat is de fout die verschijnt. 1478 01:14:06,690 --> 01:14:10,230 En in dit geval, kubus hieronder belangrijkste, dus het gaat niet 1479 01:14:10,230 --> 01:14:12,006 te weten. 1480 01:14:12,006 --> 01:14:14,724 >> SPEAKER 5: Dus belangrijkste is meestal de laatste functie gedefinieerd? 1481 01:14:14,724 --> 01:14:17,290 >> JOSEPH: Dus de vraag is, is de belangrijkste meestal de laatste 1482 01:14:17,290 --> 01:14:18,170 ding dat je zou omschrijven? 1483 01:14:18,170 --> 01:14:19,730 En nee. 1484 01:14:19,730 --> 01:14:22,280 Het is omdat we meestal graag belangrijkste te worden aan de top, toch? 1485 01:14:22,280 --> 01:14:24,640 Want dat is het eerste wat je wil de programmeur het openen van de 1486 01:14:24,640 --> 01:14:25,640 programma om te zien. 1487 01:14:25,640 --> 01:14:29,950 En dus hoe lossen we dit nummer van we wil belangrijkste om aan de top, maar de 1488 01:14:29,950 --> 01:14:33,750 functies die we willen, we willen dat ze te zijn dan de hoofd nog kunnen gebruiken 1489 01:14:33,750 --> 01:14:34,930 ze naar binnen van de belangrijkste? 1490 01:14:34,930 --> 01:14:36,870 >> Nou, we gebruiken wat we noemen een functie-prototype. 1491 01:14:36,870 --> 01:14:40,830 Dus wat een functie prototype wezen is wordt het eerst neemt wat 1492 01:14:40,830 --> 01:14:45,060 de handtekening of de functie header van wat we willen implementeren beneden 1493 01:14:45,060 --> 01:14:47,420 hier, en we zetten het op de top van een programma. 1494 01:14:47,420 --> 01:14:51,400 >> Dus in dit geval, zeggen we dat goed, later in ons programma, we gaan 1495 01:14:51,400 --> 01:14:55,010 een belofte om dit te implementeren maken functie genaamd int kubus, waarbij rekening 1496 01:14:55,010 --> 01:14:56,260 een geheel getal ingang. 1497 01:14:56,260 --> 01:15:00,870 Dus nu, want dat is boven de belangrijkste, belangrijkste, het gaat om te zeggen, oh, nou ja, 1498 01:15:00,870 --> 01:15:03,910 later in het programma, dat gaat worden er dus ik kan verwijzen naar het, dus ik zal 1499 01:15:03,910 --> 01:15:05,230 gewoon laten doorlopen voor nu. 1500 01:15:05,230 --> 01:15:07,660 >> En vervolgens op de bodem, implementeren we kubus. 1501 01:15:07,660 --> 01:15:11,180 En dan de belangrijkste zal gewoon zeggen, goed, zal het sorteren van de link 1502 01:15:11,180 --> 01:15:12,250 deze twee symbolen samen. 1503 01:15:12,250 --> 01:15:14,320 En wat we laten zien wat dat middelen later. 1504 01:15:14,320 --> 01:15:17,090 En dus het zal weten dat dit de kubus functie die het moet gebruiken. 1505 01:15:17,090 --> 01:15:19,630 1506 01:15:19,630 --> 01:15:23,383 >> ROB: De [onverstaanbaar] over willen belangrijkste aan de onderkant of 1507 01:15:23,383 --> 01:15:24,880 top, ik heb ze gezien. 1508 01:15:24,880 --> 01:15:28,630 Er zijn dingen die net als aan de onderkant hoofd te zetten. 1509 01:15:28,630 --> 01:15:32,520 Maar zodra een project krijgt bijzonder groot, gewoonlijk belangrijkste in een 1510 01:15:32,520 --> 01:15:34,290 bestand al haar eigen. 1511 01:15:34,290 --> 01:15:38,170 En op dat punt, zoals de int kubus lijn zou - 1512 01:15:38,170 --> 01:15:42,460 binnenkant van stdio.h zijn een stelletje lijnen net als dat int 1513 01:15:42,460 --> 01:15:44,010 kubus int invoerregel. 1514 01:15:44,010 --> 01:15:50,170 >> En dus die prototypes zijn dingen die je hebben de neiging om in de header-bestanden om te zetten, 1515 01:15:50,170 --> 01:15:52,140 welk punt, het maakt niet uit. 1516 01:15:52,140 --> 01:15:54,700 Nou, het maakt niet uit. 1517 01:15:54,700 --> 01:15:56,070 Die gaan altijd aan de top. 1518 01:15:56,070 --> 01:15:59,490 En als belangrijkste is niet een bestand al haar eigen, je hoeft geen zorgen te maken over het zetten 1519 01:15:59,490 --> 01:16:02,360 individuele functie prototypes in het bestand. 1520 01:16:02,360 --> 01:16:05,370 >> JOSEPH: En we zullen daar nog een beetje te krijgen Even later toen Rob begint te praten 1521 01:16:05,370 --> 01:16:06,380 over het compileren. 1522 01:16:06,380 --> 01:16:09,480 En dus is er ook een verschil tussen de parameter en argument. 1523 01:16:09,480 --> 01:16:12,500 En parameter is precies wat we deze ingangen bellen wanneer 1524 01:16:12,500 --> 01:16:13,820 we de functie te definiëren. 1525 01:16:13,820 --> 01:16:16,950 En we noemen het een argument wanneer we eigenlijk doorgeven in de functie. 1526 01:16:16,950 --> 01:16:19,600 >> Dus in dit geval, is een parameter, zoals we al eerder gezegd. 1527 01:16:19,600 --> 01:16:24,130 En als we daadwerkelijk te gebruiken daar, kubus van x, dan is X zelf is 1528 01:16:24,130 --> 01:16:25,910 wat wij een argument noemen de functie kubus. 1529 01:16:25,910 --> 01:16:28,150 >> ROB: Dus argumenten parameter zijn - 1530 01:16:28,150 --> 01:16:33,270 er is dit onderscheid, zeer elkaar verward. 1531 01:16:33,270 --> 01:16:37,090 Op dit punt, voor mij, het is als een van die woorden die als ik het zie in 1532 01:16:37,090 --> 01:16:41,190 het wild, kan ik niet helpen, maar onmiddellijk vraag of ze het gebruiken in 1533 01:16:41,190 --> 01:16:44,120 de juiste context, omdat de verschil is subtiel genoeg dat net 1534 01:16:44,120 --> 01:16:45,500 iedereen heeft de neiging - 1535 01:16:45,500 --> 01:16:48,530 Ik heb bijna altijd argument zeggen ongeacht wat ik bedoel. 1536 01:16:48,530 --> 01:16:51,230 1537 01:16:51,230 --> 01:16:54,630 >> JOSEPH: En functies zijn ook nuttig voor wat we bijwerkingen noemen. 1538 01:16:54,630 --> 01:16:59,230 Dus een functie kan geen ingangen nemen, en het kan produceren ook geen uitgangen. 1539 01:16:59,230 --> 01:17:03,280 Dus in dit geval ben ik het definiëren van een subroutine dat er geen heeft 1540 01:17:03,280 --> 01:17:03,970 waarde terug te keren. 1541 01:17:03,970 --> 01:17:07,730 En om aan te geven dat, gebruiken we wat wij noemen een leegte hier. 1542 01:17:07,730 --> 01:17:10,890 En dus is de bijwerking van deze functie is dat het gewoon afgedrukt spullen 1543 01:17:10,890 --> 01:17:11,920 naar de pagina. 1544 01:17:11,920 --> 01:17:13,840 Het maakt eigenlijk niet elke te nemen ingangen, en het niet 1545 01:17:13,840 --> 01:17:15,360 daadwerkelijk produceren geen uitgangen. 1546 01:17:15,360 --> 01:17:18,230 >> Maar dit kan nuttig zijn in de zin als je wilt, bijvoorbeeld, debug 1547 01:17:18,230 --> 01:17:21,530 iets in uw programma, als je wilt om een ​​beetje subroutine te schrijven dat 1548 01:17:21,530 --> 01:17:25,160 drukt, laten we zeggen, de inhoud van geheugen of iets. 1549 01:17:25,160 --> 01:17:29,800 En dus deze bijwerkingen zijn soms bruikbaar buiten het kader 1550 01:17:29,800 --> 01:17:33,010 van net als in-en uitgangen. 1551 01:17:33,010 --> 01:17:34,260 Heeft u nog vragen? 1552 01:17:34,260 --> 01:17:37,270 1553 01:17:37,270 --> 01:17:44,240 >> En om dit specifieke segment te beëindigen, wat heeft dit programma doen? 1554 01:17:44,240 --> 01:17:47,420 Ik geef je jongens een paar seconden door te lezen. 1555 01:17:47,420 --> 01:17:52,720 1556 01:17:52,720 --> 01:17:56,880 Op een zeer basaal niveau, wat we willen zeggen is dat het swaps x en y, toch? 1557 01:17:56,880 --> 01:18:00,090 >> Dus hoe velen van jullie eigenlijk denken Dit zal x en y verwisselen? 1558 01:18:00,090 --> 01:18:02,160 Steek je hand op. 1559 01:18:02,160 --> 01:18:02,760 Niemand. 1560 01:18:02,760 --> 01:18:03,070 OK. 1561 01:18:03,070 --> 01:18:06,720 Wie denkt dat het zal x en y niet ruilen? 1562 01:18:06,720 --> 01:18:09,120 En de som van dat was niet de hele kamer. 1563 01:18:09,120 --> 01:18:10,440 Dus sommige mensen zijn niet zeker. 1564 01:18:10,440 --> 01:18:10,920 OK. 1565 01:18:10,920 --> 01:18:11,630 Dat is redelijk. 1566 01:18:11,630 --> 01:18:16,450 >> Dus laten we gaan door wat er gebeurt als u functies eigenlijk eerst te bellen in 1567 01:18:16,450 --> 01:18:18,320 Om deze vraag te beantwoorden. 1568 01:18:18,320 --> 01:18:21,430 Dus dit is wat geheugen soort eruit ziet. 1569 01:18:21,430 --> 01:18:23,860 Dit is een soort van een vereenvoudigd model van wat geheugen eruit ziet als 1570 01:18:23,860 --> 01:18:24,800 u een programma uitvoert. 1571 01:18:24,800 --> 01:18:27,270 Dus er is iets genaamd de stapel hier beneden en 1572 01:18:27,270 --> 01:18:28,330 iets genaamd de heap. 1573 01:18:28,330 --> 01:18:30,950 En deze groeien naar het midden van het geheugen. 1574 01:18:30,950 --> 01:18:33,860 >> Dus in dit geval, als u een functie noemt, het 1575 01:18:33,860 --> 01:18:35,680 wordt op de stapel gelegd. 1576 01:18:35,680 --> 01:18:38,900 En wat staat op die functie blijft in wat wij noemen 1577 01:18:38,900 --> 01:18:40,550 stackframe functie. 1578 01:18:40,550 --> 01:18:44,500 En dus om een ​​mooie visualisatie van krijgen dit, Let's - bijvoorbeeld, hadden we de 1579 01:18:44,500 --> 01:18:45,960 programma belangrijkste eerder. 1580 01:18:45,960 --> 01:18:47,820 En de binnenkant van de belangrijkste, we noemden kubus. 1581 01:18:47,820 --> 01:18:50,650 Dus belangrijkste zou eerst op de stapel Frame, want het is de eerste functie 1582 01:18:50,650 --> 01:18:51,640 dat heet. 1583 01:18:51,640 --> 01:18:55,740 >> En toen kubus binnenkant van heet belangrijkste, het wordt op de top van de belangrijkste zetten 1584 01:18:55,740 --> 01:18:57,790 binnenkant van het geheugen. 1585 01:18:57,790 --> 01:19:02,090 Dus wat je hier opvalt is dat kubus heeft zijn eigen parameters en de 1586 01:19:02,090 --> 01:19:02,950 eigen bevolking. 1587 01:19:02,950 --> 01:19:06,720 Dus als je daadwerkelijk iets doorgeven aan een functie van de parameters die het 1588 01:19:06,720 --> 01:19:09,910 krijgt zijn kopieën van wat was doorgegeven van de belangrijkste. 1589 01:19:09,910 --> 01:19:14,140 >> En om dit soort uit te leggen, laten we lopen door een programma. 1590 01:19:14,140 --> 01:19:16,960 Dus hebben we de stack, dit is gewoon de stapel gedeelte. 1591 01:19:16,960 --> 01:19:21,240 En wat we doen is dat we eerst initialiseren x en y om een ​​en twee. 1592 01:19:21,240 --> 01:19:22,400 Dus hebben we deze kleine dozen. 1593 01:19:22,400 --> 01:19:25,310 Ze zitten in de belangrijkste stack frame op de stack. 1594 01:19:25,310 --> 01:19:26,580 Ze bevatten een en twee. 1595 01:19:26,580 --> 01:19:28,820 >> Nu swap noemen. 1596 01:19:28,820 --> 01:19:33,940 Wat er gebeurt is we langs x en y in swap, en swap creëert zijn eigen kopieën 1597 01:19:33,940 --> 01:19:36,520 van deze variabelen om binnen te gebruiken van zijn stack frame. 1598 01:19:36,520 --> 01:19:39,920 Dus nu daar, hebben we een, die bevat de waarde x heeft, en b, 1599 01:19:39,920 --> 01:19:41,620 die bevat de waarde y had. 1600 01:19:41,620 --> 01:19:42,670 Zo een, twee. 1601 01:19:42,670 --> 01:19:47,130 >> En je zult merken dat dit aparte van x en y binnenzijde van de belangrijkste. 1602 01:19:47,130 --> 01:19:51,390 Dus hebben we nu een tijdelijke variabele naar een bevatten. 1603 01:19:51,390 --> 01:19:56,100 We stellen een gelijk aan b, dus het verandert van een tot twee. 1604 01:19:56,100 --> 01:19:59,340 En dan zetten we b gelijk temp, dat is een. 1605 01:19:59,340 --> 01:20:01,640 >> En dan nu zijn we verlaten uit deze functie. 1606 01:20:01,640 --> 01:20:04,310 1607 01:20:04,310 --> 01:20:07,410 Bij het verlaten van de functie, de stackframe krijgt popped uit de stapel. 1608 01:20:07,410 --> 01:20:08,270 Wij noemen het duwen. 1609 01:20:08,270 --> 01:20:12,750 Je duwt een stackframe op de stapel en je pop als uit de stapel. 1610 01:20:12,750 --> 01:20:16,080 En dus wat er gebeurt is alles wat was in die stapelframe soort van net 1611 01:20:16,080 --> 01:20:17,280 gaat in vlammen op. 1612 01:20:17,280 --> 01:20:19,180 En zo die niet meer bestaat. 1613 01:20:19,180 --> 01:20:20,470 >> Maar wat weten we opmerken? 1614 01:20:20,470 --> 01:20:23,690 We eigenlijk nooit veranderd de waarden van x en y gelijk? 1615 01:20:23,690 --> 01:20:26,530 Dus die bleef lokale to main. 1616 01:20:26,530 --> 01:20:29,900 En door het passeren van de dingen in ruil, wij eigenlijk nooit veranderd die waarden. 1617 01:20:29,900 --> 01:20:31,260 En wat doen we dit noemen? 1618 01:20:31,260 --> 01:20:33,040 We noemen dit passerende waarde. 1619 01:20:33,040 --> 01:20:36,860 >> Dus in C, als je dingen overgaan in functies, het geeft ze in waarde en 1620 01:20:36,860 --> 01:20:40,160 maakt een kopie van hen voor de functie te gebruiken. 1621 01:20:40,160 --> 01:20:43,980 En we leren over iets genaamd langs referentie later, maar dat is 1622 01:20:43,980 --> 01:20:45,390 een manier kunt u dit probleem oplossen. 1623 01:20:45,390 --> 01:20:47,080 Maar we zullen geen zorgen over dat pas later. 1624 01:20:47,080 --> 01:20:52,200 >> ROB: En eigenlijk, die term, passeren referentie gaat dus C niet eens 1625 01:20:52,200 --> 01:20:54,270 passeren door te verwijzen. 1626 01:20:54,270 --> 01:20:56,760 C uitsluitend is voorbij waarde. 1627 01:20:56,760 --> 01:20:59,630 Het maakt niet uit wat je doet, je bent altijd passeren van een kopie van iets. 1628 01:20:59,630 --> 01:21:03,395 Het is gewoon dat, als ik een soort van genoemd dat voordat met pointers 1629 01:21:03,395 --> 01:21:07,690 en dat een string is eigenlijk gewoon vier bytes wijst naar ergens in het geheugen. 1630 01:21:07,690 --> 01:21:11,890 >> Nou, als ik deze string en het is me te vertellen dat is waar de string - 1631 01:21:11,890 --> 01:21:15,470 goed, als ik deze pointer naar deze plaatsen in het geheugen, dan kan ik een pas 1632 01:21:15,470 --> 01:21:19,160 kopie van die pointer naar een functie, en die functie weet nog waar in 1633 01:21:19,160 --> 01:21:19,780 geheugen is. 1634 01:21:19,780 --> 01:21:22,950 Dus beide pointers wijzen naar dezelfde plaats in het geheugen, en 1635 01:21:22,950 --> 01:21:26,460 dat is hoe we in staat zijn om dingen buiten het wijzigen 1636 01:21:26,460 --> 01:21:29,852 huidige stack frame. 1637 01:21:29,852 --> 01:21:31,040 >> JOSEPH: Wilt u doen samenstellen? 1638 01:21:31,040 --> 01:21:31,820 >> ROB: Nee, het is 05:30. 1639 01:21:31,820 --> 01:21:32,910 >> JOSEPH: OK. 1640 01:21:32,910 --> 01:21:35,040 Het is 05:30. 1641 01:21:35,040 --> 01:21:35,360 OK. 1642 01:21:35,360 --> 01:21:39,280 Dus zullen we bestrijken het samenstellen denk ik in het volgende gedeelte, of uw afdeling 1643 01:21:39,280 --> 01:21:42,795 leider zal op dat punt. 1644 01:21:42,795 --> 01:21:43,272 En - 1645 01:21:43,272 --> 01:21:44,630 >> ROB: Heeft u nog vragen? 1646 01:21:44,630 --> 01:21:46,760 >> JOSEPH: Heeft u nog vragen? 1647 01:21:46,760 --> 01:21:47,150 Ja? 1648 01:21:47,150 --> 01:21:52,469 >> SPEAKER 5: Het gebruik van strings van CS50, elke functies die we willen gebruiken voor 1649 01:21:52,469 --> 01:21:53,880 degenen, die zal net C functies. 1650 01:21:53,880 --> 01:21:59,050 CS50 is niet in en gegaan gemaakt extra. 1651 01:21:59,050 --> 01:22:01,850 >> ROB: Correct. 1652 01:22:01,850 --> 01:22:08,155 Elk van de C als [onverstaanbaar], u zou gebruiken die op onze snaren. 1653 01:22:08,155 --> 01:22:12,400 >> JOSEPH: En een laatste wat ik wil vermelding is dat we een stijlgids 1654 01:22:12,400 --> 01:22:13,130 voor deze klasse. 1655 01:22:13,130 --> 01:22:13,360 >> ROB: Oh, ja. 1656 01:22:13,360 --> 01:22:15,270 >> JOSEPH: Dus als u bent gekomen uit een achtergrond programmeren voordat u 1657 01:22:15,270 --> 01:22:17,750 mogelijk dat bepaalde conventies hebben wanneer je schrijft code als het zetten 1658 01:22:17,750 --> 01:22:20,950 beugels op dezelfde lijn of bepaalde manieren inspringen 1659 01:22:20,950 --> 01:22:22,240 of het benoemen van variabelen. 1660 01:22:22,240 --> 01:22:26,870 In deze klasse, willen we volgen een specifieke stijlgids enkel omdat, 1661 01:22:26,870 --> 01:22:31,100 Nou, als je naar buiten en werken in industrie, je gaat te verwachten 1662 01:22:31,100 --> 01:22:34,780 aan de stijlgids van de te volgen bedrijf waar je gaat. 1663 01:22:34,780 --> 01:22:38,040 >> Zoals bijvoorbeeld, Facebook denk ik heeft een bijzondere soort van naamgeving 1664 01:22:38,040 --> 01:22:38,760 conventie. 1665 01:22:38,760 --> 01:22:42,570 En er is verschil tussen de kameel behuizing variabelen en net als 1666 01:22:42,570 --> 01:22:44,610 gescheiden met underscores. 1667 01:22:44,610 --> 01:22:52,170 En ook, ik denk dat het allerbelangrijkste, zoals bijvoorbeeld, inspringen, toch? 1668 01:22:52,170 --> 01:22:56,440 >> We accolades beginnen waar de conditie is, en ze 1669 01:22:56,440 --> 01:22:57,730 zijn op de volgende regel. 1670 01:22:57,730 --> 01:23:01,230 En we ook zetten accolades in ook al is het slechts een regel. 1671 01:23:01,230 --> 01:23:06,100 En een heleboel keer, zijn er manieren om te doen het waar je kunt deze braces vertrekken 1672 01:23:06,100 --> 01:23:08,380 uit als het is slechts een lijn onder het If statement. 1673 01:23:08,380 --> 01:23:12,070 Maar in deze klasse willen we volgen een specifieke stijlgids gewoon zo krijg je 1674 01:23:12,070 --> 01:23:13,550 gebruikt om dat soort dingen. 1675 01:23:13,550 --> 01:23:16,410 >> ROB: Ja, en Style 50 gaat handhaving van deze stijlgids, en we zijn 1676 01:23:16,410 --> 01:23:18,080 gaat Style 50 gebruiken tot de rang van uw code. 1677 01:23:18,080 --> 01:23:25,150 Dus het maakt het wat makkelijker voor ons en hopelijk mag geen dingen die 1678 01:23:25,150 --> 01:23:30,120 veel erger voor u, gezien de gestandaardiseerde stijl moet niet zo zijn dat 1679 01:23:30,120 --> 01:23:31,460 onrealistisch. 1680 01:23:31,460 --> 01:23:36,000 >> JOSEPH: En tot slot, om de stijl te vinden handleiding gaat u naar manual.cs50.net/style. 1681 01:23:36,000 --> 01:23:37,725 En ja. 1682 01:23:37,725 --> 01:23:40,575 >> SPEAKER 4: Gaat u af te dwingen geen tekens per regel? 1683 01:23:40,575 --> 01:23:42,480 >> ROB: Ja. 1684 01:23:42,480 --> 01:23:45,405 >> JOSEPH: Sorry, jongens. 1685 01:23:45,405 --> 01:23:47,680 >> ROB: Dat is hetzelfde als een van de enigen. 1686 01:23:47,680 --> 01:23:50,420 Op dit punt, ik ben OK met 120. 1687 01:23:50,420 --> 01:23:52,460 Ik ben OK met het zeggen 120 tekens per regel. 1688 01:23:52,460 --> 01:23:53,830 Ik begrijp dat er een bepaalde grens. 1689 01:23:53,830 --> 01:23:57,130 Ik denk dat 80 is zo klein, maar we toepasten. 1690 01:23:57,130 --> 01:24:00,260 >> JOSEPH: Persoonlijk denk ik dat met C, 80 tekens is OK. 1691 01:24:00,260 --> 01:24:04,160 Zodra je begint steeds naar andere talen zoals JavaScript en PHP, niet 1692 01:24:04,160 --> 01:24:08,860 zo redelijk om gewoon te beperken aan 80 karakters. 1693 01:24:08,860 --> 01:24:09,260 OK. 1694 01:24:09,260 --> 01:24:12,780 Nou, dat was het super sectie. 1695 01:24:12,780 --> 01:24:14,750 Heeft iemand snoep willen? 1696 01:24:14,750 --> 01:24:16,000 >> SPEAKER 4: Ja. 1697 01:24:16,000 --> 01:24:18,667