1 00:00:00,000 --> 00:00:02,350 >> [సంగీతాన్ని] 2 00:00:02,350 --> 00:00:05,444 3 00:00:05,444 --> 00:00:06,360 డౌ LLOYD: అన్ని కుడి. 4 00:00:06,360 --> 00:00:07,770 ఒక వింత విషయం యొక్క కైండ్, కుడి? 5 00:00:07,770 --> 00:00:09,050 మేజిక్ సంఖ్యలు. 6 00:00:09,050 --> 00:00:12,012 అతను ఉన్నప్పుడు అతను అర్థం ఏమి డో మేజిక్ సంఖ్యలు గురించి మాట్లాడటం? 7 00:00:12,012 --> 00:00:14,220 Well, కార్యక్రమాలు కొన్ని మేము CS50 లో రాసిన చేసిన 8 00:00:14,220 --> 00:00:16,660 ఇప్పటివరకు కొన్ని విచిత్రమైన కలిగి సంఖ్యలు రకమైన వాటిని విసిరి. 9 00:00:16,660 --> 00:00:19,680 బహుశా కారణాల మేము లేదు పూర్తిగా కుడి ఇప్పుడు అర్థం. 10 00:00:19,680 --> 00:00:23,950 ఉదాహరణకు, మారియో సమస్య, మేము 23 వద్ద పిరమిడ్ యొక్క ఎత్తు చూశాయి. 11 00:00:23,950 --> 00:00:26,880 మేము స్పష్టంగా మీరు చెప్పారు కంటే ఎక్కువ 23 వెళ్ళి కాదు. 12 00:00:26,880 --> 00:00:28,702 >> కానీ 23 అర్థం ఏమిటి? 13 00:00:28,702 --> 00:00:30,410 సరే, మీరు చదివితే , జాగ్రత్తగా మీరు స్పెక్ 14 00:00:30,410 --> 00:00:32,493 ఆ చూసిన ఉండవచ్చు కారణం మేము 23 వద్ద ఆపేశారు 15 00:00:32,493 --> 00:00:36,160 ప్రామాణిక ఎత్తు ఎందుకంటే ఒక టెర్మినల్ విండో 24. 16 00:00:36,160 --> 00:00:38,860 మరియు మేము ఉంటే కనుక పిరమిడ్ కంటే ఎత్తుగా, 17 00:00:38,860 --> 00:00:41,290 ఈ విచిత్రమైన విషయం కావచ్చు అది ఎక్కడ తెరపై నడుస్తుంది. 18 00:00:41,290 --> 00:00:45,140 మీకు తెలిసిన మరియు, దేనిని ఆ కుడి, సందర్భంలో అర్థం? 19 00:00:45,140 --> 00:00:48,880 >> 23 వెంటనే స్పష్టమైన యొక్క అర్థం ఎవరైనా ఎవరు మీ కార్యక్రమాన్ని చూసి 20 00:00:48,880 --> 00:00:51,550 మరియు బహుశా వేరే ఉంది పరిమాణం టెర్మినల్ విండో? 21 00:00:51,550 --> 00:00:52,330 బహుశా కాకపోవచ్చు. 22 00:00:52,330 --> 00:00:53,080 అది సరే, వంటి తెలుస్తోంది. 23 00:00:53,080 --> 00:00:55,005 Well, ఎందుకు కేవలం తక్కువ 23 కంటే ఉంది? 24 00:00:55,005 --> 00:00:56,880 సాధారణంగా, ఇది రకంగా ఒక చెడ్డ అలవాటు నిజానికి 25 00:00:56,880 --> 00:00:58,940 మీ కోడ్ స్థిరాంకాలు రాయడానికి. 26 00:00:58,940 --> 00:01:02,190 మీరు నిజంగా చేసినప్పుడు, అలా చేయడం మీ కోడ్ స్థిరమైన వ్రాయండి, 27 00:01:02,190 --> 00:01:05,630 అది ఉపయోగించి గా సూచిస్తారు కొన్నిసార్లు మ్యాజిక్ సంఖ్యలు ఏదో ఇది 28 00:01:05,630 --> 00:01:08,030 మేము సాధారణంగా ప్రయత్నించండి మరియు నివారించేందుకు కావలసిన. 29 00:01:08,030 --> 00:01:12,830 >> ఉదాహరణకు, యొక్క ఒక రూపం తీసుకుందాం ఇక్కడ ఈ సాధారణ ఫంక్షన్ వద్ద. 30 00:01:12,830 --> 00:01:15,726 సహజంగానే సమాచారం లేదు వార్తలు సి లో రకం కార్డు లేదా డెక్ అని. 31 00:01:15,726 --> 00:01:16,600 కాబట్టి కేవలం నాతో భరించలేదని. 32 00:01:16,600 --> 00:01:18,910 అది కొద్దిగా pseudocode ఇక్కడ కలిపి. 33 00:01:18,910 --> 00:01:21,050 ఈ అనే ఫంక్షన్ ఉంది ఆ స్పష్టంగా కార్డు ఎదుర్కోవటానికి 34 00:01:21,050 --> 00:01:26,570 దాని ప్రామాణికంగా ఒక డెక్ పడుతుంది, మరియు నాకు ఇష్టానికి అవుట్పుట్ ఒకే కార్డు. 35 00:01:26,570 --> 00:01:30,990 >> నేను ఇక్కడ ఎక్కడ నేను ఏదో చేయడం వెబ్ 0 నుండి 52 వరకు నడుస్తుంది ఒక లూప్ కలిగి 36 00:01:30,990 --> 00:01:33,394 మరియు నేను ఒక కార్డు వ్యవహరించే. 37 00:01:33,394 --> 00:01:35,310 Well, మేము ఒక మేజిక్ పొందారు ఇక్కడ సంఖ్య, కుడి. 38 00:01:35,310 --> 00:01:38,790 మీరు మేజిక్ సంఖ్య చూస్తారు? 39 00:01:38,790 --> 00:01:42,280 లేదా మరింత ముఖ్యంగా, మీరు ఇక్కడ ఏ సమస్య చూడండి? 40 00:01:42,280 --> 00:01:44,310 ముఖ్యంగా ఈ ఉంటే కేవలం ఒక ఫంక్షన్ ఉంది 41 00:01:44,310 --> 00:01:48,030 ఒక దాని స్వంత ఫైల్ లో కలిగి ఫోల్డర్ 42 00:01:48,030 --> 00:01:49,970 వివిధ కొంత ఫైళ్లు, వీటిలో ప్రతి 43 00:01:49,970 --> 00:01:51,670 పేకాటలో మరొక విషయం చేస్తుంది. 44 00:01:51,670 --> 00:01:57,310 దీనికి వాటిని shuffles, లేదా ఒక చేతితో వ్యవహరిస్తుంది ఐదు కార్డులు బదులుగా ఒకే కార్డు. 45 00:01:57,310 --> 00:01:59,420 >> మీరు ఏమి చూస్తారు సమస్య ఇక్కడ కావచ్చు? 46 00:01:59,420 --> 00:02:03,220 మీరు మేజిక్ సంఖ్య చూస్తారు నేను కోడ్ చొప్పించారు చేసిన? 47 00:02:03,220 --> 00:02:04,390 ఇది కుడి, 52 ఉంది. 48 00:02:04,390 --> 00:02:06,440 >> ఇలా, అకారణంగా మీరు బహుశా తెలిసిన, OK. 49 00:02:06,440 --> 00:02:09,740 ఒక ప్రామాణిక డెక్ ఇలా కార్డులు 52 కార్డులు కలిగి. 50 00:02:09,740 --> 00:02:12,570 కానీ మా కార్యక్రమంలో, అది కేవలం రకమైన అక్కడ చుట్టూ తేలియాడే. 51 00:02:12,570 --> 00:02:15,280 ఆకస్మికంగా ఒక 52 ఉంది వంటిది. 52 00:02:15,280 --> 00:02:18,290 >> ఈ పరిష్కరించడానికి ఒక మార్గం సమస్య ఈ చేయాలని ఉంది. 53 00:02:18,290 --> 00:02:22,724 మేము ఇప్పుడు చాలా స్పష్టంగా ఉన్నారు 52 వంటి డెక్ పరిమాణం కాలింగ్. 54 00:02:22,724 --> 00:02:25,390 ఇది కొంచెం చూడగానే ఇస్తుంది వచ్చినప్పడు లూప్ లో అర్థం 55 00:02:25,390 --> 00:02:28,650 మేము అప్పుడు, నేను చెప్పగలను తర్వాత డెక్ పరిమాణం కంటే తక్కువగా ఉంటుంది. 56 00:02:28,650 --> 00:02:32,666 ఇది కేవలం 52 చెప్పడం కంటే మంచి తెలుస్తోంది. 57 00:02:32,666 --> 00:02:34,290 ఇప్పుడు ఈ వాస్తవానికి సమస్య పరిష్కరించడానికి లేదు. 58 00:02:34,290 --> 00:02:38,460 ఇది కొన్ని సంకేత ఇవ్వలేదు స్థిరంగా అర్థం. 59 00:02:38,460 --> 00:02:40,820 కానీ రకమైన నిజానికి మరొక సమస్య పరిచయం 60 00:02:40,820 --> 00:02:43,770 అని వెంటనే స్పష్టమైన కాదు. 61 00:02:43,770 --> 00:02:45,859 కూడా ఈ వేరియబుల్ ఉంటే globally-- ప్రకటిస్తారు 62 00:02:45,859 --> 00:02:47,650 మీరు ఏమి గుర్తు లేదు మేము డిక్లేర్ చేసినప్పుడు అంటే 63 00:02:47,650 --> 00:02:50,500 ప్రపంచవ్యాప్తంగా స్థానికంగా వర్సెస్ ఒక వేరియబుల్? 64 00:02:50,500 --> 00:02:53,340 మేము ఒక వేరియబుల్ డిక్లేర్ పోయినా ప్రపంచవ్యాప్తంగా, ఏమి ఉంది ఉంటే 65 00:02:53,340 --> 00:02:55,500 మరొక ఫంక్షన్ లో విధులు యొక్క మా సూట్ 66 00:02:55,500 --> 00:02:59,750 కార్డు తారుమారు ఆ ఒప్పందం ఆ అనుకోకుండా, డెక్ పరిమాణం మార్పులు 67 00:02:59,750 --> 00:03:02,727 లేదా అది ద్వారా అది పెంచుతుంది 1 లేదా 1 ద్వారా తగ్గుతుంది. 68 00:03:02,727 --> 00:03:04,060 కుడివైపు, ఇబ్బంది అక్షరక్రమ కాలేదు? 69 00:03:04,060 --> 00:03:08,261 మేము సమితి వ్యవహరించే చేస్తున్నారు ముఖ్యంగా కార్డులు పూర్తి డెక్ shuffling పేరు 70 00:03:08,261 --> 00:03:08,760 అవసరం. 71 00:03:08,760 --> 00:03:12,804 డెక్ పరిమాణం తగ్గింది ఉంటే 1, ఉదాహరణకు, 51, 72 00:03:12,804 --> 00:03:14,970 మేము నిజానికి shuffling లేదు బహుశా అన్ని కార్డులు. 73 00:03:14,970 --> 00:03:16,500 మేము వాటిని ఒకటి బయటకు వదిలేస్తున్నారు. 74 00:03:16,500 --> 00:03:21,680 మరియు ఆ విలువను బహుశా కావచ్చు అంచనా లేదా ఒక చెడ్డ నటుడు క్లాజులు. 75 00:03:21,680 --> 00:03:24,920 >> సి ఒక అని ఏమిటి అందిస్తుంది ప్రాసెసర్ ఆదేశం, ఇది 76 00:03:24,920 --> 00:03:27,764 కూడా ఒక స్థూల పిలువబడుతుంది సింబాలిక్ స్థిరాంకాలు సృష్టించడం. 77 00:03:27,764 --> 00:03:30,180 నిజానికి, మీరు ఇప్పటికే చేసిన ఒక ప్రాసెసర్ ఆదేశం చూసిన, 78 00:03:30,180 --> 00:03:32,916 మీరు అది విని ఉండకపోతే కూడా # ఉన్నాయి ఆ అని. 79 00:03:32,916 --> 00:03:37,150 ఇది ఒక స్థూల మరొక ఉదాహరణ ఉంది లేదా ప్రాసెసర్ ఆదేశం. 80 00:03:37,150 --> 00:03:41,290 >> మార్గం సింబాలిక్ స్థిరాంకాలు సృష్టించడానికి, లేదా ఒక స్థిరమైన ఒక పేరు ఇచ్చి 81 00:03:41,290 --> 00:03:43,740 అది మరింత ఉంది కాబట్టి అనగా ఈ క్రింది విధంగా ఉంది. 82 00:03:43,740 --> 00:03:47,030 # define, పేరు, భర్తీ. 83 00:03:47,030 --> 00:03:49,140 పక్కన నిజంగా ముఖ్యమైన ఇక్కడ నిజంగా త్వరగా. 84 00:03:49,140 --> 00:03:54,180 ఒక సెమికోలన్ ఉంచవద్దు మీ # నిర్వచిస్తుంది ముగింపు. 85 00:03:54,180 --> 00:03:57,310 కనుక ఇది నిర్వచించే, పేరు, భర్తీ వార్తలు. 86 00:03:57,310 --> 00:03:59,540 >> మీ కార్యక్రమాన్ని కంపైల్ చేసినప్పుడు, ఏమి నిజానికి జరుగుతుంది 87 00:03:59,540 --> 00:04:01,740 ఏం ఉంటే కంపైలర్ మీ కోడ్ ద్వారా వెళ్ళడానికి 88 00:04:01,740 --> 00:04:06,770 మరియు ప్రతి ఉదాహరణకు భర్తీ సంసార పదం "పేరు" మీరు 89 00:04:06,770 --> 00:04:08,860 భర్తీ వలె ఉంచాలి. 90 00:04:08,860 --> 00:04:13,060 Analogously, # ఉన్నాయి ఉంటే విధమైన యొక్క కాపీ మరియు పేస్ట్ పోలి, 91 00:04:13,060 --> 00:04:15,700 అప్పుడు నిర్వచించే విధమైన ఉంది కనుగొని భర్తీ పోలి, 92 00:04:15,700 --> 00:04:19,180 మీరు ఎప్పుడైనా ఒక లో ఆ ఫీచర్ ఉపయోగించి ఉంటే వర్డ్ ప్రాసెసింగ్ కార్యక్రమం, ఉదాహరణకు. 93 00:04:19,180 --> 00:04:26,345 >> ఉదాహరణకు, నేను ఉంటే 3.14159265 వంటి pi # define, 94 00:04:26,345 --> 00:04:28,720 మీరు మంచి గణితశాస్త్ర అయితే ఆకర్షితులు మీరు హఠాత్తుగా 95 00:04:28,720 --> 00:04:31,640 3.14159265 ఎగురుతూ చూడండి చుట్టూ మీ కోడ్ లో, 96 00:04:31,640 --> 00:04:33,517 మీరు బహుశా అది pi గురించి మాట్లాడుతూ ఉంటాడు తెలుసు. 97 00:04:33,517 --> 00:04:35,850 కాని మేము ఇది ఒక ఇవ్వగలిగిన కొంచెం సింబాలిక్ అర్థం. 98 00:04:35,850 --> 00:04:39,850 మరియు మేము బదులుగా # define చెప్పగలను సంఖ్యల మౌత్ఫుల్ వంటి pi 99 00:04:39,850 --> 00:04:42,110 నేను ఉంచడానికి వెళ్ళడం లేదు చేస్తున్నాను పైగా మరియు పైగా చదవడం. 100 00:04:42,110 --> 00:04:45,560 >> ఏ వద్ద అప్పుడు జరిగే అవకాశముంది కార్యక్రమం ఉన్నప్పుడు కంపైల్ సమయం 101 00:04:45,560 --> 00:04:48,530 సంకలనం, మొదటి విషయం జరగవచ్చు అది ద్వారా వెళ్ళడానికి ఉంటుంది 102 00:04:48,530 --> 00:04:51,520 మరియు అది ప్రతిసారీ భర్తీ చేస్తుంది అది రాజధాని P, రాజధాని నేను చూస్తాడు 103 00:04:51,520 --> 00:04:55,610 అది అక్షరాలా భర్తీ చేస్తాము 3.14 మరియు అందువలన న, కాబట్టి మీరు 104 00:04:55,610 --> 00:04:58,090 ఇది ప్రతి టైప్ లేదు సమయం ఇంకా మీ ప్రోగ్రామ్ అయితే 105 00:04:58,090 --> 00:05:00,631 కార్యాచరణను కలిగి మీరు మీరు పని ఉన్నందున, ఆశించే 106 00:05:00,631 --> 00:05:05,090 మోసగించటం తో గుణించడం, ఇది pi ద్వారా ఏమైనా విభజించడం. 107 00:05:05,090 --> 00:05:08,230 >> మీరు ఈ వీటికే పరిమితం కావు మాత్రమే సంఖ్యలు కోసం ప్రత్యామ్నాయం. 108 00:05:08,230 --> 00:05:12,279 ఉదాహరణకు, నేను # define కాలేదు స్ట్రింగ్ CS50 వంటి కోర్సు. 109 00:05:12,279 --> 00:05:14,070 ఈ సందర్భంలో, ఎప్పుడు కార్యక్రమం కంపైల్ 110 00:05:14,070 --> 00:05:16,236 # define ద్వారా వెళ్తుంది కోడ్ ప్రతిసారీ భర్తీ 111 00:05:16,236 --> 00:05:19,900 అది స్ట్రింగ్ CS50 తో "కోర్సు" చూస్తాడు. 112 00:05:19,900 --> 00:05:21,720 >> మీరు ఇక్కడ గమనించవచ్చు కూడా నేను ఆ తరచుగా 113 00:05:21,720 --> 00:05:26,090 # define నా సింబాలిక్ నిర్వచించిన స్థిరాంకాలు, మాట్లాడటం 114 00:05:26,090 --> 00:05:28,130 అన్ని CAPS లో ఎప్పుడూ ఉంటాయి. 115 00:05:28,130 --> 00:05:28,960 ఇది ఒక సమావేశం. 116 00:05:28,960 --> 00:05:30,170 అది అవసరం లేదు. 117 00:05:30,170 --> 00:05:33,900 కారణం సాధారణంగా ప్రజలు ఉపయోగిస్తుంది అన్ని రాజధానులు వారు #defining చేసినప్పుడు 118 00:05:33,900 --> 00:05:37,590 కేవలం ఇది నిజంగా స్పష్టం చేయడానికి ఉంటుంది నా కోడ్ యొక్క ఈ ప్రత్యేక మూలకం 119 00:05:37,590 --> 00:05:38,820 ఒక నిర్దిష్ట స్థిరాంకం. 120 00:05:38,820 --> 00:05:43,730 అది చిన్న ఉంటే, అది అవకాశం వార్తలు అది ఒక వేరియబుల్ తో అయోమయం. 121 00:05:43,730 --> 00:05:46,120 మరియు ఆ బహుశా వార్తలు ఒక మంచి విషయం కాదు. 122 00:05:46,120 --> 00:05:48,910 >> కాబట్టి ఈ ప్రత్యేక పరిష్కారం చాలా ఉత్తమం 123 00:05:48,910 --> 00:05:50,550 మునుపటి గాని కంటే. 124 00:05:50,550 --> 00:05:59,950 నేను మొదటి నిర్వచించే డెక్ పరిమాణం 52, అప్పుడు ఉంటే ఇప్పుడు ఇక్కడ 52, లేదా డెక్ పరిమాణంలో నా ఉపయోగం, 125 00:05:59,950 --> 00:06:01,850 చాలా సహజమైన మరియు చాలా సురక్షితం. 126 00:06:01,850 --> 00:06:03,280 మీరు స్థిరమైన మార్చటానికి కాదు. 127 00:06:03,280 --> 00:06:05,259 మీరు 52 ప్లస్ ప్లస్ చెప్పలేను. 128 00:06:05,259 --> 00:06:06,800 53 దానిని మార్చేందుకు మాత్రం కాదు. 129 00:06:06,800 --> 00:06:09,390 మీరు ఏదో 52 మార్చలేరు. 130 00:06:09,390 --> 00:06:12,470 >> మీరు ఒక వేరియబుల్ మార్చవచ్చు దీని విలువ 52 ఉంది, 131 00:06:12,470 --> 00:06:14,870 ఇది మేము ముందు మొదటి పరిష్కారము. 132 00:06:14,870 --> 00:06:17,000 మరియు మీరు పెంచింది 53 ఆ వేరియబుల్. 133 00:06:17,000 --> 00:06:21,100 కానీ మీరు 52 ప్లస్ ప్లస్ చెప్పలేను హఠాత్తుగా 53 లోకి 52 తిరుగులేని కలిగి. 134 00:06:21,100 --> 00:06:23,350 52 ఎల్లప్పుడూ 52 ఉంది. 135 00:06:23,350 --> 00:06:28,860 కాబట్టి మీరు అనుకోకుండా మార్చలేరు ఇక్కడ అది చేయటం ద్వారా డెక్ పరిమాణం, 136 00:06:28,860 --> 00:06:29,940 137 00:06:29,940 --> 00:06:32,390 >> మరో మంచి వైపు ఈ అయితే ప్రభావం 138 00:06:32,390 --> 00:06:38,310 అని మీరు తెలుసు అని కాదు ప్రపంచవ్యాప్తంగా అన్ని దేశాల 139 00:06:38,310 --> 00:06:40,690 పరిమాణం 52 పేకాటలో ఉపయోగించాలి? 140 00:06:40,690 --> 00:06:45,630 ఉదాహరణకు, అది నిజంగా సాధారణ వార్తలు జర్మనీ, 32 ఒక డెక్ పరిమాణం ఉపయోగించడానికి 141 00:06:45,630 --> 00:06:48,020 వారు కొన్ని వాదనను పేరు తక్కువ విలువ కార్డులు. 142 00:06:48,020 --> 00:06:50,960 మరియు ఈ సందర్భంలో, నేను పోర్ట్ నా సూట్ అనుకున్నారు 143 00:06:50,960 --> 00:06:55,390 ఎదుర్కోవటానికి విధులు జెర్మనీ కార్డు తారుమారు. 144 00:06:55,390 --> 00:06:59,440 నేను మొదట అనుకొనుట మేము చూపించాడు, వెళ్ళి స్థానంలో కలిగి 145 00:06:59,440 --> 00:07:03,570 32 నా కోడ్ లో 52 అన్ని చోట్ల. 146 00:07:03,570 --> 00:07:07,940 >> కానీ ఇక్కడ నేను # define ఉంటే డెక్ పరిమాణం నా కోడ్ అగ్రభాగాన 32, 147 00:07:07,940 --> 00:07:11,730 నేను దానిని మార్చడం అవసరం ఉంటే, నేను కేవలం వెళ్ళి ఒక విషయం మార్చడానికి. 148 00:07:11,730 --> 00:07:15,010 నా కోడ్ కంపైల్ చెయ్యండి, మరియు అన్ని అకస్మాత్తుగా అది ద్వారా వ్యాపిస్తుంది. 149 00:07:15,010 --> 00:07:18,850 నిజానికి, మేము డెక్ మార్చవచ్చు మేము కావలసిన ఏ విలువ పరిమాణం. 150 00:07:18,850 --> 00:07:22,500 >> నేను ఒక లో మీకు ఇష్టము చేయవచ్చు డెక్ పరిమాణం పికప్ గేమ్? 151 00:07:22,500 --> 00:07:23,430 >> నేను డౌ లాయిడ్ ఉన్నాను. 152 00:07:23,430 --> 00:07:25,840 మరియు ఈ CS50 ఉంది. 153 00:07:25,840 --> 00:07:27,772