1 00:00:00,000 --> 00:00:05,300 2 00:00:05,300 --> 00:00:07,300 డౌ LLOYD: మీరు ప్రారంభం నాటికి విధులు పని, 3 00:00:07,300 --> 00:00:09,966 మరొక విషయం మారింది అన్నారు అర్థం నిజంగా ముఖ్యమైన, 4 00:00:09,966 --> 00:00:12,380 వేరియబుల్ స్కోప్ భావన. 5 00:00:12,380 --> 00:00:14,490 కాబట్టి పరిధిని ఒక ఒక వేరియబుల్ యొక్క లక్షణం 6 00:00:14,490 --> 00:00:18,860 దీనిలో ఆ విధులు నుండి నిర్వచిస్తుంది ఆ వేరియబుల్ ప్రాప్తి చేయవచ్చు. 7 00:00:18,860 --> 00:00:24,595 >> సి లో రెండు ప్రాథమిక స్కోప్స్ ఉన్నాయి, స్థానిక వేరియబుల్స్ మరియు ప్రపంచ వేరియబుల్స్. 8 00:00:24,595 --> 00:00:27,830 ఇప్పుడు, స్థానిక వేరియబుల్స్ మాత్రమే విధులు లోపల ప్రాప్తి 9 00:00:27,830 --> 00:00:29,045 దీనిలో వారు సృష్టించిన చేస్తున్నారు. 10 00:00:29,045 --> 00:00:32,170 వారు ప్రతి ఇతర ద్వారా ప్రాప్తి చేయబడదు మీ కార్యక్రమంలో ఉందని ఫంక్షన్, 11 00:00:32,170 --> 00:00:34,184 లో మాత్రమే ఫంక్షన్ ఇది రూపొందించారు. 12 00:00:34,184 --> 00:00:36,350 గ్లోబల్ వేరియబుల్స్, మరోవైపు, ప్రాప్తి చేయవచ్చు 13 00:00:36,350 --> 00:00:37,719 ప్రోగ్రామ్ లో ఏ చర్య ద్వారా. 14 00:00:37,719 --> 00:00:40,260 మరియు ఆ కారణం ఉంది వారు లోపల సృష్టించలేదు ఉన్నందున 15 00:00:40,260 --> 00:00:41,441 ఏ ప్రత్యేక ఫంక్షన్. 16 00:00:41,441 --> 00:00:43,690 మేము బయట వారిని డిక్లేర్ ఫంక్షన్లను ఇవన్నీ 17 00:00:43,690 --> 00:00:48,940 ప్రతి ఫంక్షన్ పేరు తెలుసని అర్థం ఇది మరియు యాక్సెస్ మరియు సర్దుబాటు చేయవచ్చు. 18 00:00:48,940 --> 00:00:52,010 >> ఇప్పటివరకు కోర్సులో మీరు అందంగా చేసిన చాలా ప్రత్యేకంగా పని 19 00:00:52,010 --> 00:00:54,280 స్థానిక వేరియబుల్స్ తో. 20 00:00:54,280 --> 00:00:58,320 ఇక్కడ ఒక యొక్క ఒక ఉదాహరణ చాలా వార్తలు సాధారణ ప్రధాన విధి మరియు చాలా సులభమైన 21 00:00:58,320 --> 00:01:00,680 మేము వ్రాయలేదు అదనపు ఫంక్షన్. 22 00:01:00,680 --> 00:01:03,180 ఈ సందర్భంలో, x ఇది నేను ఆకుపచ్చ రంగు చేసిన 23 00:01:03,180 --> 00:01:07,400 Locality హైలైట్ లేదా ఆ వేరియబుల్ యొక్క పరిధిని, 24 00:01:07,400 --> 00:01:09,240 ట్రిపుల్ ఫంక్షన్ స్థానిక ఉంది. 25 00:01:09,240 --> 00:01:12,300 ప్రధాన అన్ని వద్ద x సూచించడానికి కాదు. 26 00:01:12,300 --> 00:01:14,259 ఇది ఇంతే తెలీదు. 27 00:01:14,259 --> 00:01:17,050 ఏ ఇతర ఫంక్షన్, నిజానికి, మనం ఉంటే ఇక్కడ అదనపు విధులు కలిగి 28 00:01:17,050 --> 00:01:19,360 x సూచించడానికి కాలేదు. 29 00:01:19,360 --> 00:01:23,520 >> అదేవిధంగా, నేను చేసిన పొందవచ్చు నీలం రంగు మాత్రమే ప్రధాన స్థానిక. 30 00:01:23,520 --> 00:01:26,980 కేవలం ప్రధాన తెలుస్తుందని వేరియబుల్ ఫలితం. 31 00:01:26,980 --> 00:01:30,010 ట్రిపుల్ ఉపయోగించలేరు. 32 00:01:30,010 --> 00:01:32,580 >> ఇప్పుడు నేను చెప్పినట్లుగా, ప్రపంచ వేరియబుల్స్ ఉన్నాయి. 33 00:01:32,580 --> 00:01:35,575 మీరు ఆ వేరియబుల్ డిక్లేర్ ఉంటే ఏ విధి వెలుపల 34 00:01:35,575 --> 00:01:38,290 విధులు అన్ని కార్యక్రమం ఇది సూచించవచ్చు. 35 00:01:38,290 --> 00:01:44,010 కాబట్టి ఈ విషయంలో నేను హైలైట్ చేసిన ప్రపంచ వేరియబుల్ ప్రకటన ఆకుపచ్చ. 36 00:01:44,010 --> 00:01:45,830 ఈ సందర్భంలో, వేరియబుల్ ఉండటం ప్రకటించింది 37 00:01:45,830 --> 00:01:48,720 కేవలం వరకు ప్రపంచ అంటారు దాని గురించి చాలా స్పష్టమైన ఉండాలి. 38 00:01:48,720 --> 00:01:49,720 టైపు ఫ్లోట్ ఉంది. 39 00:01:49,720 --> 00:01:52,940 మరియు నేను దానిని విలువ 0,5050 కేటాయించవచ్చు. 40 00:01:52,940 --> 00:01:58,080 >> మీరు ప్రధాన లో మరియు లో గమనించవచ్చు ట్రిపుల్, నేను ప్రపంచ సూచించడానికి చేయగలుగుతున్నాను. 41 00:01:58,080 --> 00:02:03,480 నిజానికి, నేను కార్యక్రమం ద్వారా వెళ్ళి ఉంటే ప్రధాన మొదటి కాల్స్ ట్రిపుల్ సూచించిన, 42 00:02:03,480 --> 00:02:10,440 3 ప్రపంచ ట్రిపుల్ గుణిస్తారు, ఇది 1.5-ఏదో దాని విలువ అమర్చుతుంది, 43 00:02:10,440 --> 00:02:16,080 1.51 లేదా అలాంటిదే, మరియు అప్పుడు ప్రధాన కూడా విలువ అవుట్ ముద్రిస్తుంది 44 00:02:16,080 --> 00:02:16,620 యొక్క ప్రపంచ. 45 00:02:16,620 --> 00:02:24,424 0,5050 ముద్రించాలా లేదు కాబట్టి ప్రధాన, అది , 1.51 ప్రపంచ సమయాలు 3 ముద్రిస్తుంది. 46 00:02:24,424 --> 00:02:27,340 సో మీరు జాగ్రత్తగా ఉండాలని పొందారు మీరు ప్రపంచ వేరియబుల్స్ తో పని చేస్తున్నాము. 47 00:02:27,340 --> 00:02:30,260 వారు చాలా సరళమైన ఉన్నప్పుడూ సమాచారం పాస్ సామర్థ్యం 48 00:02:30,260 --> 00:02:32,650 చుట్టూ తద్వారా ప్రతి ఫంక్షన్ ఉపయోగించవచ్చు, 49 00:02:32,650 --> 00:02:34,580 అది కూడా కొన్ని కలిగి ప్రమాదకరమైన పరిణామాలు 50 00:02:34,580 --> 00:02:38,770 ఒక ఫంక్షన్ మార్పులు ఉంటే ఒక వేరియబుల్ విలువ 51 00:02:38,770 --> 00:02:42,360 మీరు ఆశించిన ముందు అది మార్చవలసిన. 52 00:02:42,360 --> 00:02:44,200 >> ఎందుకు ఈ వ్యత్యాసం ప్రాధాన్యత ఉందా? 53 00:02:44,200 --> 00:02:48,070 ఎందుకు మేము శ్రద్ధ లేదు కొన్ని వేరియబుల్స్ లేదో స్థానిక మరియు ఇతరులు ప్రపంచ ఉన్నాయి? 54 00:02:48,070 --> 00:02:53,880 Well, చాలా భాగం, స్థానిక వేరియబుల్స్ సి లో విలువ ఆమోదించిన అని ఏమి ఉన్నాయి 55 00:02:53,880 --> 00:02:56,087 మేము ఒక ఫంక్షన్ కాల్ చేస్తే. 56 00:02:56,087 --> 00:02:56,920 ఆ అర్థం ఏమిటి? 57 00:02:56,920 --> 00:03:00,880 >> Well, ఒక వేరియబుల్ పాస్ అయినప్పుడు విలువ, callee ద్వారా ఇది 58 00:03:00,880 --> 00:03:04,350 ఫంక్షన్ చెప్పడం మరొక మార్గం ఆ వేరియబుల్ అందుకుంటున్న 59 00:03:04,350 --> 00:03:08,465 ఒక ఇన్పుట్ వంటి జారీ చేస్తారు, ఇది నిజానికి ఆ వేరియబుల్ కూడా లభించదు. 60 00:03:08,465 --> 00:03:12,490 ఇది దాని సొంత అందుకుంటుంది అది కాపీని తో పని. 61 00:03:12,490 --> 00:03:14,350 ఈ ఒక నిజంగా ముఖ్యమైన వ్యత్యాసం ఉంది. 62 00:03:14,350 --> 00:03:18,250 మేము కేవలం రెండవ క్రితం చూసిన ప్రపంచ వేరియబుల్స్ ఆ 63 00:03:18,250 --> 00:03:23,240 మేము ప్రపంచ మార్చటానికి ఉంటే ఒక ఫంక్షన్ లో వేరియబుల్ ప్రభావం 64 00:03:23,240 --> 00:03:26,390 ఆ ఫంక్షన్ చేరవేస్తుంది ప్రతి ఇతర ఫంక్షన్ ద్వారా. 65 00:03:26,390 --> 00:03:28,920 >> కానీ స్థానిక వేరియబుల్స్ తో, నిజమైన కాదు. 66 00:03:28,920 --> 00:03:32,060 ప్రతి ఫంక్షన్ అది ఇన్పుట్ వంటి వేరియబుల్స్ అందుకుంటుంది 67 00:03:32,060 --> 00:03:36,367 ఆ వేరియబుల్స్ యొక్క కాపీలు అందుకోవడం వేరియబుల్స్ తాము. 68 00:03:36,367 --> 00:03:37,825 కాబట్టి ఆ వైపు ప్రభావం ఏమిటి? 69 00:03:37,825 --> 00:03:40,450 అంటే ఆ వేరియబుల్ కాలర్ ఫంక్షన్ 70 00:03:40,450 --> 00:03:45,600 ఫంక్షన్ కాల్ చేయడం ఉంది మారకుండా మీరు భర్తీ తప్ప. 71 00:03:45,600 --> 00:03:50,420 >> ఉదాహరణకు, ఈ కోడ్ లో foo అన్ని వద్ద మారలేదు. 72 00:03:50,420 --> 00:03:55,450 Int foo 4 సమానం, ట్రిపుల్ కాల్ foo యొక్క, ట్రిపుల్ లోపల, 73 00:03:55,450 --> 00:03:58,850 మేము ఆ foo చేస్తాను ఆలోచించే 3 గుణించి మరియు తిరిగి సాధ్యం, 74 00:03:58,850 --> 00:04:01,450 కానీ నిజానికి ఎటువంటి ప్రభావం ఉంది. 75 00:04:01,450 --> 00:04:03,460 >> ఇక్కడ అయితే, చాలా సూక్ష్మ తేడా. 76 00:04:03,460 --> 00:04:06,520 ఈ మేము కావలసిన ప్రభావం కలిగి ఉంది. 77 00:04:06,520 --> 00:04:07,730 మీరు ఎందుకు చూస్తారు? 78 00:04:07,730 --> 00:04:11,500 మేము ప్రధాన ఈ సమయంలో foo భర్తీ చేస్తున్నారు. 79 00:04:11,500 --> 00:04:16,899 >> కాబట్టి Int foo 4, foo సమానం సమానం ట్రిపుల్ foo, మేము ఆ కాల్ చేస్తే, 80 00:04:16,899 --> 00:04:21,680 ట్రిపుల్ దాని స్వంత కాపీని గెట్స్ foo, 4 దాని స్వంత కాపీని. 81 00:04:21,680 --> 00:04:27,340 ఇది సంసార 4 సార్లు 3, లేదా తిరిగి చెప్పారు వేరియబుల్ సార్లు 3 లో వశమైంది. 82 00:04:27,340 --> 00:04:32,109 ఆపై మేము తిరిగి కేటాయించి ట్రిపుల్ విలువ మళ్లీ foo కు. 83 00:04:32,109 --> 00:04:33,650 కాబట్టి ఈ వాస్తవానికి foo తిరిగి రాస్తుంది ఉంటుంది. 84 00:04:33,650 --> 00:04:35,816 దీన్ని ఏకైక మార్గం స్థానిక వేరియబుల్ తో ఈ. 85 00:04:35,816 --> 00:04:38,120 కాబట్టి ఇప్పుడు మేము మరొక జోడిస్తే ఇక్కడ కోడ్ లైన్ 86 00:04:38,120 --> 00:04:40,870 ప్రధాన చివర , foo విలువ ముద్రించాలా 87 00:04:40,870 --> 00:04:45,030 నిజానికి 12 ముద్రించాలా చేస్తుంది. 88 00:04:45,030 --> 00:04:48,600 >> వేరియబుల్ స్కోప్ సాధారణంగా ఉంది ఒక సమస్య కాబోదు 89 00:04:48,600 --> 00:04:51,190 మీరు అన్ని పేరు ఉంటే మీ వేరియబుల్స్ వివిధ విషయాలు. 90 00:04:51,190 --> 00:04:54,920 కానీ అది దుష్ట యొక్క రకమైన పొందవచ్చు అదే వేరియబుల్ పేరు ఉంటే 91 00:04:54,920 --> 00:04:58,820 బహుళ విధులను కనిపిస్తుంది, ఇది చాలా జరగవచ్చు. 92 00:04:58,820 --> 00:05:02,130 మీరు ఎప్పుడైనా పని లేకపోతే వాస్తవ ప్రపంచంలో ఎక్కడ 93 00:05:02,130 --> 00:05:06,080 మీరు సహకార కృషి వివిధ జట్లు కార్యక్రమాలు మరియు ప్రజలు 94 00:05:06,080 --> 00:05:11,000 అదే రాయడానికి కలిసి పనిచేస్తున్నారు ప్రోగ్రామ్ లేదా ప్రోగ్రామ్ల ఒకే సెట్ 95 00:05:11,000 --> 00:05:13,900 వారు తరచుగా వేరియబుల్ మళ్లీ మళ్లీ చేస్తాము పేర్లు, ప్రత్యేకించి సాధారణ వాటిని 96 00:05:13,900 --> 00:05:18,020 అందువలన న x, y, నేను, J, మరియు ఇష్టపడుతున్నారు. 97 00:05:18,020 --> 00:05:20,370 >> కానీ ఉన్నప్పుడు వేరియబుల్స్ కలిగి ఇదే పేరుతో పరిధిని సమస్యలు 98 00:05:20,370 --> 00:05:23,080 కొద్దిగా trickier అన్వయించడం పొందవచ్చు. 99 00:05:23,080 --> 00:05:26,790 ఉదాహరణకు, మీరు తెలుసు ఏమి ముద్రించిన అవుతుంది 100 00:05:26,790 --> 00:05:30,190 ఈ ప్రత్యేక కార్యక్రమం చివరిలో? 101 00:05:30,190 --> 00:05:31,280 ఒక నిమిషం పడుతుంది. 102 00:05:31,280 --> 00:05:33,382 వీడియో పాజ్ మరియు చదవడానికి ఈ కార్యక్రమం ద్వారా. 103 00:05:33,382 --> 00:05:35,590 మీరు పైన మేము వద్ద చూడగలరు ఒక ఫంక్షన్ ప్రకటన 104 00:05:35,590 --> 00:05:37,350 పెంపు అని ఒక ఫంక్షన్ కోసం. 105 00:05:37,350 --> 00:05:40,800 ఆ ఫంక్షన్ ఒకే పడుతుంది పారామితి, మేము x కాల్ పూర్ణాంకం. 106 00:05:40,800 --> 00:05:42,610 మరియు అది ఒక పూర్ణాంకం అందిస్తుంది. 107 00:05:42,610 --> 00:05:44,820 ఆ ప్రారంభంలో తిరిగి రకం. 108 00:05:44,820 --> 00:05:48,140 >> అప్పుడు మేము రేఖల ప్రధాన, ఒక జంట కలిగి ప్రధాన కోడ్, వీటిలో చివరి 109 00:05:48,140 --> 00:05:49,250 ఒక ప్రింట్ ప్రకటన. 110 00:05:49,250 --> 00:05:51,140 మరియు ఇక్కడ ప్రశ్న, గుర్తుంచుకోవాలి. 111 00:05:51,140 --> 00:05:54,240 ఏమి నిజానికి అవతరిస్తుంది ఈ ఫంక్షన్ ముగింపు వద్ద ముద్రించిన? 112 00:05:54,240 --> 00:05:58,110 ఆపై మేము నిజానికి క్రింద పెంపు నిర్వచనం. 113 00:05:58,110 --> 00:06:01,760 >> సో ద్వారా అడుగు, ఒక నిమిషం పడుతుంది కోడ్ విషయాలను కలిగివున్నారు. 114 00:06:01,760 --> 00:06:08,100 మీరు ప్రింట్ చేయబడుతుంది ఏమి తెలుసా ఈ ప్రత్యేక కార్యక్రమం ముగింపు? 115 00:06:08,100 --> 00:06:08,600 >> అయితే సరే. 116 00:06:08,600 --> 00:06:11,433 ఆశాజనక, మీరు కొన్ని సెకన్ల తీసుకున్నారు ప్రయత్నించండి మరియు ఈ ఒక అన్వయించడం. 117 00:06:11,433 --> 00:06:13,370 యొక్క కలిసి దీన్ని లెట్. 118 00:06:13,370 --> 00:06:16,022 >> కాబట్టి నేను పెంపు యొక్క కొట్టివేసి చేసిన అక్కడ టాప్ వద్ద డిక్లరేషన్. 119 00:06:16,022 --> 00:06:17,230 ఇది పరధ్యానంగా రకంగా ఉండేది. 120 00:06:17,230 --> 00:06:18,570 ఇది దాని సొంత వేరియబుల్ కాదు. 121 00:06:18,570 --> 00:06:19,879 ఇది దాని సొంత పరిధిలో లేదు. 122 00:06:19,879 --> 00:06:21,920 ఇది కేవలం ఒక ఫంక్షన్ ఉంది ప్రకటన కాబట్టి ప్రయోజనాల కోసం 123 00:06:21,920 --> 00:06:24,330 వార్తలు ఏమిటో అన్వయించడం ప్రయత్నిస్తున్నప్పుడు ఈ కార్యక్రమం జరుగుతున్న, 124 00:06:24,330 --> 00:06:26,660 మేము అలాగే కేవలం అది నివారించేందుకు ఉండవచ్చు. 125 00:06:26,660 --> 00:06:29,560 >> ఇప్పుడు మేము ఈ సందర్భంలో, ఈ సమస్య గమ్మత్తైన కారణం 126 00:06:29,560 --> 00:06:34,030 మేము స్థానిక వేరియబుల్స్ కలిగి ఎందుకంటే ప్రధాన మరియు పెంపు, రెండు ప్రతి వీటిలో 127 00:06:34,030 --> 00:06:35,090 అని x. 128 00:06:35,090 --> 00:06:39,830 మరియు కోర్సు యొక్క ఈ సమస్య యొక్క ఆయువుపట్టు ఉంది x మార్చారు కొద్దీ ఇది బయటకు సబ్ ప్రయత్నిస్తున్న 129 00:06:39,830 --> 00:06:41,890 మరియు అది ఎలా మార్చుకోమని లేదు. 130 00:06:41,890 --> 00:06:46,900 నేను ప్రతి ఉదాహరణకు రంగు చేసిన x యొక్క ప్రధాన ఎరుపు స్థానిక వార్తలు. 131 00:06:46,900 --> 00:06:52,040 మరియు నేను ప్రతి ఉదాహరణకు రంగు చేసిన x నీలి పెంచడం స్థానిక వార్తలు. 132 00:06:52,040 --> 00:06:55,220 >> మూడవ లైన్ లో నోటీసు ప్రధాన, y పెంపు సమానం 133 00:06:55,220 --> 00:07:00,800 x, పెంపు ఉండటం లేదు ఉత్తీర్ణత యొక్క ప్రధాన x, లేదా ఎరుపు x. 134 00:07:00,800 --> 00:07:03,320 ఇది దాని కాపీని ఆమోదించింది సంతరించుకోనుంది. 135 00:07:03,320 --> 00:07:06,987 మరియు అది మాత్రమే పని జరగబోతోంది అది ఆ కాపీని, నీలం x. 136 00:07:06,987 --> 00:07:08,820 మీరు గణితశాస్త్ర పోతే వొంపు, మీరు వాటిని 137 00:07:08,820 --> 00:07:14,230 బదులుగా x ఉప ఈ ఆలోచించిన పెంపు కోసం ప్రధాన మరియు x ఉప i కోసం m. 138 00:07:14,230 --> 00:07:15,700 కానీ అదే ఆలోచన. 139 00:07:15,700 --> 00:07:18,999 x ఉప m, లేదా x యొక్క ఎరుపు మునుపటి స్లయిడ్ లో, 140 00:07:18,999 --> 00:07:21,790 local-- అని వేరియబుల్స్ ఉన్నాయి ఆ కాకుండా x యొక్క ఉదాహరణను 141 00:07:21,790 --> 00:07:26,900 ప్రధాన స్థానిక, మరియు x ఉప i, లేదా మునుపటి స్లయిడ్ నీలం వేరియబుల్స్ 142 00:07:26,900 --> 00:07:30,760 x యొక్క పర్యాయాలు పెంచడం స్థానిక ఉన్నాయి. 143 00:07:30,760 --> 00:07:36,220 >> కాబట్టి, మీరు దొరుకుతుందని సాధించారు ఏమి చివరిలో ముద్రించిన ఈ ఫంక్షన్? 144 00:07:36,220 --> 00:07:39,420 నేను డౌ లాయిడ్ ఉన్నాను, మరియు ఈ CS50 ఉంది. 145 00:07:39,420 --> 00:07:41,542