ராப் Bowden: Hi, நான், ராப் Bowden இருக்கிறேன் மற்றும் ன் quiz0 பற்றி பேசுகிறேன். எனவே, முதல் கேள்வி. இந்த கேள்வி எங்கே உள்ளது நீங்கள் எண் குறியீட்டை தேவை பைனரி பல்புகள் 127. நீங்கள் விரும்பினால், நீங்கள் முடிந்த வழக்கமான மாற்றம் செய்ய தசம இருந்து பைனரி, bi-- அல்லது இருந்து. ஆனால் அந்த ஒருவேளை நடக்கிறது நிறைய நேரம் எடுக்க. நான், நீ என்று கண்டுபிடிக்க முடியவில்லை, அர்த்தம், சரி, 1, அங்கு, 2 அங்கு உள்ளது 4 அங்கு, 8 அங்கு உள்ளது. எளிதான வழி, 127 128 கழித்தல் ஒன்றாகும். அந்த இடப்புறம் உள்ள ஒன்றே விளக்குகளுக்கு 128 பிட் உள்ளது. எனவே 127 தான் அனைத்து உண்மையில் மற்ற ஒளி விளக்குகளின், என்று இடப்புறம் உள்ள ஒன்றே என்பதால் ஒளி விளக்கை மைனஸ் 1. அந்த கேள்வி இது தான். கேள்வி ஒன்று. 3 பிட்கள் எனவே நீங்கள் 8 வேறுபட்ட மதிப்புகள் பிரதிநிதித்துவம். அப்படியானால், பெரிய அல்லாத எதிர்மறை 7 நீங்கள் பிரதிநிதித்துவம் முடியும் தசம முழு? சரி, நாம் மட்டும் முடியும் 8 வேறுபட்ட மதிப்புகள் பிரதிநிதித்துவம், பிறகு நாம் என்ன போகிறாய் குறிக்கும் 7 மூலம் 0 உள்ளது. 0 மதிப்புகள் ஒரு எடுத்து. கேள்வி இரண்டு. N பிட்கள், எப்படி பல வேறுபட்ட மதிப்புகள் நீங்கள் பிரதிநிதித்துவம்? எனவே, n பிட்கள் உடன், நீங்கள் 2 வேண்டும் ஒவ்வொரு பிட் சாத்தியமான மதிப்புகள். எனவே 2 முடியும் மதிப்புகள் வேண்டும் முதல் பிட், 2 சாத்தியமான மதிப்புகள் இரண்டாவது, 2 மூன்றாவது சாத்தியம். அப்படி என்று 2 முறை 2 முறை 2, மற்றும் இறுதியில் பதில் 2 n க்கு உள்ளது. கேள்வி மூன்று. பைனரி 0x50 என்ன? எனவே அறுபதின்ம ஒரு மிகவும் உள்ளது என்பதை நினைவில் பைனரி நேரடியான மாற்றம். எனவே இங்கே, நாம் தான் பார்க்க வேண்டும் 5 மற்றும் சுயாதீனமாக 0. எனவே பைனரி 5 என்ன? 0101, என்று 1 பிட் மற்றும் 4 பிட் தான். பைனரி 0 என்ன? தந்திரமான இல்லை. 0000. அதனால் தான் அவர்களை ஒன்றாக வைத்து, மற்றும் என்று பைனரி முழு எண். 01010000. நீங்கள் விரும்பினால் நீங்கள் முடியும் என்று இடப்புறம் உள்ள ஒன்றே பூஜ்யம் எடுத்து. இது பொருத்தமற்ற. எனவே மாற்றாக, தசம 0x50 என்ன? நீங்கள் விரும்பினால் நீங்கள் என்றால், நீங்கள் could-- பைனரி இன்னும் வசதியாக, நீங்கள் அந்த பைனரி பதில் ஆகலாம் மற்றும் தசம ஒரு என்று மாற்ற. அல்லது நாம் தான் நினைவில் முடியும் அறுபதின்ம. 0 என்று எனவே 0-வது இடத்தில் உள்ளது, மற்றும் 5 முதல் இடத்தில் 16 இல் உள்ளது. எனவே இங்கே, நாம் 5 முறை 16 முதல், பூஜ்ஜியம் பிளஸ் 0 முறை 16, 80 ஆகிறது. நீங்கள் பார்த்து கேள்விக்கு தலைப்பு, அது ஒரு வகையான இருந்தது சிஎஸ் 80, இருந்தது இந்த பிரச்சினை பதில் ஆலோசனை. கேள்வி ஐந்து. நாம் இது, இந்த கீறல் ஸ்கிரிப்ட் 4 முறை வேர்க்கடலை வெண்ணெய் ஜெல்லி மீண்டும். நாம் எப்படி சி குறியீடு இப்போது செய்ய? சரி, நாம் இங்கே தடித்த பகுதியாக வேண்டும் நீங்கள் செயல்படுத்த வேண்டிய பகுதிதான். எனவே நாம் 4 தேடுகிறது என்று ஒரு 4 வளைய வேண்டும் முறை, வைட்டமின் என்கிறார் வேர்க்கடலை வெண்ணெய் ஜெல்லி, புதிய வரி பிரச்சனை கேட்கும் வரை. கேள்வி ஆறு, மற்றொரு கீறல் பிரச்சினை. நாம் ஒரு நிரந்தரமாக வளைய என்று பார்க்க. நாம் மாறி நான் சொல்கிறீர்கள் பின்னர் 1 நான் உயர்த்துவதன். இப்போது நாம் சி உள்ளன என்று செய்ய வேண்டும் நாம் இதை செய்திருக்க முடியும் பல வழிகள் இருக்கிறது. இங்கே நாம் குறியீட்டை நடந்தோம் ஒரு (உண்மை) போது போன்ற நிரந்தரமாக வளைய. எனவே தான், நான் மாறி அறிவிக்கிறோம் போன்ற நாம் கீறல் மாறி நான் இருந்தோம். நான் மாறி அறிவிக்க, மற்றும் எப்போதும் (உண்மை) போது, நாம் மாறி நான் சொல்ல. வைட்டமின்% வரை நான் அல்லது நீங்கள்% d பயன்படுத்தப்படும் கொடுத்திருக்கலாமே எனவே. நாம் அது மாறி சொல்கிறோம், மற்றும் பின்னர் அதை அதிகப்படுத்த, நான் ++. கேள்வி ஏழு. இப்போது நாம் மிகவும் போன்ற ஏதாவது செய்ய வேண்டும் மரியோ டாட் கேட்ச் பிரச்சனை இருந்து ஒன்று அமைத்தது. நாம் இந்த ஹாஷ்டேகுகளை அச்சிட வேண்டும், நாங்கள் ஒரு ஐந்து அச்சிட வேண்டும் இந்த ஹாஷ்களைப் மூன்று செவ்வகம். நாம் எப்படி செய்ய போகிறாய் என்று? சரி, நாம் நீங்கள் ஒரு முழு கொடுக்கிறோம் குறியீடு ஒரு கொத்து, மற்றும் நீங்கள் அச்சு கட்டம் செயல்பாடு நிரப்ப வேண்டும். எனவே என்ன PrintGrid இருப்பான்? சரி நீங்கள் கடந்த இருக்கிறீர்கள் அகலம் மற்றும் உயரம். எனவே நாம் ஒரு வெளி வேண்டும் 4 வட்டத்திற்கு, அந்த தேடுகிறது இந்த அனைத்து வரிசைகளையும் மீது நாம் வெளியே அச்சிட வேண்டும் என்று கட்டம். பின்னர் நாம், இடையேயான உள்ளமை 4 வளைய வேண்டும் என்று ஒவ்வொரு நிரலை மீது அச்சிடும் தான். எனவே ஒவ்வொரு வரிசையிலும், நாம் அச்சிட ஒவ்வொரு பத்தியில், ஒரு ஒற்றை ஹாஷ். பின்னர் வரிசையில் இறுதியில் நாம் அச்சிட ஒரு ஒற்றை புதிய வரி அடுத்த வரிசையில் செல்ல. அந்த முழு கட்டம் இது தான். கேள்வி எட்டு. PrintGrid போன்ற ஒரு செயல்பாடு கூறினார் மீண்டும் ஒரு பக்க விளைவு இல்லை, ஆனால் மதிப்பு. வேறுபாட்டை விளக்கவும். எனவே இந்த நீங்கள் நினைவு நம்பியுள்ளது ஒரு பக்க விளைவு என்ன. சரி, ஒரு திரும்ப மதிப்பு நாம் PrintGrid இல்லை தெரியும் பின்னர், திரும்பி மதிப்பு இல்லை வலது இங்கே அது வெற்றிடத்தை கூறுகிறது. வெற்றிடத்தை கொடுக்கிறது என்று, அதனால் எதற்கும் உண்மையில் எதையும் தராது. எனவே பக்க விளைவு என்ன? சரி, ஒரு பக்க விளைவு ஆகும் அப்படி தொடர்ந்தால் என்று எதுவும் செயல்பாடு முடிவடையும்போது என்று, வந்துவிட்டன் இருந்தது மற்றும் அது வெறும் உள்ளீடுகள் இருந்து இருந்தது. அதனால், எடுத்துக்காட்டாக, நாம் வல்லமை ஒரு உலகளாவிய மாறி மாற்ற. அந்த ஒரு பக்க விளைவு இருக்கும். இந்த குறிப்பிட்ட வழக்கில், ஒரு மிகவும் முக்கியமான பக்க விளைவு திரையில் அச்சிடுதல். அதனால் ஒரு பக்க விளைவு ஆகும் என்று PrintGrid உள்ளது. நாம் திரையில் இந்த விஷயங்களை அச்சிட. மற்றும் நீங்கள் யோசிக்க முடியும் என்று ஒரு பக்க விளைவு, என்று ஏதாவது என்பதால் இந்த செயல்பாடு முடிவடைகிறது பிறகு தொடர்ந்தால். அந்த நோக்கம் வெளியே விஷயம் இந்த செயல்பாடு என்று இறுதியில் மாற்றப்பட்டுக்கொண்டிருக்கிறது, திரையில் உள்ளடக்கங்களை. கேள்வி ஒன்பது. , கீழே திட்டம் கவனியுங்கள் இது வரி எண்கள் சேர்க்கப்பட்டுள்ளது விவாதம் பொருட்டு. இந்த திட்டத்தில் எனவே தான் இருக்கிறோம் அதை சேமித்து, GetString நினைத்தீர்கள் இந்த மாறி கள், பின்னர் என்று மாறி கள் அச்சிடும். சரி. வரி ஒன்று உள்ளது ஏன் விளக்க. அடங்கும், cs50 டாட் மணி. நாம் ஏன், cs50 டாட் மணி # சேர்க்க வேண்டும்? சரி நாம் நினைத்தீர்கள் செயல்பாடு GetString, மற்றும் GetString வரையறுக்கப்பட்ட cs50 நூலகம் உள்ள. நாம் இல்லை என்றால் எனவே அடங்கும், cs50 டாட் மணி, நாம் என்று உள்ளார்ந்த அறிவிப்பு கிடைக்கும் GetString செயல்பாடு பிழை ஒடுக்கி இருந்து. எனவே நாம் நூலகம் சேர்க்க வேண்டும் நாம் தலைப்பு கோப்பு சேர்க்க வேண்டும், அல்லது வேறு ஒடுக்கி மாட்டேன் GetString உள்ளது என்று அங்கீகரிக்க. வரி இரண்டு தற்போது ஏன் விளக்குங்கள். நிலையான IO டாட் மணி. அது போலவே தான் முந்தைய பிரச்சனை என, பதிலாக கையாள்வதில் தவிர GetString நாம் வைட்டமின் பற்றி பேசுகிறீர்கள். நாம் வேண்டும் என்று இல்லை என்றால், அதனால் நிலையான IO டாட் மணி சேர்க்க, பின்னர் நாம் முடியாது printf செயல்பாட்டை பயன்படுத்த, ஒடுக்கி ஏனெனில் அது பற்றி தெரியாது. Why-- முக்கியத்துவம் என்ன வரி நான்கு களைவதற்கு? எனவே இங்கே நாம் எண்ணாக முக்கிய (வெற்றிடத்தை) வேண்டும். என்று தான் என்று நாம் கூறி எந்த கட்டளை வரி பெறுவது முக்கிய வாதங்கள். நாம் எண்ணாக சொல்ல முடியும் என்பதை நினைவில் கொள்ளுங்கள் முக்கிய எண்ணாக argc சரம் argv அடைப்புக்குறிக்குள். எனவே இங்கே நாம் வெறும் நாம் சொல்ல வெற்றிடத்தை சொல்ல கட்டளை வரி வாதங்களை புறக்கணிப்பதாக. சரியாக, நினைவகம் பொறுத்து, விளக்குங்கள் வரி என்ன GetString ஆறு திரும்புகிறார். GetString ஒரு தொகுதி திரும்பிய நினைவகம், கதாபாத்திரங்கள் ஒரு வரிசை. அது உண்மையில் ஒரு திரும்பி முதல் பாத்திரம் சுட்டிக்காட்டி. ஒரு சரம் ஒரு எரிப்பதை நட்சத்திர என்பதை நினைவில் கொள்ளுங்கள். எனவே கள் முதல் ஒரு சுட்டிக்காட்டி உள்ளது பாத்திரம் என்ன சரம் பயனர் விசைப்பலகை உள்ளிட்ட என்று. அந்த நினைவகம் malloced நடக்கும், எனவே அந்த நினைவு குவியல் இருக்கிறது. கேள்வி 13. கீழே திட்டம் கவனியுங்கள். எனவே இந்த திட்டத்தை செய்து 1 10 வகுக்க வைட்டமின் என்கிறார். எனவே தொகுக்கப்பட்ட போது மற்றும் கொலை, இந்த திட்டம் வெளியீடுகளை 0.0, கூட 1 10 வகுக்க 0.1 ஆகும். எனவே ஏன் அது 0.0 ஆகும்? சரி, இந்த ஏனெனில் உள்ளது முழு பிரிவு. எனவே 1 ஒரு முழு 10, ஒரு முழு உள்ளது. எனவே 1 10, எல்லாம் வகுக்க முழு கருதப்பட, மற்றும் சி, நாம் முழு பிரிவு செய்யும் போது, நாம் எந்த தசம புள்ளி வெட்டு. எனவே, 10 1 பிரிக்கப்பட்டுள்ளது 0, பின்னர் நாம் முயற்சிக்கும் எனவே, ஒரு மிதவை என்று அச்சிட ஒரு மிதவை என அச்சிடப்பட்ட பூஜ்யம் 0.0 உள்ளது. நாம் 0.0 கிடைக்கும் அதனால் தான். கீழே திட்டம் கவனியுங்கள். இப்போது நாம் 0.1 அச்சிடும். எனவே எந்த முழு பிரிவு, நாம் வெறும், 0.1 அச்சிடும் ஆனால் நாம் அதை அச்சிட்டு 28 தசாம்சமாக. மற்றும் நாம் இந்த 0.1000, ஒரு மொத்தமாக கிடைக்கும் பூஜ்ஜியங்களைக், 5 5 5, அபத்தம் அபத்தம் அபத்தம். அது ஏன் எனவே இங்கே கேள்வி பதிலாக சரியாக 0.1, என்று அச்சிட? எனவே இங்கே காரணம் இப்போது உள்ளது புள்ளி imprecision மிதக்கும். ஒரு மிதவை மட்டும் 32 பிட்டுகள் ஆகும் என்பதை நினைவில் கொள்ளுங்கள். எனவே நாம் ஒரே ஒரு வரையறுக்கப்பட்ட எண் பிரதிநிதித்துவம் முடியாது அந்த 32 புள்ளி மதிப்புகள் மிதக்கும் பிட்கள். சரி இறுதியில் எண்ணற்ற இருக்கிறது பல மிதவை புள்ளி மதிப்புகள், மற்றும் மிதக்கும் எண்ணற்ற பல இருக்கிறது 0 மற்றும் 1 இடையே புள்ளி மதிப்புகள், மற்றும் நாம் வெளிப்படையாக முடிகிறது அதை விட இன்னும் மதிப்புகள் பிரதிநிதித்துவம். எனவே நாம் தியாகம் செய்ய வேண்டும் மிகவும் மதிப்புகள் பிரதிநிதித்துவம் முடியும். எனவே, 0.1 போன்ற ஒரு மதிப்பு, வெளிப்படையாக நாம் என்று சரியாக பிரதிநிதித்துவம் முடியாது. எனவே, அதற்கு பதிலாக 0.1 குறிக்கும் நாம் செய்கிறோம் சிறந்த நாம் இந்த 0.100000 5 5 பிரதிநிதித்துவம் முடியும் 5. அந்த, மிகவும் அருகில் ஆனால் பயன்பாடுகள் நிறைய நீங்கள் கவலைப்பட வேண்டும் புள்ளி imprecision மிதக்கும், நாம் வெறும் பிரதிநிதித்துவம் முடியாது ஏனெனில் அனைத்து புள்ளிகள் சரியாக மிதக்கும். கேள்வி 15. கீழே குறியீடு கவனியுங்கள். நாம் வெறும் 1 பிளஸ் 1 அச்சிடும். எனவே இங்கே எந்த தந்திரம் உள்ளது. 1 பிளஸ் 1 2 மதிப்பீடு, மற்றும் பின்னர் நாங்கள் அந்த அச்சிடும். இது 2 அச்சிடுகிறது. கேள்வி 16. இப்போது நாம் பாத்திரம் அச்சிடுவதற்கு 1 பிளஸ் பாத்திரம் 1. எனவே ஏன் இந்த இல்லை அதே அச்சிட? சரி பாத்திரம் 1 பிளஸ் பாத்திரம் 1, பாத்திரம் 1 ASCII மதிப்பு 49 உள்ளது. எனவே இந்த உண்மையில் 49 கூறி பிளஸ் 49, மற்றும் இறுதியில் இந்த 98 அச்சிட நடக்கிறது. எனவே இந்த 2 அச்சிட. கேள்வி 17. செயல்படுத்த முடிக்க போன்ற ஒரு வழியில் கீழே ஒற்றைப்படை செயல்பாடு என்றால் உண்மை கொடுக்கிறது என்று n என்பது இரட்டை என்றால் n ஒற்றை மற்றும் தவறானது. இந்த ஒரு பெரிய நோக்கம் இருக்கிறது மோட் ஆபரேட்டர் ஐந்து. எனவே நாம் நமது வாதம் n எடுத்து, n மோட் 2 நன்கு 1, சமம் என்றால் என்று n பிரிக்கப்பட்டுள்ளது என்று அர்த்தம் 2 ஒரு எஞ்சிய இருந்தது. N 2 வகுக்க என்றால், ஒரு எஞ்சிய என்று n ஒற்றை எண், எனவே நாம் உண்மையான திரும்ப என்று அர்த்தம். வேறு நாம் தவறான திரும்ப. நீங்கள் 2 சமமாக mod n செய்திருக்க முடியும் பூஜ்யம், வேறு, தவறான திரும்ப உண்மை திருப்பி. கீழே சுழல்நிலை செயல்பாடு கவனியுங்கள். N என்றால் குறைவாக அல்லது 1 திரும்ப, 1 சமமாக, n கழித்து 1 ஊ வேறு திரும்பி n முறை. எனவே இந்த செயல்பாடு என்ன? சரி, இந்த தான் காரணியாலான செயல்பாடு. இந்த நன்றாக பிரதிநிதித்துவம் n காரணியாலான போன்ற. எனவே இப்போது 19 கேள்வி, நாம் வேண்டும் இந்த சுழல்நிலை செயல்பாடு எடுத்து. நாம் அது பங்கேற்பு செய்ய வேண்டும். நாம் எப்படி செய்ய வேண்டும்? சரி ஊழியர்கள் தீர்வு, மற்றும் மீண்டும் அங்கு தான் நீங்கள் செய்திருக்க முடியும் பல வழிகளில் , நாம் இந்த எண்ணாக தயாரிப்பு தொடங்கும் என்று 1 சமம். மற்றும் இந்த முழுவதும் லூப், நாம் போகிறோம் இறுதியில் தயாரிப்பு பெருகி வருவதாகத் முழு காரணியாலான முடிவடையும். முழு எண்ணாக நான் 2 சமமாக எனவே, நான் இருக்கிறேன் குறைவாக அல்லது n சமமாக, நான் ++. நான் 2 சமமாக ஏன் நீங்கள் ஆச்சரியப்படலாம். சரி, நாம் வேண்டும் இங்கே நினைவில் நம் அடிப்படை வழக்கில் சரியானதா என்பதை உறுதி. N விட குறைவாக அல்லது சமமாக இருந்தால் எனவே 1, நாம் தான் 1 திரும்பிய. நான் 2 சமமாக இங்கே மீது எனவே, நாம் தொடங்கும். சரி, நான் 1, இருந்தால் பின்னர் the-- அல்லது n லூப் பின்னர் 1, இருந்தது என்றால் அனைத்து இயக்க முடியாது. எனவே நாம் தான் என்று 1 இது திரும்ப தயாரிப்பு,. இதேபோல், அதை n இருந்தது மேல் எதுவும் குறைவாக 1 வேண்டும் அது 0, இருந்தால் எதிர்மறை 1, whatever-- நாம் இன்னும், 1 திரும்பிய இது சரியாக என்ன சுழல்நிலை பதிப்பு செய்கிறாய். இப்போது, N அதிகமாக இருந்தால் 1 விட, பின்னர் நாம் போகிறோம் குறைந்தது ஒரு செய்ய இந்த வட்டத்திற்கு ஹீரோக்களின். எனவே நாம் இருக்கிறோம், ன் n 5 சொல்கிறேன் தயாரிப்பு முறை செய்ய போகிறேன் 2 சமம். எனவே இப்போது தயாரிப்பு 2 உள்ளது. இப்போது நாம் என்ன செய்ய போகிறோம் தயாரிப்பு முறை 3 சமம். இப்போது அது 6 தான். தயாரிப்பு முறை இப்போது அது 24 தான், 4 சமம். தயாரிப்பு முறை இப்போது அது 120 தான், 5 சமம். எனவே இறுதியில், நாம் திரும்பி சரியாக 5 காரணியாலான இது 120,. கேள்வி 20. இந்த நீங்கள் நிரப்ப வேண்டும் எங்கே ஒன்றாகும் எந்தவொரு வழிமுறையை கொண்டு இந்த அட்டவணையில், நாம் பார்த்த அந்த எதையும், என்று இந்த வழிமுறை ரன் பொருந்துகிறது முறை இந்த அறிகுறியும் ரன் முறை. எனவே ஒரு வழிமுறை என்ன என்று 1 ஒமேகா, ஆனால் n பெரிய ஓ? எனவே எண்ணற்ற இருக்க முடியும் இங்கே பல பதில்களை. நாம் ஒருவேளை மிகவும் பார்த்திருக்கிறேன் என்று ஒன்று அடிக்கடி வெறும் நேர்கோட்டு தேடல் இருக்கிறது. அதனால் சிறந்த வழக்கில் சூழ்நிலையில், நாம் இருக்கிறோம் உருப்படி தேடும் உள்ளது பட்டியலில் தொடங்கி மற்றும் அதனால் 1 படிகள் ஒமேகா இல், நாம் பார்க்கலாம் முதல் விஷயம், நாங்கள் உடனடியாக திரும்ப என்று நாம் உருப்படி காணப்படவில்லை. மோசமான நிலைமையில், உருப்படி, இறுதியில் அல்லது உருப்படி அனைத்து பட்டியலில் உள்ளது. எனவே நாம் தேட வேண்டும் முழு பட்டியலை, அனைத்து n கூறுகள், மற்றும் அதை n ஓ அதனால் தான். எனவே இப்போது அது இரண்டு என்று ஒன்று என்று n log n ஒமேகா, மற்றும் n log n பெரிய ஓ. சரி மிகவும் பொருத்தமான விஷயம் நாம் இங்கே பார்த்ததில்லை வகையான ஒன்றாக்க உள்ளது. எனவே வகையான, நினைவில் ஒன்றாக்க, இறுதியில் தீட்டா தீட்டா வரையறுக்கப்பட்ட அமைந்துள்ள n log n, இன் ஒமேகா மற்றும் பெரிய ஓ இருவரும் அதே இருந்தால். இருவரும், n log n. ஒமேகா என்று ஏதாவது என்ன n,, மற்றும் n ஓ? சரி, மீண்டும் அங்கு பல பதில்கள். இங்கே நாம் குமிழி சொல்ல நடக்கும். செருகும் வரிசையாக்கம் மேலும் இங்கே வேலை செய்யும். குமிழி வரிசையாக்கம் ஞாபகம் தேர்வுமுறை எங்கே உள்ளது, நீங்கள் பெற முடியும் என்றால் முழு பட்டியல் மூலம் செய்ய தேவையில்லாமலேயே எந்த பரிமாற்றங்கள், பின்னர், நன்றாக, நாம் உடனடியாக அந்த திரும்ப முடியும் பட்டியலில் தொடங்கும் வரிசைப்படுத்தப்பட்ட. , சிறந்த வழக்கு சூழ்நிலையில் எனவே அதை n வெறும் ஒமேகா தான். அது வெறும் ஒரு நன்றாக இல்லை என்றால் தொடங்கும் பட்டியலில் வரிசைப்படுத்தப்பட்ட பின்னர் நாம் n ஓ பரிமாற்றங்கள் ஸ்கொயர் வேண்டும். இறுதியாக, நாம் தேர்வு மாதிரி இருக்கும் ஸ்கொயர் n ஐந்து, ஒமேகா மற்றும் பெரிய பெ இருவரும் கேள்வி 21. முழு வழிதல் என்ன? சரி மீண்டும், முன்பு போலவே, நாம் மட்டும் finitely பல பிட்கள் வேண்டும் ஒரு முழு பிரதிநிதித்துவம், அதனால் 32 பிட்டுகள். நாம் ஒரு ஒப்பந்தம் முழு வேண்டும் என்று. பின்னர் இறுதியில் உயர்ந்த நேர்மறை எண் நாம் பிரதிநிதித்துவம் முடியும் 2 31 மைனஸ் 1. நாம் முயற்சி செய்தால் அதனால் என்ன நடக்கும் பின்னர் அந்த முழு அதிகப்படுத்த? சரி, நாம் 31 2 இருந்து செல்ல போகிறோம் மைனஸ் 1, கீழே எதிர்மறை 2 அனைத்து வழி 31. எனவே இந்த முழு நிரம்பி வழிந்து நீங்கள் உயர்த்துவதன் வைத்து போது, இறுதியாக நீங்கள் முடியாது எந்த உயர் மற்றும் அது தான் பெற மீண்டும் அனைத்து வழி மறைப்புகள் ஒரு எதிர்மறை மதிப்பு சுற்றி. ஒரு இடையக வழிதல் பற்றி என்ன? எனவே ஒரு தாங்கல் overflow-- ஒரு தாங்கல் என்ன நினைவில். அது நினைவகம் ஒரு துண்டின் தான். ஒரு வரிசை போன்ற ஏதாவது ஒரு தாங்கல் உள்ளது. எனவே ஒரு இடையக வழிதல் போது உள்ளது நீங்கள் நினைவகம் அணுக முயற்சி என்று வரிசை இறுதியில் அப்பால். நீங்கள் ஒரு இல்லை என்றால் அளவு 5 மற்றும் நீங்கள் வரிசை வரிசை அடைப்புக்குறி அணுக முயற்சி 5 அல்லது அடைப்புக்குறி 6 அல்லது அடைப்புக்குறி 7, அப்பால் அல்லது எதையும் இறுதியில், அல்லது கூட எதையும் below-- வரிசை அடைப்புக்குறி எதிர்மறை 1 வேண்டும் அந்த அனைத்து தாங்கல் வழிந்து உள்ளன. நீங்கள் கெட்ட வழிகளில் நினைவகத்தை தொட்டு. கேள்வி 23. நீங்கள் தேவை இந்த ஒரு எனவே strlen செயல்படுத்த வேண்டும். மற்றும் நாம் நீங்கள் என்று சொல்கிறோம் ங்கள் பூஜ்ய முடியாது கருதி, எனவே நீங்கள் வேண்டும் பூஜ்ய எந்த சோதனை செய்ய. மற்றும் பல வழிகள் உள்ளன நீங்கள் இதை செய்திருக்க முடியும். இங்கே நாம் வெறும் நேரடியான எடுக்க. நாம் n, ஒரு எதிர் தொடங்கும். n ஆகும் அங்கு எத்தனை எழுத்துக்கள் உள்ளன எண்ணும். எனவே நாம் பின்னர் 0 துவங்க, மற்றும் முழு பட்டியலில் மீது மீண்டும் கூறு. சமமாக ங்கள் அடைப்புக்குறி 0 பூஜ்ய அழிப்பு தன்மையை? நாம் தேடும் ஞாபகம் பூஜ்ய அழிப்பு தன்மையை எங்கள் சரம் எப்படி நீண்ட தீர்மானிக்க. அந்த முறித்து போகிறது எந்த தொடர்புடைய சரம். எனவே கள் அடைப்புக்குறி 0 சமமாக உள்ளது பூஜ்ய அழிப்பு செய்ய? அது இல்லை என்றால், நாம் போகிறோம் கள் அடைப்புக்குறி 1, கள் அடைப்புக்குறி 2 பாருங்கள். நாம் வரை நடக்கிறது பூஜ்ய அழிப்பு கண்டுபிடிக்க. நாம் அதை கண்டுபிடித்தோம் ஒருமுறை, பின்னர் n கொண்டிருக்கிறது சரம் மொத்த நீளம், நாம் தான் திரும்ப முடியும். கேள்வி 24. எனவே இந்த ஒன்றாகும் எங்கே நீங்கள் வர்த்தக ஆஃப் செய்ய வேண்டும். எனவே ஒரு விஷயம் ஒன்று நல்லது ஆனால் என்ன வழியில் வழி அது மோசமாக இருக்கிறது? எனவே இங்கே, ஒன்றாக்க வகையான முனைகிறது குமிழி விட வேகமாக இருக்கும். அங்கு, நன்கு அப்படி கூறினார் பல பதில்கள் இங்கே உள்ளன. ஆனால் முக்கிய ஒன்று என்று குமிழி ஆகிறது ஒரு வரிசைப்படுத்தப்பட்ட பட்டியலை n, ஒமேகா உள்ளது. நாம் முன்பே பார்த்தேன் என்று அட்டவணை ஞாபகம். எனவே குமிழி ஒமேகா வகையான N, சிறந்த வழக்கு சூழ்நிலையில் அது வெறும் மேல் சென்று முடியும் தான் ஆகிறது பட்டியலில் ஒருமுறை, தீர்மானிக்க ஏய் இந்த விஷயம் ஏற்கனவே உள்ளது வரிசைப்படுத்தப்பட்ட, மற்றும் திரும்ப. எந்த விஷயத்தை, ஒன்றாக்க வகையான என்ன நீங்கள் செய்ய, n log n ஒமேகா உள்ளது. வரிசைப்படுத்தப்பட்ட பட்டியலை ஐந்து, குமிழி எனவே வகையான வேகமாக இருக்கும் நடக்கிறது. இப்போது பட்டியல்கள் பற்றி இணைக்கப்பட்ட? எனவே ஒரு இணைக்கப்பட்ட பட்டியலில் வளர மற்றும் சுருக்க முடியும் தேவை என பல கூறுகள் பொருந்தும். அதனால் அப்படி கூறினார் வழக்கமாக நேரடி ஒப்பீடு ஒரு இணைக்கப்பட்ட இருக்க போகிறது ஒரு வரிசை பட்டியலிட. எனவே கூட வரிசைகள் முடியும் என்றாலும் எளிதாக வளரும் மற்றும் சுருக்க போன்ற பல கூறுகள் பொருந்தும் தேவையான, ஒரு இணைக்கப்பட்ட பட்டியலில் ஒரு வரிசைக்கு ஒரு ஒப்பிடும்போது வரிசை சீரற்ற அணுகல் உள்ளது. நாம் எந்த குறியீட்டு முடியும் வரிசை குறிப்பிட்ட உறுப்பு. எனவே ஒரு இணைக்கப்பட்ட பட்டியலில், நம்மால் முடியாது ஐந்தாவது உறுப்பு சென்று, நாம் ஆரம்பத்தில் இருந்து தொடரவேண்டும் நாம் ஐந்தாவது உறுப்பு கிடைக்கும் வரை. அந்த நம்மை தடுக்க நடக்கிறது இரும தேடல் போன்ற ஏதாவது செய்து. பைனரி தேடல் பேசுகையில், பைனரி தேடல் நேரியல் தேடல் விட வேகமாக இருக்கிறது. அப்படி கூறினார் எனவே, ஒரு சாத்தியமான விஷயம் நீங்கள் பைனரி செய்ய முடியாது என்று ஆகிறது இணைக்கப்பட்ட பட்டியல்கள் தேட, நீங்கள் மட்டும் வரிசைகள் அதை செய்ய முடியும். ஆனால் ஒருவேளை இன்னும் முக்கியமாக, நீங்கள் இரும தேடல் செய்ய முடியாது சரியாகவில்லை என்று ஒரு வரிசை மீது. அப்பிரண்ட் நீங்கள் வரிசைப்படுத்த வேண்டும் வரிசை, மற்றும் மட்டும் பின் முடியும் நீங்கள் பைனரி தேடல் செய்ய. உங்கள் விஷயம் இல்லை என்றால் தொடங்கும் வரிசைப்படுத்தப்பட்ட, பின்னர் நேரியல் தேடல் வேகமாக இருக்கலாம். கேள்வி 27. எனவே கீழே திட்டம் கருத்தில், இது அடுத்த slide இல் இருக்கும். மற்றும் இந்த நாம் இருக்கும்போது அங்கு ஒன்றாகும் வெளிப்படையாக கூற விரும்பவில்லை போகிறது பல்வேறு மாறிகள் மதிப்புகள். எனவே அந்த பார்போம். எனவே ஒன்று வரிசையாக. நாம், int x 1 சமம். அந்த நடந்தது என்று மட்டும் தான். எனவே வரி ஒன்றில், நாம் பார்க்க எங்கள் அட்டவணை, y ஆனது, ஒரு, ஆ, மற்றும் tmp அனைத்து உள்ளது இருண்டுவிட்டது. எனவே x என்ன? சரி நாம் தான் அது 1 சமமாக அமைக்க. பின்னர், நன்றாக, இரண்டு வரிசையாக நாம், y, 2 அமைக்கப்படுகிறது என்று பார்க்கிறோம் மற்றும் அட்டவணை ஏற்கனவே உள்ளது எங்களுக்கு நிரப்பி. எனவே x 1 மற்றும் y, 2. இப்போது, வரி மூன்று, நாம் இப்போது இருக்கிறோம் இடமாற்று செயல்பாடு உள்ளே. என்ன நாம் மாற்ற கடந்து? நாம் ஐந்து உம்மைக்குறி x நிறைவேற்றினோம் ஆ ஒரு, மற்றும் ampersand y. எங்கே பிரச்சினை முந்தைய என்று குறிப்பிட்டார் x முகவரி 0x10 உள்ளது, மற்றும் y முகவரி 0x14 உள்ளது. எனவே ஒரு மற்றும் ப சமமாக இருந்தால் முறையே 0x10 மற்றும் 0x14,. இப்போது வரி மூன்று மணிக்கு, x மற்றும் y என்ன? சரி, எதுவும் மாறவில்லை இந்த கட்டத்தில் x மற்றும் y பற்றி. கூட அவர்கள் தான் என்றாலும் ஒரு முக்கிய ஸ்டாக் சட்டத்தில் உள்ளே, அவர்கள் இன்னும் அதே வேண்டும் மதிப்புகள் முன்னர் செய்தது. நாம் எந்த நினைவக திருத்தப்பட்டது. எனவே x 1, y, 2. அனைத்து சரியான. எனவே இப்போது நாம் ஒரு நட்சத்திரம் சமமாக எண்ணாக tmp கூறினார். எனவே வரி நான்கு, எல்லாம் tmp தவிர அதே உள்ளது. நாம் எந்த மாறவில்லை tmp தவிர எதையும். நாம் ஒரு நட்சத்திரமாக சம tmp அமைக்க. நட்சத்திர ஒரு என்ன? சரி, ஒரு புள்ளிகள் x க்கு, எனவே ஒரு நட்சத்திரம் 1 இது சமமாக x, போகிறது. எனவே எல்லாம் நகல் கீழே, மற்றும் tmp 1 அமைக்க. இப்போது அடுத்த வரியில். ஸ்டார் ஒரு நட்சத்திர ஆ சமம். எனவே வரி மூலம் five-- நன்கு மீண்டும், எல்லாம் நட்சத்திர ஒரு என்ன தவிர அதே உள்ளது. நட்சத்திர ஒரு என்ன? சரி, நாம் நட்சத்திர ஒரு x ஆகும் கூறினோம். எனவே நாம் சம நட்சத்திர ஆ செய்ய x மாறும். நட்சத்திர ஆ என்ன? y. y க்கு ப புள்ளிகள். எனவே நட்சத்திர ஆ y ஆகும். எனவே நாம், y க்கு x சமமாக அமைக்க மற்றும் எல்லாமே ஒன்றுதான். X இப்போது அதனால் தான் நாம் அடுத்த வரிசையில் பார்க்கிறோம் 2, மற்றும் மீதமுள்ள வெறும் கீழே நகல். இப்போது அடுத்த வரியில், நட்சத்திர ப tmp சமம். சரி, நாம் நட்சத்திர ஆ y ஆகும் கூறினோம், எனவே நாம் tmp, y சமமாக அமைக்க. எல்லாவற்றையும் தான் ஆகிறது எல்லாம் கீழே நகல். நாம் இது, tmp க்கு y சமமாக அமைக்க வேறு ஒன்று, மற்றும் எல்லாம் ஒரே மாதிரி இருக்கிறது. இப்போது இறுதியாக, வரி ஏழு. நாம் மீண்டும் முக்கிய செயல்பாடு இருக்கும். இடமாற்று முடித்த பிறகு நாம் இருக்கிறோம். நாம் ஒரு, ஆ இழந்தது, மற்றும் tmp, ஆனால் நாம் இறுதியில் எந்த மதிப்புகள் மாற்றவே இந்த புள்ளி எதுவும், நாம் தான் x மற்றும் y கீழே நகல். மற்றும் நாம் x மற்றும் y என்று பார்க்கிறோம் இப்போது 2 மற்றும் 1 பதிலாக 1 மற்றும் 2. இடமாற்று வெற்றிகரமாக நிறைவேற்றப்பட்ட. கேள்வி 28. நீங்கள் சந்திப்பதில்லை என்று நினைக்கிறேன் பிழை செய்திகளை அலுவலக நேரங்களில் கீழே ஒரு CA அல்லது TF அடுத்த ஆண்டு. இந்த பிழைகள் ஒவ்வொரு சரி என்பதை அறிவுறுத்தும். GetString எனவே வரையறுக்கப்படாத குறிப்பு. ஏன் நீங்கள் இந்த பார்க்க வேண்டும்? சரி, ஒரு மாணவர் பயன்படுத்தி என்றால் தங்கள் குறியீடு உள்ள GetString, அவர்கள் ஒழுங்காக cs50 சேர்க்கப்பட்டுள்ளது டாட் மணி cs50 நூலகம் சேர்க்க. சரி, அவர்கள் என்ன செய்கிறது இந்த பிழை சரி செய்ய வேண்டும்? அவர்கள் ஒரு கோடு lcs50 செய்ய வேண்டும் அவர்கள் ஒடுக்குவதற்கான போது கட்டளை வரி. அவர்கள் கடந்து என்றால் எனவே பிரபோ கோடு lcs50, அவர்கள் இருக்கிறார்கள் உண்மையான வேண்டும் GetString செயல்படுத்தும் குறியீடு. கேள்வி 29. உட்குறிப்பாக அறிவித்தார் நூலகம் செயல்பாடு strlen. சரி இந்த இப்போது, அவர்கள் வேண்டும் சரியான ஹாஷ் செய்யப்படுகிறது அடங்கும். இந்த குறிப்பிட்ட வழக்கில், தலைப்பு கோப்பு அவர்கள், சரம் டாட் மணி உள்ளது சேர்க்க வேண்டும் மற்றும் இப்போது சரம் டாட் மணி, உட்பட இப்போது மாணவர் ஒடுக்கி அனுமதி உள்ளது strlen ஒரு அறிவிப்புக்கள், மற்றும் அது தெரிகிறது உங்கள் குறியீடு என்று சரியாக பயன்படுத்தி. கேள்வி 30. மேலும் சதவீதம் மாற்றங்கள் தரவு வாதங்கள் விட. எனவே இந்த என்ன? சரி இந்த சதவிகிதம் என்பதை நினைவில் அவர்கள் printf தொடர்புடைய இருக்கிறோம் எப்படி signs--. எனவே printf நாம் percent-- வேண்டும் நாம் ஏதாவது அச்சிட வேண்டும் சதவிகிதம் போன்ற நான் n பின்சாய்வுக்கோடாகிறேன். அல்லது நாம், சதவீத நான் போன்ற அச்சிட வேண்டும் விண்வெளி, சதவீத நான், விண்வெளி, சதவீத நான். அந்த ஒவ்வொரு எனவே சதவீதம் அறிகுறிகள், நாம் வேண்டும் வைட்டமின் இறுதியில் ஒரு மாறி அனுப்ப. எனவே நாம் சொன்னால் வைட்டமின் அடைப்புக்குறி சதவீதம் நான், N நெருங்கிய அடைப்புக்குறி பின்சாய்வுக்கோடாகிறேன் நன்றாக, நாம் இருக்கிறோம் என்று சொல்கிறோம் ஒரு முழு அச்சிட போகிறது ஆனால் பின்னர் நாம் printf கடந்து ஒரு முழு உண்மையில் அச்சிட. எனவே இங்கே மேலும் சதவீதம் தரவு வாதங்கள் விட மாற்றங்கள்? இதுதான் நாங்கள் என்று percents ஒரு மொத்தமாக, மற்றும் நாம் போதுமான மாறிகள் வேண்டும் உண்மையில் அந்த percents உள்ள நிரப்ப. பின்னர் நிச்சயமாக, கேள்வி 31, நிச்சயமாக ஒன்று தொகுதிகளில் 40 பைட்டுகள் இழந்தது. எனவே இந்த ஒரு Valgrind பிழை உள்ளது. இந்த என்று எங்காவது உங்கள் குறியீடு, நீங்கள் 40 என்று ஒரு ஒதுக்கீடு வேண்டும் பைட்டுகள் பெரிய எனவே நீங்கள், 40 பைட்டுகள் malloced மற்றும் நீங்கள் அதை ஒருபோதும். நீங்கள் தேவை மிக வாய்ப்பு சில நினைவக கசிவு கண்டுபிடிக்க, மற்றும் நீங்கள் வேண்டும், அங்கு கண்டுபிடிக்க நினைவகம் இந்த தொகுதி விடுவிக்க. மற்றும், 32 கேள்வி அளவு 4 தவறான எழுதும். மீண்டும் இந்த ஒரு Valgrind பிழை உள்ளது. இந்த செய்ய வேண்டும் இப்போது நினைவகம் கசிவை. இதை நான் likely-- மிகவும், அது தான், ஆகிறது தவறான நினைவகம் உரிமைகள் ஒருவித. மற்றும் பெரும்பாலும் இந்த சில இடையக வழிதல் வகையான. எங்கே நீங்கள் ஒருவேளை, ஒரு வரிசை ஒரு முழு எண் வரிசை, மற்றும் நாம் அது அளவு 5 சொல்ல, மற்றும் நீங்கள் வரிசை அடைப்புக்குறி 5 தொட முயற்சி. என்று நீங்கள் எழுத முயற்சி செய்தால் எனவே மதிப்பு, அந்த நினைவகம் ஒரு துண்டு தான் நீங்கள் உண்மையில் அணுக வேண்டும், மற்றும் என்று எனவே நீங்கள் இந்த பிழை போகிறோம், அளவு 4 தவறான எழுதும் கூறி. Valgrind நீங்கள் இருக்கிறோம் அங்கீகரிக்க போகிறீர்கள் முறைகேடாக நினைவகம் தொட முயற்சி. அந்த quiz0 அது தான். நான் ராப் Bowden இருக்கிறேன், மற்றும் இந்த CS50 உள்ளது.