டேவிட் MALAN: சரி, மீண்டும் வரவேற்கும். இந்த CS50 உள்ளது. இந்த வாரம் ஏழு தொடக்கத்தில் உள்ளது. அது ஒரு போது இருந்தது, அதனால் நான் நினைத்தேன் எங்கே நாம் ஒரு வேர்ல்விண்ட் பயணம் எடுக்க விட்ட மற்றும் நாம் இப்போது போகிறோம். இந்த விஷயம் இங்கே வேண்டும் என்று முதல் சில கவலையை ஏற்படுத்தியது. ஆனால் வட்டம், நீங்கள் தொடங்கி இந்த இங்கே குறிக்கும் என்ன acclimate - இது ஒரு சுட்டிக்காட்டி, பிரதிநிதித்துவப்படுத்தும் நட்சத்திரம் மேலும் லேமேன்ஸ் அடிப்படையில் தான் என்ன,? அது ஒரு முகவரி. எனவே அதை முகவரி நினைவகத்தில் ஒன்று. நாம் தலாம் அடுக்குகளை தொடங்கியது வாரங்களுக்கு ஒரு ஜோடி முன்பு, விஷயங்கள் பிடிக்காது GetString மற்றும் பிற போன்ற செயல்பாடுகளை அனைத்து இந்த நேரத்தில் திரும்பி போன்ற நினைவகத்தில் விஷயங்கள் முகவரிகள், முதல் பாத்திரம் முகவரி சில காட்சிகள். எனவே, Valgrind அறிமுகப்படுத்தியது நீங்கள் இந்த பிரச்சினையை பயன்படுத்த தொடங்க வேண்டும் குறிப்பாக அடுத்த, அமைக்க பிரச்சனை அதே அமைந்தது. மற்றும் Valgrind எங்களுக்கு என்ன செய்கிறது? அதை நினைவு கசிவுகள் ஐந்து சரிபார்க்கிறது, மற்றும் நினைவை தவறாக சரிபார்க்கிறது. அது, சில நிகழ்தகவு, கண்டறிய முடியும் உங்கள் குறியீடு நினைவக தொட போகிறது அது வெறுமனே இருக்க கூடாது. எனவே, ஒரு கசிவு அமைய, ஆனால் நீங்கள் சில எல்லைகளை தாண்டி சென்று வரிசை, நீங்கள் உண்மையில் Valgrind ரன் அந்த நடத்தை தூண்ட போது Valgrind உங்கள் திட்டத்தில் இயங்கும் அது உள்ளே ஓடி, நீங்கள் பெறுவீர்கள் இது போன்ற செய்திகளை - "தவறான எழுதுகின்றனர் , ஒரு ஜோடி நினைவு எந்த அளவு 4, " வாரங்களுக்கு முன்பு நான் தற்செயலாக என்று பொருள் வெகு தொலைவில் ஒரு எண்ணாக விரும்பும் ஒரு வரிசைக்கு எல்லைகளை தாண்டி. அதனால் அளவு 4 இங்கே அளவு பொருள் அந்த குறிப்பிட்ட எண்ணாக இருக்கும். எனவே உண்மையில் மன நிம்மதிக்காக எடுக்க Valgrind வெளியீட்டு, அது வடிவமைப்பு, வெறும் கொடிய உள்ளது. இது குழப்பம் மூலம் பார்க்க மிகவும் கடினமாக உள்ளது சுவாரஸ்யமான தகவல். அதனால் என்ன, நாம் இங்கே செய்துவிட்டேன் வெறும் பகுதி உள்ளது இன்னும் இரண்டு சில சுவாரஸ்யமான கோடுகள். ஆனால் உணர என்று Valgrind நாட்டின் 80% வெளியீடு ஒரு பிட் இருக்க போகிறது திசை திருப்ப. நான் இந்த மாதிரி வடிவங்களை பார்த்து - வலது தவறானது, தவறான, 40 பைட்டுகள் வாசிக்க மற்றும் தொகுதிகள் சில பல நிச்சயமாக இருக்கிறது அந்த முக்கிய வார்த்தைகள், இழந்தது. என்ன நீங்கள் வட்டம் காண்பீர்கள் சில ஆகிறது செயல்பட என்ன சுவடு வகையான தவறு உள்ளே உண்மையில் இங்கே இந்த விஷயத்தில், என்ன வரிசையில் என் குறியீடு வெளிப்படையாக பிழை இருந்தது? இது memory.c என்று ஒரு கோப்பு, 26 நாங்கள் விளையாடி கொண்டிருந்தனர் எடுத்துக்காட்டாக அந்த நேரத்தில். அது malloc இல் அநேகமாக இல்லை. அதற்கு பதிலாக என் குறியீடு இருக்கலாம். நாம் மீண்டும் இந்த பார்க்கிறேன் மீண்டும் நீண்ட முன். Scanf எனவே, இந்த ஒரு ஆண்டு வந்தது இதுவரை வடிவங்களில் ஜோடி. நாம் சுருக்கமாக sscanf பார்த்தேன். இது ஏதாவது ஒரு எண் ஆகும் நீங்கள் உங்கள் மீது dived வினாடி வினா ஏற்பாடுகள். மற்றும் scanf உண்மையில் என்ன CS50 நூலகம் அடியில் பயன்படுத்தி பொருட்டு சில நேரம் ஹூட் பயனர் உள்ளீடு பெற. உதாரணமாக, நான் CS50 மீது நகர்த்த வேண்டும் உபயோகப்பொருள் இங்கே, ஒரு என்னை திறந்து விடுங்கள் scanf-0.c என்று அந்த எடுத்துக்காட்டாக இன்று அது சூப்பர் எளிது. அது குறியீடு ஒரு சில வரிகளை தான். ஆனால் அதை நிரூபிக்கிறது உண்மையில் எப்படி getInt இந்த நேரத்தில் அனைத்து உழைக்கும். வரி 16 ல் இந்த திட்டம், இந்த நான் ஒரு முழு எண்ணாக அறிவிக்க வேண்டும் என்று அறிவிப்பு. எனவே எந்த சுட்டிகள், மந்திர எதுவும் அங்கு, தான் ஒரு முழு எண்ணாக. பின்னர் வரி 17 ல், நான் கேட்கும் பல பயனர், தயவு செய்து. பின்னர் தாமதமாக 18 ல், நான் இங்கே scanf பயன்படுத்த. நான் குறிப்பிட்ட, வகையான போன்ற printf பற்றி, நான் என் எதிர்பார்த்து என்று சதவீத நான் மேற்கோள். சதவீத நான், நிச்சயமாக, ஒரு முழு எண்ணாக குறிக்கிறது. ஆனால் கவனிக்க என்ன இரண்டாவது scanf என்று வாதம் உள்ளது. எப்படி இரண்டாவது விவரிக்க வேண்டும் கமா பின்னர் வாதம்? அது என்ன? அது x முகவரி தான். எனவே இந்த காரணம் வழங்குவதன் மூலம் பயனுள்ளதாக இருக்கும் x இன் முகவரி scanf, என்ன செய்கிறது அதை செய்ய அந்த செயல்பாடு அதிகாரம்? வெறுமனே அங்கு போய், ஆனால் என்ன செய்ய? இது ஒரு மாற்றத்தை. நீங்கள் அங்கு போக முடியாது, ஏனெனில், அது மாதிரி தான் நினைவகத்தில் ஒரு இடம் ஒரு வரைபடம் போல. இவ்வளவு காலமாக நீங்கள் வழங்க scanf, அல்லது ஒரு வரைபடத்தை, என்று எந்த செயல்பாடு விழாவில் அங்கு செல்ல முடியும், மற்றும் மட்டும் மதிப்பு இருக்கும், ஆனால் அது முடியாது என்றால் பயனுள்ளதாக இருக்கும் என்று மதிப்பு, மாற்ற scanf வாழ்க்கையின் நோக்கம் ஆகும் குறிப்பாக, பயனர் உள்ளீடு ஸ்கேன் விசைப்பலகை இருந்து. மற்றும் F போல், வடிவமைக்கப்பட்ட குறிக்கிறது printf, F வடிவமைக்கப்பட்ட குறிக்கிறது நீங்கள் அச்சிட வேண்டும் என்று சரம். எனவே குறுகிய, இந்த வரியை 18 வெறுமனே சொல்வது, பயனரின் இருந்து ஒரு முழு எண்ணாக படிக்க முயற்சி விசைப்பலகை மற்றும் மணிக்கு, x இன் உள்ளே சேமிக்க x இல் வாழ என்ன நடந்தாலும் முகவரி. பின்னர் இறுதியாக, வரி 19 தான் என்கிறார், இந்த விஷயத்தில் முழு எண்ணாக நன்றி,. என்னை போய் இந்த செய்யலாம். எனவே scanf 0 செய்ய. என்னை போய் உள்ளே பெரிதாக்கவும் நாம் நான் போய் இந்த இயக்க வேண்டும் புள்ளிகள் scanf 0 குறைக்க. எண், தயவு செய்து? 50. 50 நன்றி. அது மிகவும் எளிது. இப்போது என்ன செய்கிறாய்? இது ஒரு மொத்தமாக செய்து பிழை சோதனை என்ற. உதாரணமாக, நான் ஒத்துழைக்க என்றால், நான் பல தட்டச்சு, ஆனால் அதற்கு பதிலாக நான் "ஹலோ," போன்ற ஏதாவது எழுத அந்த விசித்திரமான வெறும் வகையான தான். விஷயங்களை CS50 மற்றும் அதனால் ஒரு நூலகம் சில நமக்கு செய்து நேரம் என்று reprompting உள்ளது மற்றும் reprompting. மீண்டும் சொற்றொடரை திரும்ப, cs50.c இருந்தது மற்றும் அந்த getInt உள்ள காரணம் CS50 நூலகம் உண்மையில் ஒரு முழு உள்ளது நீண்ட வரிசைகளில் கொத்து, நாங்கள் காரணம் இது போன்ற முட்டாள்தனமான பொருட்களை சோதனை. பயனர் கொடுக்க வில்லை நம்மை, உண்மையில், ஒரு முழு எண்ணாக? அவர் எங்களுக்கு ஏதாவது கொடுத்தனர் அகரவரிசை கடிதம் போன்ற? அப்படியானால், நாம் கண்டறிய வேண்டும் என்று அவர்களை கத்துகிறாய். ஆனால் விஷயங்கள் இன்னும் சுவாரசியமான கிடைக்கும் இந்த அடுத்த எடுத்துக்காட்டாக. நான் scanf-1.c போனால், என்ன ஆகும் அடிப்படையில் மாற்றம் என்று தான் இந்த அடுத்த எடுத்துக்காட்டாக? நான், நிச்சயமாக, எரிப்பதை * பயன்படுத்தி அதற்கு பதிலாக முழு எண்ணாக இருக்கும். ஏனெனில் எரிப்பதை * இந்த, உள்ளது நினைவு, நான் உண்மையில் சரம் அதே விஷயம். அது ஒருவேளை இந்த ஒரு சூப்பர் உணர்கிறது GetString எளிய செயல்படுத்த. ஆனால் நான் அடுக்கு மீண்டும் உரிக்கப்படுவதில்லை CS50 நூலகம், நான் மிகவும் இப்போது இந்த எரிப்பதை * அழைப்பு. எனவே பார்க்கலாம் அங்கு, எங்கும் என்றால், நாங்கள் தவறு. வரி 17 - நான் மீண்டும், தயவு செய்து ஏதாவது கொடுங்கள், என்று இந்த வழக்கில், ஒரு சரம். பின்னர் அடுத்த வரியில், நான், scanf அழைக்கிறேன் மீண்டும், இது ஒரு வடிவம் குறியீடு கொடுத்து, ஆனால் இந்த முறை சதவீதம் கள். பின்னர், இந்த முறை, நான் இது தாங்கல் கொடுத்து. இப்போது நான் பயன்படுத்தி இல்லை, கவனிக்க ampersand. ஆனால் ஏன் இங்கே என்று ஒருவேளை சரி தான்? ஏற்கனவே தாங்கல் என்ன காரணம்? இது ஏற்கனவே சுட்டிக்காட்டி இருக்கிறது. ஏற்கனவே ஒரு முகவரி. மற்றும் நாம் இந்த வார்த்தை என்னை விட ", குழப்ப" தான் வெறும் ஐந்து உதாரணமாக, அதை கள் அழைக்க எளிமை. ஆனால் நான் அதை தாங்குவதற்கு என்று ஏனென்றால் பொது, நிரலாக்க, நீங்கள் ஒரு இருந்தால் நினைவகம் துண்டின், ஒரு சரம் உண்மையில் நான், நீங்கள், ஒரு இடை அழைப்பு. இது தகவல்களை சேமிக்க ஒரு இடம் இருக்கிறது. போது YouTube, போன்ற விஷயங்களை ஒத்த அவர்கள், அதனால் பேச, தாங்கல் என்று அதை இருந்து பிட்டுகள் பதிவிறக்கம் தான் அர்த்தம் இணைய மற்றும் அவற்றை சேமிக்க உள்ளூர் அணி, அதனால் நினைவக ஒரு உள்ளூர் துண்டின் நீங்கள் இல்லாமல் பிறகு பார்க்கலாம் என்று அதை தவிர்க்க அல்லது தொங்கி நீங்கள் மீண்டும் விளையாடும் போது. அதனால் ஒரு பிரச்சனை, எனினும் இங்கே இருக்கிறது நான் scanf சொல்கிறேன் ஏனென்றால், ஒரு எதிர்பார்க்க இவரிடமிருந்து சரம். இங்கு முகவரி நினைவகம் ஒரு துண்டின். அங்கு அந்த சரம் வைக்க. ஏன் என்று பிணைப்பு வழங்க உள்ளது என்றாலும் எங்களுக்கு பிரச்சினை,? என்று என்ன இருக்கிறது? நான் அணுக அனுமதி நினைவகம் என்று பகுதியாக? உங்களுக்கு தெரியும், எனக்கு தெரியாது. தாங்கல் துவக்கப்படும் வருகிறது, ஏனெனில் எதையும் செய்ய? உண்மையில் இல்லை. எனவே அதை நாங்கள் அழைப்பு வந்தது என்ன ஒரு குப்பை மதிப்பு, இது ஒரு சாதாரண வார்த்தை அல்ல. அது என்ன பிட்கள் எதுவும் தெரியாது என்று அர்த்தம் அந்த நான்கு பைட்டுகள் உள்ளே இருக்கும் நான் தாங்கலாக ஒதுக்கீடு. நான் malloc என்று. நான் நிச்சயமாக GetString என்று. எனவே யார் உண்மையில் என்ன தெரிகிறது தாங்கல் உள்ளே? இன்னும் scanf சொல்லி கண்மூடித்தனமாக, அங்கு செல்ல மற்றும் பயனர் தட்டச்சு அதை வைத்து. அதனால் ஏற்படும் வாய்ப்பு உள்ளது எங்கள் குறியீடு நாம் அதை ரன் என்றால்? அநேகமாக ஒரு segfault. ஒருவேளை இல்லை, ஆனால் அநேகமாக ஒரு segfault. நான் சொல்கிறேன் ஒருவேளை ஏனெனில் சில நேரங்களில் நீங்கள் சில நேரங்களில், செய்கிறீர்கள் நீங்கள் ஒரு segfault இல்லை. சில நேரங்களில் நீங்கள் அதிர்ஷ்டசாலி கிடைக்கும், ஆனால் அது கூட இருக்க போகிறது எங்கள் திட்டத்தில் ஒரு பிழை. என்னை போய் இந்த தொகுக்க வேண்டும். நான் பழைய பள்ளி வழி செய்ய போகிறேன். எனவே கணகண வென்ற சப்தம் கோடு 0, scanf-1, scanf-1.c, உள்ளிடவும். அடடா, மிக பழைய பள்ளி. பார்க்கலாம். நான் எங்கே? ஓ, எரிப்பதை * தாங்கல். ஓ, நன்றி - சரி, சேமிக்க - மிகவும் பழைய பள்ளி. சரி, அது ஒரு போது ஆகிவிட்டது. அதனால் நான் கோப்பு பின்னர் சேமித்துள்ள அந்த தற்காலிக செய்யும் ஒரு கணம் முன்பு மாற்ற. இப்போது நான் அதை தொகுக்கப்பட்ட கைமுறையாக கணகண வென்ற சப்தம் கொண்டு. இப்போது நான் முன்னே போக போகிறேன் மற்றும் Enter, scanf-1 ரன். சரம், தயவு செய்து. நான் தட்டச்சு செய்கிறேன் "ஹலோ." இப்போது, இங்கே printf, வெளிப்படையாக, எங்கே ஒரு சிறிய எரிச்சலூட்டும் உள்ளது. இது உண்மையில் போவதில்லை இந்த வழக்கில் segfault. Printf ஒரு சிறிய சிறப்பு ஏனெனில் இது பொதுவாக பயன்படுத்தப்படும் மிகவும் சூப்பர் என்று அடிப்படையில் printf செய்கிறார் எங்களுக்கு ஆதரவாக உணர்ந்து, என்று ஒரு சரியான சுட்டிக்காட்டி இல்லை. என்னை மட்டும் அச்சிட மீது எனக்கு அதை எடுத்துக்கொள்கிறேன் அடைப்புக்குறிக்குள் உள்ள அவுட், கூட அது அவசியம் இல்லை என்றாலும் என்ன நாம் நம்மை எதிர்பார்க்கப்படுகிறது. நாம் உண்மையில் எளிதாக தூண்ட முடியாது இந்த தெளிவாக இந்த segfault, ஆனால் நான் விரும்பிய நடத்தை அல்ல. அதனால் எளிய தீர்வு என்ன? நன்றாக, scanf-2, என்னை முன்மொழிய விரும்புகிறேன் என்று பதிலாக உண்மையில் ஒரு ஒதுக்கீடு எரிப்பதை *, எனக்கு ஒரு சிறிய சிறந்த பற்றி இருக்க வேண்டும் இந்த, என்னை இடையக ஒதுக்க அனுமதி 16 எழுத்துகள் தொடர்ச்சியாக. அதனால் நான் வழிகளில் ஒரு ஜோடி இந்த செய்ய முடியும். நான் முற்றிலும் malloc பயன்படுத்த முடியும். ஆனால் நான் வாரம் இரண்டு திரும்பி செல்ல முடியும் போது நான் ஒரு மொத்தமாக தேவை எழுத்துக்கள். என்று ஒரு வரிசை தான். என்னை பதிலாக தாங்கல் மறுவரையறை நாம் 16 எழுத்துக்களை ஒரு வரிசை இருக்கும். இப்போது, எனக்கு உள்ள இடைப்பட்ட கடந்து - இந்த நாம் ஏதோ இருக்கிறது வாரம் இரண்டு பற்றி பேச - ஆனால் நீங்கள் ஒரு வரிசை என சிகிச்சையளிக்க முடியும் அது ஒரு முகவரி என்று. நாம் பார்த்த தொழில்நுட்ப,, அவர்கள் சற்று வித்தியாசமாக. நீங்கள் அதை கடந்து ஆனால் scanf கவலைப்பட மாட்டேன் ஒரு வரிசைக்கு பெயர், ஏனெனில் என்ன எங்களை அடிப்படையில் உள்ளது கணகண வென்ற சப்தம் செய்யும் அந்த அணியின் பெயரை சிகிச்சை 16 பைட்டுகள் துண்டின் முகவரி. இந்த நல்லது. இந்த இப்போது நான் வட்டம் முடியும் பின்வரும் செய்ய. எனக்கு ஒரு கணம் வெளியே பெரிதாக்கவும் அனுமதியுங்கள் சரி தொகுக்கப்பட்ட scanf-2, செய்ய செய்ய. இப்போது எனக்கு சாய்வு scanf-2 தான் செய்வோம். சரம், தயவு செய்து. "ஹலோ." அது இந்த நேரத்தில் வேலை செய்ய தோன்றியது. ஆனால் யாரோ ஒரு காட்சியில் முன்மொழிய முடியும் அது இன்னும் வேலை என்று? அப்படியா? 16 எழுத்துக்களை விட அதிகமாக ஏதாவது. உண்மையில், நாம் இருக்க முடியும் இன்னும் சிறிது துல்லியமான. நீண்ட பின்னர் 15 எழுத்துக்கள் ஒன்று, உண்மையில் நாம் மனதில் கொள்ள வேண்டும், ஏனெனில் நாம் பின்சாய்வுக்கோடானது பூஜ்யம் வேண்டும் என்று மறைமுகமாக சரம் இறுதியில், இது ஒரு ஒதுக்கி scanf பொதுவாக விருப்பம் எங்களுக்கு பார்த்துக்கொள். என்னை போன்ற ஏதாவது செய்யட்டும் - சில நேரங்களில் நாம் முடியும் என்று அதை விட்டு. சரி, நாம் இப்போது தூண்டப்படுகிறது எங்கள் அடுக்கு தவறு. ஏன்? நான் மேற்பட்ட 15 தட்டச்சு காரணம் பாத்திரங்கள், மற்றும் நாம் உண்மையில் நான் தொட்டால் நினைவக என்று நான் உண்மையில் இல்லை வேண்டும். என்ன உண்மையில் இங்கு தீர்வு? சரி, நாம் ஒரு நீண்ட சரம் தேவை என்ன? சரி, நாம் ஒருவேளை அது 32 பைட்டுகள் செய்ய. சரி, என்ன என்று நீண்ட போதுமானதாக இல்லை என்றால்? எப்படி 64 பைட்டுகள்? என்ன என்று நீண்ட போதுமானதாக இல்லை என்றால்? எப்படி 128 பற்றி அல்லது 200 பைட்டுகள்? என்ன உண்மையில் இங்கு தீர்வு உள்ளது பொது வழக்கில், நாம் தெரியாது என்றால் பயனர் தட்டச்சு செய்ய என்ன நடக்கிறது முன்னெடுத்து? அது, என் பெரிய வலியை மட்டும் வகையான தான் நேர்மையானவர் என்று, இது ஏன் CS50 நூலகம் ஒரு சில டஜன் வரிசைகள் கூட்டாக செயல்படுத்த என்று குறியீடு நாங்கள் இல்லை என்று ஒரு வழியில் சரம் GetString முன்கூட்டியே தெரிந்து கொள்ள வேண்டும் பயனர் தட்டச்சு செய்ய போகிறது. குறிப்பாக, நீங்கள் வந்து பார் cs50.c இரண்டு வாரங்களுக்கு முன்பு இருந்து, நீங்கள் காண்பீர்கள் என்று GetString உண்மையில் செய்கிறது இந்த வழியில் scanf பயன்படுத்த முடியாது. மாறாக, அது ஒரு பாத்திரம் கூறுகிறது ஒரு நேரத்தில். ஏனெனில் பற்றி ஒரு நல்ல விஷயம் ஒரு பாத்திரம் படிக்க நாம் முடியும் எப்போதும் நம்மை உத்தரவாதம் குறைந்தது ஒரு எரிப்பதை வேண்டும். நான் எடுத்து பிறகு ஒரு எரிப்பதை அறிவிக்க முடியும், மற்றும் நான் இந்த உண்மையான குழந்தை படிகள் ஒரு நேரத்தில் ஒரு பாத்திரம் வாசிக்க விசைப்பலகை நேரம். பின்னர், என்ன GetString பார்க்கிறேன் இல்லை, அது வெளியே இயங்கும் ஒவ்வொரு முறையும் உள்ளது , நினைவகம் 16 பைட்டுகள் சொல்ல, அதை பயன்படுத்துகிறது malloc, அல்லது ஒரு உறவினர் அதன் வேண்டும் பழைய நகல், இன்னும் நினைவகத்தை ஒதுக்க பின்னர், புதிய, மற்றும் ஊர்ந்து நினைவகத்தை சேர்த்து, ஒரு நேரத்தில் ஒரு கதாபாத்திரம் வருகிறது மற்றும் அது வெளியே இயங்கும் போது நினைவகம் துண்டின், ஆக்கிரமிப்பு, அதை தூக்கி எறியும் நினைவகம் ஒரு பெரிய துண்டின், பழைய நகலெடுத்தது புதிய, மற்றும் மீண்டும் நுழைய. மற்றும் அது உண்மையில் உண்மையிலேயே ஒரு வலி தான் போன்றவையாக ஏதாவது செயல்படுத்த ஒரு பயனர் உள்ளீடு செய்து. எனவே நீங்கள் scanf பயன்படுத்தலாம். நீங்கள் மற்ற ஒத்த செயல்பாடுகளை பயன்படுத்தலாம். ஒரு பாடப்புத்தகங்கள் நிறைய மற்றும் ஆன்லைன் உதாரணங்கள் செய்ய, ஆனால் அவர்கள் எல்லோரும் இது போன்ற பிரச்சினைகளை பாதிக்கப்படலாம். இறுதியில், ஒரு segfault இது எரிச்சலூட்டும் உள்ளது. இது பயனர் நல்லதல்ல. ஆனால் மோசமான வழக்கில், என்ன செய்கிறது இது அடிப்படையில் உங்கள் வைக்க ஆபத்து குறியீடு? தாக்குதல் சில வகையான, திறன். நாம் ஒரு தாக்குதல் பற்றி பேசினார் - ஸ்டாக் நிரம்பி வழிகிறது. ஆனால் பொதுவாக, நீங்கள் அனுமதி என்றால் வழிதல் ஒரு தாங்கல், போன்ற ஒரு செய்தார் தான் எழுதி கொண்டு முன்பு வாரங்கள் ஜோடி, மேலும் ஸ்டேக் இல் "ஹலோ" விட, நீங்கள் உண்மையில், திறன், மேல் எடுக்க முடியாது கணினி, அல்லது குறைந்தபட்சம் தரவை கிடைக்கும் என்று உனக்கு சொந்தம் இல்லை. நாம் ஏன் குறுகிய, இந்த அந்த பயிற்சி சக்கரங்கள். ஆனால் இப்போது, நாம், அவற்றை எடுக்க தொடங்கும் எங்கள் திட்டங்கள் இனி வேண்டும் என, பயனர் இருந்து அவசியம், உள்ளீடு. ஆனால் பிரச்சனை வழக்கில், ஆறு அமைந்தது உங்கள் உள்ளீடு பெரும் இருந்து வரும் 150 கொண்ட அகராதியை கோப்பு சில ஒற்றைப்படை ஆயிரம் வார்த்தைகள். எனவே நீங்கள் கவலைப்பட வேண்டியதில்லை பயனர் தன்னிச்சையான உள்ளீடு. நாம் சில அனுமானங்களை கொடுப்போம் அந்த கோப்பு பற்றி. சுட்டிகள் அல்லது scanf எந்த கேள்விகள் அல்லது பொதுவாக பயனர் உள்ளீடு? சரி, அதனால் ஒரு நேரத்தில் ஒரு விரைவு இரண்டு வாரங்களுக்கு முன்பு வரை தலைப்பு முன்னிலை. மற்றும் ஒரு struct இந்த கருத்து இருந்தது. இல்லை என்று - ஒரு இந்த கருத்தை என்ன இது, struct? Struct எங்களுக்கு என்ன செய்தீர்கள்? வரையறுக்க - மன்னிக்கவும்? ஒரு மாறி வகை வரையறை. அதனால் அப்படி. நாம் உண்மையில் இரண்டு தலைப்புகள் இணைப்பதன். Typedef அவ்வாறு, நாங்கள் நினைவு ஒரு மாதிரி, எங்கள் சொந்த ஒரு வகை அறிவிக்க எரிப்பதை * வரிசை போன்ற பொருள்,. ஆனால் typedef மற்றும் struct பயன்படுத்தி, நாம் உண்மையிலேயே எங்கள் சொந்த தரவு கட்டமைப்புகள் உருவாக்க. உதாரணத்திற்கு, நான் திரும்பி சென்றால் செய்து gedit கொண்டு இங்கே ஒரு கணம், நான் முன்னே போக ஏதாவது போல் செய்ய, எனக்கு காப்பாற்ற நாம் இந்த நிலையில், structs.c, தான் சொல்கிறேன் தற்காலிகமாக, நான் போகிறேன் போய் சேர்க்க standardio.h, int முக்கிய வெற்றிடத்தை. பின்னர் இங்கே, நான் வேண்டும் என்று நினைக்கிறேன் சேமிக்கிறது என்று ஒரு திட்டத்தை எழுத பல பல மாணவர்கள் வீடுகள், உதாரணமாக. அது ஒரு registrarial போல் சில வகையான தகவல். நான் பெயர் ஒரு மாணவர் வேண்டும் என்றால், நான் , எரிப்பதை * பெயர் போன்ற ஏதாவது செய்ய வேண்டும் மற்றும் நான் போன்ற ஏதாவது செய்ய வேண்டும் - உண்மையில், அது CS50 நூலகத்தை பயன்படுத்த அனுமதிக்க ஒரு கணம் இந்த ஒரு செய்ய கொஞ்சம் எளிமையான, நாம் கடன் வாங்கலாம் குறியீடு வரிகளை அந்த டஜன் கணக்கான. மற்றும் நாம் அதை எளிய வைத்திருக்கிறது. நாம் அது சரம் வைக்கிறேன் இப்போது GetString. அதனால் நான் பெயர் சேமித்த என்று இப்போது கூறுகின்றனர் சில மாணவர், மற்றும் வீட்டின் வெறுமனே மாறிகள் பயன்படுத்தி சில மாணவர், நாங்கள் செய்த வாரம் ஒரு. போன்ற ஆனால் நான் இப்போது ஆதரிக்க வேண்டும் என்று நினைக்கிறேன் பல மாணவர்கள். சரி, என் உணர்வுகளை செய்ய வேண்டும் சரம் NAME2, GetString, சரம் பெறுகிறார் house2 GetString பெறுகிறார். பின்னர் எங்கள் மூன்றாவது மாணவர், NAME3 GetString செய்வோம். சரி, இந்த வட்டம் வேலைநிறுத்தம் உள்ளது முட்டாள் வகையான நீங்கள், இந்த செயல்முறை மிகவும் ஏனெனில் முடிவுக்கு போகிறது, அது தான் நடக்கிறது என் குறியீடு மோசமாக இருக்கும் என்று மற்றும் மோசமாக மற்றும் மோசமான. ஆனால் நாங்கள் வாரத்தில் இரண்டு மிக இந்த தீர்த்தார். எங்கள் ஒப்பீட்டளவில் சுத்தமான தீர்வு என்ன நாம் பல மாறிகள் போது அதே தரவு அனைத்து தொடர்பான வகை, ஆனால் இந்த கோரமான குழப்பம் விரும்பவில்லை இதேபோல் என்ற மாறிகள்? நாம் அதற்கு பதிலாக என்ன செய்தாய்? அதனால் நான் ஒரு சில இடங்களில் கேட்டு நினைக்கிறேன். நாம் ஒரு வரிசை இருந்தது. நீங்கள் பல நிகழ்வுகளை விரும்பினால் ஏதோ, நாம் ஏன் இந்த அனைத்து சுத்தம் இல்லை மேலும் எனக்கு கொடுக்க, சொல்ல வரிசை பெயர்களை என்று? மற்றும் இப்போது, வன் குறியீடு 3 அனுமதிக்க. பின்னர் என்னை மற்றொரு அணி கொடுக்க வீடுகள் என, மற்றும் என்னை விட இப்போது கடுமையாக குறியீடு 3. நான் மிக பெரிய சுத்தம் நான் உருவாக்கிய சண்டை போடுகிறாய். இப்போது, நான் இன்னும் கடினமாக 3 குறியிடப்படும், ஆனால் கூட 3 மாறும் இருந்து வர முடியும் பயனர், அல்லது argv, அல்லது போன்ற. இந்த ஏற்கனவே தெளிவான உள்ளது. ஆனால் என்ன இது பற்றி எரிச்சலூட்டும் என்று ஆகிறது இப்போது, கூட ஒரு பெயரை எப்படியாவது உள்ளது அடிப்படையில் இணைக்கப்பட்ட ஒரு மாணவர் வீட்டில் - அது நான் ஒரு மாணவி பிரதிநிதித்துவம் வேண்டும் - நான் இப்போது இணை என்று இரண்டு வரிசைகள் வேண்டும் அவர்கள் தான் அந்த அர்த்தத்தில் அதே அளவு, மற்றும் பெயர்கள் அடைப்புக்குறி 0 வீடுகள் அடைப்புக்குறி 0 முன்கூட்டிய வரைபடங்கள், மற்றும் பெயர்கள் அடைப்புக்குறி 1 வரைபடங்கள் வீடுகளுக்கு அடைப்புக்குறி 1. மற்ற வார்த்தைகளில், அந்த மாணவர் உயிர்களை அந்த வீட்டில், மற்றும் பிற மாணவர் மற்ற வீட்டில் வாழ்கிறார். ஆனால் நிச்சயமாக இந்த இருக்க முடியும் இன்னும் தெளிவாக செய்து. நல்லது, அது முடியாது, உண்மையில். என்னை போய் திறக்க அனுமதிக்க structs.h வரை, நீங்கள் கொடுப்பீர்கள் இங்கே இந்த யோசனை பார்க்க. நீங்கள், நான் typedef பயன்படுத்தப்படும் என்று கவனிக்க முன்பு அறிவிக்க ஒரு கணம் மறைமுகமாக எங்கள் சொந்த தரவு வகை. ஆனால் நான் இந்த மற்ற முக்கிய பயன்படுத்தி struct என எனக்கு ஒரு புதிய கொடுக்கிறது தரவு கட்டமைப்பு. நான் கூறுவது இந்த தரவு கட்டமைப்பு போகிறது உள்ளே இரண்டு விஷயங்கள் வேண்டும் அது - பெயர் என்று ஒரு சரம், மற்றும் வீட்டில் ஒரு சரம். நான் போகிறேன் பெயர் கொடுக்க இந்த தரவு கட்டமைப்பு போகிறது மாணவர் என்று வேண்டும். நான், அதை நான் விரும்பவில்லை எதையும் அழைக்க முடியும் ஆனால் இந்த சொற்பொருளியல் செய்ய என் மனதில் எனக்கு உணர. எனவே இப்போது, நான் ஒரு நல்ல பதிப்பு திறந்து என்றால் திட்டத்தின் நான் எழுத தொடங்கினார் அங்கு, எனக்கு மேலே உருட்டும் நாம். மற்றும் குறியீடு சில இன்னும் வரிகளை இருக்கிறது இங்கே, ஆனால் என்னை கவனம் செலுத்த அனுமதிக்க ஒரு கணம். நான் ஒரு நிலையான என மாணவர்கள் அறிவித்துள்ளனர் மற்றும் கடின இப்போது 3 குறியிடப்படும். ஆனால் இப்போது, கவனிக்க எப்படி சுத்தமான என் குறியீடு பெற தொடங்குகிறது. வரி 22 ல், நான் அறிவிக்க மாணவர்கள் வரிசை. மாணவர் வெளிப்படையாக என்று கவனிக்க இப்போது ஒரு தரவு வகை. இந்த கோப்பு மேல், கவனிக்க காரணம் நான் அந்த தலைப்பு கோப்பு சேர்க்கப்படவில்லை நான் ஒரு கணம் முன்பு வரை இழுத்து என்று. என்று தலைப்பு கோப்பு மிகவும் எளிதாக இருந்தது ஒரு மாணவர் இந்த வரையறை. எனவே இப்போது, நான் என் சொந்த விருப்ப தரவு உருவாக்கப்பட்டது வகை என்று சி ஆண்டுகள் ஆசிரியர்கள் முன்பு முன்கூட்டியே நினைக்கவில்லை. ஆனால் எந்த பிரச்சனையும் இல்லை. நானே அதை செய்ய முடியும். இந்த, மாணவர்கள் என வரிசை உள்ளது அதன் உறுப்பினர்கள் ஒவ்வொரு ஒரு மாணவர் அமைப்பு உள்ளது. நான் அந்த மூன்று வேண்டும் வரிசையில். இப்போது, மீதமுள்ள என்ன செய்கிறது இந்த திட்டத்தின் செய்ய? நான் ஒரு சிறிய தன்னிச்சையாக ஒன்று தேவை. எனவே ஆன்லைன் 24 முதல் இருந்து, நான் 0 இருந்து 3 செயல்படுத்துதல். நான் பயனர் ask மாணவர் பெயர். பின்னர் நான் முன் GetString. பிறகு நான், மாணவர் வீட்டில் கேட்க நான் முன்பு போல் GetString பயன்படுத்த. ஆனால் அறிவிப்பு - சிறிதளவு, புதிய தொடரியல் துண்டு - நான், நான் வது மாணவர் இன்னும் குறியீட்டு முடியும் ஆனால் நான் குறிப்பிட்ட தரவை எப்படி கிடைக்கும் struct துறையில் உள்ளே? சரி, வெளிப்படையாக என்ன புதிய தொடரியல் துண்டு? அது டாட் ஆபரேட்டர் இருக்கிறது. நாம் உண்மையில் இந்த பார்த்ததே இல்லை. நீங்கள் நீங்கள் pset ஐந்து அதை பார்த்த படங்கள் கோப்புகள் ஏற்கனவே dived. ஆனால் டாட் இந்த உள்ளே பொருள் struct அல்லது பல துறைகளில், டாட் கொடுக்க பெயர், அல்லது என்னை டாட் வீட்டில் கொடுக்க. Struct உள்ளே போக அர்த்தம் அந்த குறிப்பிட்ட துறைகள் கிடைக்கும். இந்த திட்டத்தின் எஞ்சிய என்ன செய்கிறது? அது அந்த கவர்ச்சியாக இல்லை. நான் மீண்டும் 0 இருந்து 3 செயல்படுத்துதல் என்று கவனிக்க, நான் வெறுமனே ஒரு ஆங்கில உருவாக்க எனவே, அதனால் போன்ற சொற்றொடர் போன்ற மற்றும் உள்ளது முதல் டாட் பெயரில் கடந்து ஒரு வீட்டில், நான் வது மாணவர் மற்றும் அவர்களது வீட்டில் அதே. பின்னர் இறுதியாக, இப்போது நாம் பெற ஆரம்பிக்க வேண்டும் நாங்கள் இப்போது இந்த குத, என்ன malloc மற்றும் தெரிந்திருந்தால் மற்ற செயல்பாடுகளை இருந்திருக்கும் அனைத்து இந்த நேரத்தில் செய்து. நான் ஏன் இரண்டு பெயர் விடுவிக்க வேண்டும் மற்றும் வீட்டில், கூட நான் malloc அழைக்கவில்லை? GetString செய்தார். மற்றும் அந்த அழுக்கு சிறிய இரகசிய இருந்தது பல வாரங்கள், ஆனால் GetString உள்ளது அனைத்து மேல் நினைவக கசிவு இதுவரை அனைத்து செமஸ்டர் வைக்கவும். மற்றும் valgrand இறுதியாக சாப்பிடுவேன் எங்களுக்கு இந்த வெளிப்படுத்த. ஏனெனில் எனக்கு தெரியும் ஆனால் இது ஒரு பெரிய விஷயம் இல்லை நான் வெறுமனே பெயர் விடுவிக்க முடியும் என்று மற்றும் வீட்டில், எனினும், தொழில்நுட்ப ரீதியாக செய்ய சூப்பர், சூப்பர் பாதுகாப்பாக இருக்க, நான் இருக்க வேண்டும் சில பிழை செய்து இங்கே சோதனை. உங்கள் உணர்வுகளை நீங்கள் என்ன சொல்கிறீர்கள்? நான் என்ன சோதனை நான் ஒரு என்ன விடுவிக்க முன் சரம், aka ஒரு எரிப்பதை *? நான் உண்மையில் சோதனை மாணவர்கள் என்றால் அடைப்புக்குறி நான் டாட் பெயர் இல்லை சம உள்ள. அது முன்னோக்கி மற்றும் இலவச சென்று சரி வருகிறேன் என்று சுட்டிக்காட்டி, அதே அல்லது வேறு ஒரு அதே. மாணவர்கள் அடைப்புக்குறி நான் டாட் வீட்டில் இருந்தால் வெற்று சமமாக, இந்த இப்போது பாதுகாக்கும் மூலையில் வழக்கு எதிரான இதில் GetString உள்ள போன்ற ஏதாவது கொடுக்கிறது. நாம் printf சாப்பிடுவேன், ஒரு கணம் முன்பு பார்த்தோம் நான் சொல்லி இங்கே நம்மை பாதுகாக்க பூஜ்ஜிய, இது வித்தியாசமாக இருக்கும் போகிறது. ஆனால் அதை குறைந்த பட்சம், segfault நாம் ஏற்கனவே பார்த்தோம். சரி, எனக்கு இங்கே ஒரு மற்ற காரியம் செய்யலாம். structs-0 ஒரு முட்டாள் திட்டத்தின் வகையான நான் இந்த தரவு உள்ளிட்டு, ஏனெனில் திட்டம் முடிவடையும் முறை தோற்றது. ஆனால் எனக்கு மேலே சென்று இந்த செய்யட்டும். என்னை முனைய செய்யலாம் ஒரு பிட் பெரிய சாளரத்தை. என்னை structs-1 செய்ய அனுமதிக்கும் இந்த புதிய பதிப்பு. நான் கொஞ்சம் பெரிதாக்க முடியும். இப்போது எனக்கு டாட் இயக்க அனுமதிக்க structs-1 குறைக்க. மாணவர் பெயர் - டேவிட் மாதர், ராப் கிர்க்லேண்ட் செய்வோம் லாரன் Leverett செய்வோம். என்ன சுவாரசியமான விஷயம் இப்போது அறிவிப்பு ஆகும் - நான் மட்டும் இந்த காரணம் தெரியும் நான் நிரல் எழுதியது - ஒரு கோப்பை என் நடப்பு இப்போது இல்லை அடைவு students.csv என்று. நீங்கள் சில பார்த்திருக்கிறேன் நிஜ உலகில் இந்த. CSV கோப்பு என்ன? கமாவால் பிரிக்கப்பட்ட. அது ஒரு ஏழை மனிதனின் போன்ற வகையான தான் Excel கோப்பாக பதிப்பு. இது வரிசைகள் மற்றும் அணி வரிசைகளை ஒரு அட்டவணையை என்று நீங்கள், எக்சல் போன்ற ஒரு திட்டம் திறக்க முடியும் ஒரு மேக் அல்லது எண்கள். நான் செய்து gedit இங்கே இந்த கோப்பு திறந்து விட்டால், அறிவிப்பு - மற்றும் எண்கள் இல்லை. என்று மட்டும் சொல்லி gedit என்னை வரி எண்கள். இந்த முதல் வரியில் கவனிக்க கோப்பு டேவிட் மற்றும் மாதர் உள்ளது. அடுத்த வரி ராப் மேற்கோள் கிர்க்லேண்ட் உள்ளது. மூன்றாவது வரி லாரன் உள்ளது கமா Leverett. அதனால் நான் என்ன செய்தது? நான் இப்போது ஒரு சி நிரல் எழுதப்பட்ட என்று திறம்பட விரிதாள்களில் உருவாக்க முடியும் ஒரு திறக்கப்பட்டது என்று எக்செல் போன்ற திட்டம். அனைத்து என்று நிர்ப்பந்திக்கும் ஒரு தரவு தொகுப்பு, ஆனால் நீங்கள் எவ்வளவு பெரிய துகள்களாக இருந்தால் நீங்கள் உண்மையில் வேண்டும் என்று தரவு கையாள மற்றும் வரைபடங்கள் மற்றும் செய்ய இப்படி, இந்த ஒருவேளை ஒன்று தரவு உருவாக்க வழி. மேலும், CSVs பொதுவான உண்மையில் சூப்பர் உள்ளன வெறும் எளிய தரவு சேமிப்பதற்காக - Yahoo நிதி, உதாரணமாக, நீங்கள் கிடைத்தால் தங்கள் என்று அழைக்கப்படும் வழியாக பங்கு மேற்கோள்களை ஏபிஐ, நீங்கள் முடியும் என்று இலவச சேவை தற்போதைய வரை தேதி பங்கு கிடைக்கும் நிறுவனங்கள் மேற்கோள், அவர்கள் மீண்டும் தரவு கொடுக்க சூப்பர் எளிமையான CSV வடிவத்தில். நாம் எப்படி அதை செய்தாய்? சரி, இந்த திட்டத்தின் மிக கவனிக்க கிட்டத்தட்ட அதே. ஆனால் இங்கு கவனிக்க காட்டிலும், அச்சு வரி 35 ம் தேதி மாணவர்கள் அவுட், முதல், நான் சேமிப்பு இருக்கிறது என்று கூறுகின்றனர் வட்டில் மாணவர்கள், ஒரு கோப்பு சேமிப்பு. அதனால் நான் ஒரு கோப்பை * அறிவித்தார் நான் கவனிக்க - இப்போது, இந்த சி ஒரு ஒழுங்கின்மை வகையான உள்ளது எந்த காரணத்திற்காகவும், கோப்பு, அனைத்து தொப்பிகளை உள்ளது இது மிகவும் மற்ற தரவு வகைகள் போன்ற அல்ல சி ஆனால் இது ஒரு உள்ளமைக்கப்பட்ட தரவு வகை, கோப்பு *. நான், ஒரு கோப்பு ஒரு சுட்டிக்காட்டி பிரகடனம் நீங்கள் யோசிக்க முடியும் என்று. fopen திறந்த கோப்பு பொருள். நீங்கள் என்ன கோப்பு விரும்புகிறீர்கள்? நான் ஒரு கோப்பை திறக்க வேண்டும் நான் என்று தன்னிச்சையாக students.csv அழைக்க. நான் விரும்பும் எதையும் அழைக்க முடியும். பிறகு ஒரு யூகம் வேண்டும். இரண்டாவது வாதம் என்ன செய்கிறது fopen அநேகமாக அர்த்தம் என்ன? வலது, எழுதும் W, could வாசிக்க ஐந்து R இருக்கும். ஒரு சேர் அங்கு தான் நீங்கள் வரிசைகள் மற்றும் சேர்க்க வேண்டும் முழு விஷயம் மேலெழுதும். ஆனால் நான் இந்த கோப்பை உருவாக்க வேண்டும் ஒருமுறை, நான் மேற்கோள் மேற்கோள் W பயன்படுத்த வேண்டும். நான் படிக்கும் நிலையில் இருந்து மட்டுமே தெரியும் ஆவணங்கள், அல்லது மனிதன் பக்கம். கோப்பு உள்ள இருந்தால் - மற்ற வார்த்தைகளில், ஒன்றும் தவறு என்றால் - என்னை செயல்படுத்துதல் நாம் 0 3 மாணவர்கள். இப்போது ஏதோ அறிவிப்பு எப்போதும் மிகவும் சற்று வேறுபட்ட இங்கு சுமார் வரி 41. அதை printf இல்லை. இது printf கோப்பு fprintf இருக்கிறது. அதை தாக்கல் செய்ய எழுத நடக்கிறது. இது கோப்பு? அதன் சுட்டி நீங்கள் குறிப்பிடும் ஒரு முதலில் வாதம் இருந்தது. நாம் ஒரு வடிவம் சரம் குறிப்பிடவும். பிறகு நாம் என்ன வேண்டும் சரம் குறிப்பிட முதல் சதவீதம் கள் உள்ள ப்ளக், மற்றும் பின்னர் மற்றொரு மாறி அல்லது இரண்டாவது சதவீதம் கள். நாம் fclose கோப்பில் மூடவும். நான் கூட, முன் நினைவக விட நான் திரும்பி சென்று சேர்க்க வேண்டும் வெற்று காசோலைகள். அவ்வளவு தான். fopen, fprintf, fclose எனக்கு கொடுக்கிறது உரை கோப்புகளை உருவாக்க திறனை. இப்போது, நீங்கள், சிக்கல் தொகுப்பு ஐந்து பார்க்கிறேன் படங்களை உள்ளடக்கிய, நீங்கள் பயன்படுத்தி பைனரி கோப்புகள் பதிலாக. ஆனால் அடிப்படையில், யோசனை, அதே தான் கூட உங்களுக்கு செயல்பாடுகளை சிறிது வேறுபட்ட பார்க்கலாம். வேர்ல்விண்ட் பயணம் ஆகவே, ஆனால் நீங்கள் கிடைக்கும் கோப்பு அனைத்து மிகவும் பழக்கமான I/O-- உள்ளீடு மற்றும் வெளியீடு - pset ஐந்து இருந்தது. மற்றும் பற்றி எந்த கேள்விகள் இங்கு ஆரம்ப அடிப்படைகளை? அப்படியா? என்ன ஒரு பூஜ்ய மதிப்பு விடுவிக்க முயற்சி செய்வது? இலவச ஒரு நிலைக்கு சென்றிருக்கிறது வரை நான் நம்புகிறேன் இன்னும் கொஞ்சம் பயனர் நட்பு, நீங்கள் சாத்தியமுள்ள segfault. நான் இல்லை, ஏனெனில் அது null கடந்து மோசமாக உள்ளது இலவச நம்புகிறேன், நீங்கள் சரிபார்க்க பாதிக்கிறது இது முக்கியமான ஒரு வீணாகிவிடும் என்பதால் அது தன்னை செய்ய நேரம் உலகில் எல்லோரும். நல்ல கேள்வி, என்றாலும். சரி, இந்த வகையான பெறுகிறார் மிகவும் எங்களுக்கு ஒரு சுவாரஸ்யமான தலைப்பு. சிக்கல் தொகுப்பு தீம் ஐந்து ஆய்வுத்துறை ஆகும். குறைந்தபட்சம் ஒரு பகுதி தான் சிக்கல் தொகுப்பு. ஆய்வுத்துறை பொதுவாக குறிக்கிறது மே அல்லது தகவல் மீட்பு நீக்கப்பட்டன வேண்டுமென்றே. அதனால் நான் உங்களுக்கு ஒரு விரைவான கொடுக்க நினைத்தேன் என்ன சுவை உண்மையில் அனைத்து நடக்கிறது கீழே இந்த நேரம் உங்கள் கணினியின் பேட்டை. உதாரணமாக, நீங்கள் உள்ளே இருந்தால் உங்கள் மடிக்கணினி அல்லது உங்கள் டெஸ்க்டாப் கணினி வன், அது ஒரு எந்திர தான் உண்மையில் சுழல்கிறது என்று சாதனம் - platters என்று வட்ட விஷயங்கள் உள்ளன மிகவும் இப்படி நான் தான் என்றாலும், இங்கு திரையில் வரை இருந்தது இந்த பெருகிய முறையில் பழைய பள்ளி உள்ளது. இந்த மூன்று மற்றும் ஒரு அரை அங்குல உள்ளது வன். மூன்று மற்றும் ஒரு அரை அங்குல குறிக்கிறது நீங்கள் அதை நிறுவ போது தான் கொண்டு ஒரு கணினி. இப்போது உங்கள் மடிக்கணினிகளில் நீங்கள் பல தோழர்களே , திட நிலை இயக்கிகள், அல்லது SSDs வேண்டும் இது நகரும் பாகங்கள் இல்லை. அவர்கள் ரேம் போல் குறைந்த மாதிரி இந்த இயந்திர சாதனங்கள். ஆனால் கருத்துக்கள், இன்னமும் அதே தான் நிச்சயமாக அவர்கள் தொடர்புடையன பிரச்சனை ஐந்து அமைக்க. நீங்கள் ஒரு வன் இப்போது யோசிக்க வேண்டும் இது ஒரு வட்டம், என்று குறிக்கிறது நான் இங்கே இப்படி வரைய வேண்டும். நீங்கள், உங்கள் கணினியில் ஒரு கோப்பை உருவாக்க போது அது ஒரு SSD தான், அல்லது இல்லையா இந்த விஷயத்தில், பழைய பள்ளி வன், அந்த கோப்பு பல பிட்கள் உள்ளன. அது இந்த 0 மற்றும் 1 என்று சொல்கிறேன், 0 க்கள் மற்றும் 1 களை கொண்ட ஒரு மொத்தமாக. இந்த என் முழு வன் உள்ளது. இந்த வெளிப்படையாக ஒரு அழகான பெரிய கோப்பு. அது அந்த நேரத்தில் 0 வி மற்றும் 1 களை பயன்படுத்தி உடல் தட்டை பகுதியை. அந்த உடல் பகுதியை என்ன? நல்லது, அது, ஒரு வன் என்று மாறிவிடும் இந்த வகை குறைந்தது, அங்கு இந்த சின்னஞ் சிறிய காந்த துகள்கள். அவர்கள் முக்கியமாக வடக்கு மற்றும் அவர்களுக்கு தென் துருவங்களை, அதனால் நீங்கள் அந்த காந்த துகள்கள் ஒரு முறை இந்த வழியில், நீங்கள் தான் சொல்ல வேண்டும் ஒரு 1 குறிக்கும். அது தலைகீழாக தெற்கு இருந்தால் வடக்கு, நீங்கள் தான் சொல்ல வேண்டும் ஒரு 0 குறிக்கும். எனவே, உண்மையான இயற்பியல் உலகில், என்று நீங்கள் ஏதாவது பிரதிநிதித்துவம் எப்படி பைனரி 0 மாநில மற்றும் 1. அதனால் ஒரு கோப்பு தான். காந்த ஒரு மொத்தமாக இருக்கிறது அவர்கள் இந்த வழியில் அல்லது துகள்கள் இந்த வழியில், உருவாக்கும் முறைகள் ஒரு 0 க்கள் மற்றும் 1 வி. ஆனால் அதை நீங்கள் ஒரு கோப்பை சேமிக்கும் போது மாறிவிடும் சில தகவல்களை தனித்தனியாக சேமிக்கப்படும். இந்த ஒரு சிறிய அட்டவணை உள்ளது ஒரு அடைவு, அதனால் பேச. நான் இந்த கட்டுரையில் பெயர் அழைக்க, மற்றும் நான் நான் இந்த கட்டுரையில் இடம் அழைக்கிறேன். நான் நினைக்கிறேன், சொல்ல போகிறேன் இந்த என் விண்ணப்பத்தை உள்ளது. என் resume.doc சேமிக்கப்படுகிறது இடம், 123 கூறலாம். நான் எப்போதும் அந்த எண்ணிக்கை போக. ஆனால் சும்மா சொல்ல அதை போதுமானதாக RAM இல், ஒரு வன் எடுக்க முடியும் ஒரு ஜிகாபைட் அல்லது 200 ஜிகாபைட் தான் அல்லது ஒரு டெராபைட்டுகளுக்கும், மற்றும் நீங்கள் எண் பைட்டுகள் அனைத்து. நீங்கள் 8 பிட்கள் அனைத்து துகள்களாக எண் முடியாது. எனவே நாம் இந்த சொல்கிறேன் இடம் 123 ஆகும். என் இயக்க இந்த அடைவில் உள்ளே கணினி நினைவு என் விண்ணப்பத்தை இடம் 123 உள்ளது. ஆனால் அது போது சுவாரசியமாக இருக்கும் நீங்கள் ஒரு கோப்பை நீக்க. உதாரணமாக மிக - மற்றும் அதிர்ஷ்டவசமாக, உலகின் மிக கொண்டிருக்கிறது இந்த மீது பிடித்து - என்ன நடக்கிறது உங்கள் மேக் OS குப்பை ஒரு கோப்பை இழுத்து அல்லது உங்கள் விண்டோஸ் சுழற்சி தொட்டி? அந்த செய்து நோக்கம் என்ன? இது, கோப்பு பெற வெளிப்படையாக இருக்கிறது ஆனால் என்ன இழுத்து செயல் செய்கிறது மற்றும் உங்கள் குப்பை அல்லது ஒரு குறைகிறது உங்கள் சுழற்சி தொட்டி ஒரு கணினியில் செய்ய? உண்மையில் முற்றிலும் எதுவும்,. இது ஒரு போல்டரை போல. அதை உறுதி செய்ய, ஒரு சிறப்பு அடைவை இருக்கிறது. ஆனால் இது உண்மையில் கோப்பை நீக்க? இல்லை, நன்றாக, ஏனெனில் ஒருவேளை நீங்கள் சில போன்ற இருந்திருக்கும், மட்டமான ஓ, நீங்கள் இல்லை அதை செய்ய வேண்டும் என்று. எனவே நீங்கள் இரட்டை கிளிக் செய்யவும் குப்பையை அல்லது சுழற்சி தொட்டி. நீங்கள் சுற்றி கதையை நீங்கள் குணமானதற்கு அதை இழுப்பதன் மூலம் கோப்பு அங்கு வெளியே. எனவே தெளிவாக, அது அவசியம் இல்லை அதை நீக்கிவிட்டு. சரி, நீங்கள் சிறந்த விட இருக்கிறோம். உங்களுக்கு தெரியும் என்று நான் இழுக்க குப்பையை அல்லது சுழற்சி தொட்டி அர்த்தம் இல்லை நீங்கள் குப்பையை காலியாக்கி. எனவே நீங்கள் மெனு சென்று, நீங்கள் என்ன சொல்ல காலியாக குப்பை அல்லது வெற்று சுழற்சி தொட்டி. பிறகு என்ன நடக்கும்? ஆமாம், அது மிகவும் நீக்கப்படும். ஆனால் என்ன நடக்கிறது என்று இந்த உள்ளது. கணினி அங்கு மறந்துவிடுகிறது resume.doc இருந்தது. ஆனால் என்ன வெளிப்படையாகவே மாறவில்லை படத்தில்? துணுக்குகள், நான் கூறுவது என்று 0 க்கள் மற்றும் 1 வி உள்ளன சில உடல் அம்சம் தளத்தில் வன்பொருள். அவர்கள் இன்னும் இருக்கிறார்கள். அது கணினி உள்ளது தான் மறந்து என்ன அவர்கள். அது அடிப்படையில் விடுதலை கோப்பின் அவர்கள் பயன்படுத்தும் பிட்கள் என்று. ஆனால் நீங்கள், மேலும் கோப்புகளை உருவாக்க வரை மேலும் கோப்புகள், மற்றும் கோப்புகளை சாப்பிடுவேன் சாத்தியக்கூறு, அந்த 0 க்கள் மற்றும் 1 வி, அந்த காந்த துகள்கள், பயன்படுத்தும் செய்து, ஐந்து தலைகீழாக அல்லது வலது பக்க வரை, மற்ற கோப்புகள், 0 க்கள் மற்றும் 1 வி. எனவே நேரம் இந்த சாளரத்தை வேண்டும். அதை கணிக்க பற்றிய இல்லை நீளம், உண்மையில். உங்கள் கடின அளவை பொருத்து டிரைவ் மற்றும் பல கோப்புகளை நீங்கள் மற்றும் எவ்வளவு சீக்கிரம் நீங்கள் புதிய செய்யும். ஆனால் நேரம் இந்த சாளரத்தை போது அங்கு அந்த கோப்பு செய்தபின் இன்னும் இது திரும்ப. நீங்கள் எப்போதும் McAfee போன்ற திட்டங்களை பயன்படுத்தி இருந்தால் அல்லது நார்டன் மீட்க முயற்சி தரவு, அவர்கள் செய்கிறீர்கள் அனைத்து முயற்சி இந்த பெயரளவிலான அடைவு மீட்க உங்கள் கோப்பு அங்கு கண்டுபிடிக்க. மற்றும் சில நேரங்களில் நார்டன் மற்றும், கூறும், கோப்பு 93% மீட்டெடுக்க முடியாது. சரி, என்ன அர்த்தம்? தான் அர்த்தம் என்று வேறு சில கோப்பு தற்செயலாக, சொல்ல, பயன்படுத்தி முடிந்தது உங்கள் அசல் கோப்பு வெளியே அந்த பிட்கள். எனவே உண்மையில் என்ன தொடர்பு தரவு மீட்டெடுப்பதில்? சரி, நீங்கள் இப்படி ஏதாவது இல்லை என்றால் நார்டன், உங்கள் கணினியில் முன் நிறுவப்பட்ட நீங்கள் சில நேரங்களில் செய்ய முடியும் அழகாக உள்ளது முழு வன் தேடும் மணிக்கு பிட்கள் வடிவங்கள். பிரச்சினை தொகுப்பு கருப்பொருள்கள் ஒரு ஐந்து நீங்கள் தேட வேண்டும் ஒரு வன் சமமான, ஒரு தடயவியல் ஒரு ஒரு சிறிய ஃபிளாஷ் அட்டை படம் 0 வி தேடி டிஜிட்டல் கேமரா, உயர் என்று பொதுவாக மற்றும் 1 வி, நிகழ்தகவு, பிரதிநிதித்துவம் ஒரு படம் தொடங்குவதில். மற்றும் நீங்கள் அந்த படங்களை மீட்க முடியும் நான் இந்த முறை பார்த்தால், அனுமானித்து தடயவியல் படத்தை துணுக்குகள், உடன் குறிக்கிறது என்று உயர் நிகழ்தகவு, ஒரு JPEG தொடக்கத்தில். நான் மீண்டும் அதே பாணி பார்த்தால், என்று ஒருவேளை தொடக்கத்தில் குறிக்கிறது மற்றொரு JPEG, மற்றொரு JPEG, மற்றொரு JPEG. இந்த பொதுவாக எப்படி உள்ளது தரவு மீட்பு செய்யும். என்ன JPEG படங்கள் பற்றி நன்றாக கூட ஆகிறது கோப்பு வடிவம் தன்னை ஓரளவு உள்ளது ஒவ்வொரு போன்ற சிக்கலான, ஆரம்பத்தில் கோப்பு உண்மையில் மிகவும் அடையாளம் காணக்கூடிய , நீங்கள் பார்ப்பீர்கள் என, எளிய நீங்கள் ஏற்கனவே வரவில்லை என்றால். எனவே அடியில் ஒரு நெருக்கமான பார்க்கலாம் இருந்தது சரியாக என்ன என்று ஹூட் நடந்து, இந்த 0 க்கள் மற்றும் 1 வி என்ன நீங்கள் ஒரு ஒரு பிட் இன்னும் கொடுக்க உள்ளன இந்த குறிப்பிட்ட சவால் சூழலை. [மறுஒளிபரப்பு வீடியோ] உங்கள் கணினி மிகவும் சேமித்து-எங்கே அதன் நிரந்தர தரவு. அதை செய்ய, தரவு ரேம் இருந்து பயணம் சொல்ல மென்பொருள் சிக்னல்களை சேர்ந்து எப்படி என்று தரவு சேமிக்க வன். வன் சுற்றுகள் மொழிபெயர்க்க மின்னழுத்த கொண்டு அந்த சமிக்ஞைகளை ஏற்ற இறக்கங்கள். இந்த, முறை, வன் கட்டுப்பாடு நகரும் பாகங்கள், சில சில விட்டு நகரும் பாகங்கள் நவீன கணினி. சமிக்ஞைகளை சில மோட்டார் கட்டுப்படுத்த இது உலோக பூச்சு platters சுழல்கிறது. உங்கள் தரவு சேமிக்கப்படும் இந்த platters இல். பிற சமிக்ஞைகள் படிக்க / எழுத நகர்த்த வாசிக்க அல்லது தலைகள் platters தரவு எழுத. இந்த இயந்திரங்கள் மிகவும் துல்லியமான ஒரு மனித என்று முடி கூட இடையே அனுப்ப முடியவில்லை தலைகள் மற்றும் நூற்பு platters. இன்னும், அது பயங்கர வேகத்தில் செயல்படுகிறது. [END மறுஒளிபரப்பு வீடியோ] டேவிட் MALAN: ஒரு சிறிய பெரிதாக்கு ஆழமான இப்போது தான் என்ன உண்மையில் அந்த platters இல். [மறுஒளிபரப்பு வீடியோ] பார்-நாம் என்ன நாம் மணிக்கு மெதுவாக இயக்க பார்த்தேன். மின்சாரம் ஒரு சுருக்கமான துடிப்பு இருக்கும் போது திருப்பங்கள என்றால், எழுத / படிக்க தலை அனுப்பப்படும் ஒரு சிறிய மின்காந்த மீது இரண்டாவது ஒரு பகுதியை. காந்தம் ஒரு துறையில், உருவாக்குகிறது மாற்றங்களை ஒரு சிறிய, சிறிய முனைகளை உலோக துகள்கள் பகுதி இது கோட் ஒவ்வொரு தட்டை மேற்பரப்பு. இந்த சிறிய ஒரு முறை தொடர், வட்டில் விதிக்கப்படும் அப் பகுதிகளில் ஒரு பிட் பிரதிபலிக்கிறது இரும எண் தரவு கணினிகள் பயன்படுத்தப்படும் கணினி. இப்போது, தற்போதைய அனுப்பி இருந்தால் ஒரு வழி வாசிக்க வழியாக /, பகுதி தலைவர் எழுத ஒரு திசையில் தளவிளைவுக்குட்படுத்தப்படும் உள்ளது. நடப்பு ஆண்டில் அனுப்பப்படும் என்று எதிர் திசையில், முனைவாக்கம் தலைகீழாய் நடக்கிறது. நீங்கள் வன் இனிய தரவு எப்படி? வெறும் செயல்முறையை தலைகீழாக. எனவே இது வட்டில் துகள்கள் தான் என்று தற்போதைய கிடைக்கும் தலை நகரும் எழுத / படிக்க. இந்த மில்லியன் கணக்கான ஒன்றாக magnetized பிரிவுகள், மற்றும் நீங்கள் ஒரு கோப்பு கிடைத்துவிட்டது. இப்போது, ஒரு ஒற்றை கோப்பு துண்டுகள் இருக்கலாம் அனைத்து இயக்க மீது சிதறிவிடும் குழப்பம் போன்ற வகையான platters, உங்கள் மேஜையில் ஆவணங்கள். எனவே ஒரு சிறப்பு கூடுதல் கோப்பு கண்காணிக்கும் எல்லாம் எங்கே என்று. நீங்கள் கூறியிருபேன் இல்லை அப்படி ஏதாவது? [முடி மறுஒளிபரப்பு வீடியோ] டேவிட் MALAN: சரி, அநேகமாக இல்லை. எப்படி நீங்கள் பல தோழர்களே இந்த வளர்ந்தேன்? சரி, அது குறைவான மற்றும் குறைவான தான் கைகளில் ஒவ்வொரு ஆண்டும். ஆனால் நான் நீங்கள் குறைந்தது தெரிந்திருந்தால் நீங்கள் மகிழ்ச்சி அவர்களிடம், இது எங்கள் சொந்த புத்தகம் டெமோ, துரதிர்ஷ்டவசமாக, ஒரு இறக்கும் பரிச்சயம் இங்கு மரணம் மெதுவாக. ஆனால் இந்த குறைந்த பட்சம், மீண்டும், நான் தான் உயர்நிலை பள்ளி, காப்பு பயன்படுத்தப்படுகிறது பயன்பாடு. அது ஆச்சரியமாக இருந்தது, ஏனெனில் நீங்கள் 1.4 மெகா பைட் சேமிக்க முடியும் இந்த குறிப்பிட்ட வட்டு. இந்த, உயர் அடர்த்தி பதிப்பாகும் என இது எச்டி, சுட்டிக்காட்டப்படுகின்றது இன்றைய HD வீடியோக்களை முன் பொருள். ஸ்டாண்டர்ட் அடர்த்தி 800 கிலோபைட்ஸ் இருந்தது. அந்த முன், அங்கு 400 kilobyte வட்டுகள். அந்த முன், 5 மற்றும் 1/4 இருந்தன உண்மையிலேயே நெகிழ் இருந்த அங்குல வட்டுகள்,, மற்றும் ஒரு சிறிய பரந்த மற்றும் உயரமான இங்கே இந்த விஷயங்களை விட. ஆனால் நீங்கள் உண்மையில் அழைக்கப்படும் பார்க்க முடியும் இந்த வட்டுகள் நெகிழ் அம்சம். மற்றும் செயல்படவில்லை, அவர்கள் உண்மையில் நீங்கள் மணிக்கு ஒரு வன்வட்டுகளுடன் அழகான ஒத்த குறைந்தபட்சம் இந்த வகை. புதிய கணினிகளில் மீண்டும், SSDs வித்தியாசமாக ஒரு சிறிய வேலை. ஆனால் நீங்கள் அந்த சிறிய உலோக நகர்த்து என்றால், நீங்கள் உண்மையில், ஒரு சிறிய குக்கீ பார்க்க முடியும் அல்லது தட்டை. இது போன்ற உலோக இல்லை. இந்த ஒரு உண்மையில் சில மலிவான தான் பொருள் பிளாஸ்டிக். நீங்கள் வேகமாக அசைந்து செல் அதை வகையான முடியும். நீங்கள் trully சில துடைத்துவிட்டேன் பிட்கள் அல்லது காந்த துகள்கள் எண்ணிக்கை இந்த வட்டு இருந்து. அதனால் அதிர்ஷ்டவசமாக, அது ஒன்றுமில்லை. அந்த விஷயம் வழியில் இருந்தால் - மற்றும் மறைப்பதற்கு உங்கள் கண்கள், உங்கள் அண்டை அந்த - வெறும் வகையான இந்த இழுக்க நீங்கள் முடியும் அந்த முழு உறை விட்டு. ஆனால் ஒரு சிறிய வசந்த இருக்கிறது, எனவே இருக்கும் உங்கள் கண்கள் என்று தெரியும். எனவே இப்போது நீங்கள் உண்மையிலேயே ஒரு நெகிழ் வட்டு உள்ளது. என்ன இது பற்றி குறிப்பிடத்தக்க தான் இது என்று எவ்வளவு தான் ஒரு ஒரு பெரிய சிறிய அளவிலான பிரதிநிதித்துவம் வன், இந்த விஷயங்களை, சூப்பர் உள்ளன சூப்பர் எளிமையான. இப்போது, அதை கீழே சிட்டிகை என்று அந்த உலோக விஷயத்தை, மற்றும் தலாம் அவற்றை திறக்க, அங்கு அனைத்து இரண்டு துண்டுகளாக உள்ளது உணர்ந்தேன் மற்றும் அழைக்கப்படும் நெகிழ் வட்டு உள்ளே உலோக ஒரு துண்டு கொண்டு. மற்றும் பாதி அங்கு செல்கிறது என் வட்டு உள்ளடக்கங்களை. அவர்கள் மற்றொரு அரை அங்கு செல்கிறது. ஆனால் அந்த உள்ளே மிதக்க என்று தான் முன்னாள் உங்கள் கணினியில். மீண்டும், முன்னோக்கு இந்த வைக்க எப்படி பெரிய உங்கள் பெரும்பாலான கடின இந்த நாட்களில் வீச்சு? 500 ஜிகாபைட், ஒரு டெராபைட்டுகளுக்கும், ஒருவேளை ல் ஒரு மேசை கணினி, 2 டெர்ராபைட்கள், 3 டெர்ராபைட்கள், 4 டெர்ராபைட்கள், சரியான? இந்த ஒரு மெகாபைட் என்று, கொடுக்க அல்லது எடுத்து கூட ஒரு பொதுவான எம்பி 3 பொருந்தும் முடியாது இனி இந்த நாட்களில், அல்லது சில இதே போன்ற இசை கோப்பு. எனவே ஒரு சிறிய உங்களுக்கு நினைவு பரிசு இன்று, மற்றும் மேலும் என்ன contextualize உதவி நாம் வழங்கப்பட்டது எடுத்து இப்போது பிரச்சனை ஐந்து அமைந்தது. எனவே அந்த வைத்திருக்க உன்னுடையது. எனவே இருக்கும் என்னை மாற்றம் செய்யலாம் அடுத்த pset செலவு அதே. நாம் இப்போது இந்த பக்கத்தில் அமைக்க - ஓ, விரைவில் அறிவிப்புகள் ஒரு ஜோடி. இந்த வெள்ளிக்கிழமை, நீங்கள் விரும்பினால் CS50 சேர மதிய, வழக்கமான இடத்திற்கு செல்ல cs50.net/rsvp. இறுதி திட்டம் - எனவே பாடத்திட்டங்கள் படி, நாம் posted ஏற்கனவே இறுதி திட்டம் விவரக்குறிப்பு. என்று அர்த்தம் இல்லை என்று இது குறிப்பாக விரைவில் காரணமாக இருக்கிறது. அது பெற, உண்மையில், posted நீங்கள் அதை பற்றி நினைத்து. உண்மையில், ஒரு சூப்பர் குறிப்பிடத்தக்க நீங்கள் சதவீதம் தாக்க பொருள் மீதான இறுதி திட்டங்கள் என்று நாம் கூட வர்க்கம் வேண்டும் போகவில்லையா, ஆனால் ஆரம்பத்தில் அடுத்த வாரம் என சாப்பிடுவேன். அறிவிப்பு, எனினும், ஸ்பெக் அழைப்பு என்று ஒரு சில வேறுபட்ட கூறுகளை இறுதி திட்டம். முதல், ஒரு சில வாரங்களில், ஒரு முன் திட்டம், ஒரு அழகான சாதாரண மின்னஞ்சல் உங்கள் அவரை சொல்ல TF அல்லது என்ன நீ உடன், உங்கள் திட்டம் பற்றி நினைத்து எந்த அர்ப்பணிப்பு. திட்டத்தை குறிப்பிட்ட இருக்கும் அர்ப்பணிப்பு, என்று, இங்கே, இந்த என்ன நான் என் வேலையை செய்ய விரும்புகிறேன். நீங்கள் என்ன நினைக்கிறீர்கள்? மிக பெரிய? மிக சிறிய? அதை சமாளிக்க என்ன? நீங்கள் மேலும் விவரங்களுக்கு, ஸ்பெக் பார்க்க. வார ஜோடி என்று பின்னர் நிலை ஒரு இதேபோல் இது அறிக்கை, எப்படி என்று உங்கள் TF சாதாரண மின்னஞ்சல் உங்கள் இறுதி உள்ளன தூரம் பின்னால் தொடர்ந்து திட்ட அமலாக்கம், CS50 Hackathon இது எல்லோருக்கும் அழைப்பு என்பது, ஒரு நிகழ்வு இருக்கும் இது 7:00 வரை ஒரு மாலை 8:00 மணி அடுத்த நாள் காலை நான். நான் வாரம் குறிப்பிடப்பட்டுள்ளது இருக்கலாம் என பீஸ்ஸா, பூஜ்யம், WIL, இரவு 9:00 மணிக்கு வழங்கப்படுகிறது 1:00 மணிக்கு சீன உணவு AM. நீங்கள் 5:00 இன்னும் விழித்து என்றால் AM, நாங்கள் காலை IHOP அழைத்து போகிறேன். எனவே Hackathon மேலும் ஒன்றாகும் வர்க்கம் மறக்கமுடியாத அனுபவங்கள். பின்னர் செயல்படுத்த காரணமாக, மற்றும் பின்னர் களமாகவும் CS50 சிகப்பு. இந்த அனைத்து பற்றிய மேலும் விவரங்களுக்கு வாரங்களில் வர. ஆனால் ஏதாவது திரும்பி செல்லலாம் பழைய பள்ளி - மீண்டும், ஒரு வரிசை. அது தீர்க்கிறது ஏனெனில் அதனால் ஒரு வரிசை, நன்றாக இருந்தது நாம் போன்ற பிரச்சினைகள் ஒரு பார்த்தேன் மாணவர் கட்டமைப்புகள் முன்பு கணம் கட்டுப்பாடு ஒரு சிறிய அவுட் செய்து நாம் மாணவர் ஒருவர், மாணவர், இரண்டு, வேண்டும் மாணவர் மூன்று, மாணவர் டாட் டாட் டாட், மாணவர்கள் சில தன்னிச்சையான எண். வரிசைகள் எனவே, ஒரு சில வாரங்களுக்கு முன்பு, ஒரு பேசின மற்றும் தீர்க்கப்பட எங்கள் பிரச்சினைகள் இல்லை அனைத்து முன்கூட்டியே தெரிந்து எத்தனை விஷயங்கள் சில வகை நாம் விரும்பலாம். நாம் structs உதவ முடியும் என்று நான் பார்த்திருக்கிறேன் மேலும் நம் குறியீடு ஏற்பாடு வைத்து ஒரு போன்ற கருத்தியல் ரீதியாக ஒத்த மாறிகள், பெயர் மற்றும் ஒரு வீட்டில், ஒன்றாக, அதனால் நாங்கள் உள்ளே ஒரு நிறுவனம், அவற்றை சிகிச்சையளிக்க முடியும் இது சிறிய துண்டுகள் உள்ளன. ஆனால் வரிசைகள் சில குறைபாடுகளும் உள்ளன. குறைபாடுகளும் சில யாவை நாம் சந்தித்தோம் வரிசைகள் கொண்ட இதுவரை? என்று என்ன இருக்கிறது? நிலையான அளவு - அதனால் நீங்கள் போகலாம் என்று ஒரு நினைவகம் ஒதுக்க முடியும் வரிசை முறை உங்களுக்கு தெரியும் எத்தனை மாணவர்கள் நீங்கள் எப்படி பல கதாபாத்திரங்கள், வேண்டும் பயனர் இருந்து, ஒரு முறை நீங்கள் ஒதுக்கீடு வரிசை, நீங்கள் வகையான வரையப்பட்டிருந்தது ஒரு மூலையில் உன்னையே. புதிய கூறுகளை நுழைக்க முடியாது ஒரு வரிசைக்கு நடுவில். நீங்கள் இன்னும் கூறுகளை நுழைக்க முடியாது வரிசை முடிவில். உண்மையில், ஒரு உருவாக்கும் நாட வேண்டும் நாம் விவாதித்த போல முழு புதிய வரிசை,, புதிய பழைய நகல். மீண்டும், அந்த தலைவலி என்று நீங்கள் கையாள்கிறது GetString. ஆனால் மீண்டும், நீங்கள் கூட நுழைக்க முடியாது வரிசை நடுவில் ஏதாவது விகிதம் முற்றிலும் பூர்த்தி செய்யவும். உதாரணமாக, இந்த வரிசை என்றால் இங்கே அளவு ஆறு மட்டுமே, அதை ஐந்து விஷயங்கள் உள்ளன நன்றாக, நீங்கள் பிசுப்பு முடியும் இறுதியில் மீது ஏதாவது. ஆனால் நீங்கள் ஏதாவது நுழைக்க என்ன விரும்பினால் மத்தியில் மீண்டும் வரிசை, அது கூட இது ஆறு விஷயங்கள் ஐந்து அவுட்? சரி, நாம் அனைத்து போது என்ன செய்தாய் எங்கள் மனித தொண்டர்கள் மேடையில் உள்ள வாரங்கள் கடந்த? நாங்கள் இங்கே யாராவது வைக்க விரும்பினால், அல்லது இந்த நகர்த்த எப்படி இந்த மக்கள் வழியில், அல்லது இந்த நகர்த்த எப்படி இந்த மக்கள் வழியில், அந்த செலவு ஆனது. ஒரு உள்ளே மக்கள் மாற்றுவதால் வரிசை சேர்த்து மற்றும் செலவு முடிந்தது நமக்கு நேரம், எனவே எங்கள் n ஸ்கொயர் என்ற ஐந்து, செருகும் வரிசையாக்கம் போன்ற முறை இயங்கும் உதாரணமாக, மிக மோசமான நிலையில். எனவே அணிகளை பெரிய உள்ளன, ஆனால் நீங்கள் வேண்டும் நீங்கள் இன்னும் வேண்டும், எப்படி பெரிய முன்கூட்டியே தெரியும். அதனால் சரி, இங்கே ஒரு தீர்வு. நான் முன்கூட்டியே தெரியாது என்றால் எப்படி பல மாணவர்கள் நான் வேண்டும், மற்றும் நான் ஒருமுறை தெரியும் நான் முடிவு, எனினும், நான் மாட்டி ஏன் நான் எப்போதும் பல மாணவர்கள் செய்ய இரு மடங்கு அதிகமாக இட ஒதுக்கீடு நான் நினைக்கலாம் நான் வேண்டும்? ஒரு நியாயமான தீர்வு அல்ல? தத்ரூபமாக, நான், நாம் என்று நான் நினைக்கவில்லை 50 க்கும் மேற்பட்ட இடங்கள் தேவை போகிறது ஒரு நடுத்தர அளவு வர்க்கம் ஒரு வரிசையில், எனவே எழுந்து சுற்றி பார்க்க. நான், என் வரிசை 100 இடங்கள் செய்கிறேன் அதனால் நாம் நிச்சயமாக பெற முடியும் நான் எதிர்பார்க்க மாணவர்கள் எண்ணிக்கை சில நடுத்தர அளவு வர்க்கம் இருக்கும். ஏன் எழுந்து சுற்று மற்றும் ஒதுக்க முடியாது வரிசை அதிக நினைவகம், பொதுவாக, நீங்கள் கூட வேண்டும் என்று விட? இந்த எளிய pushback என்ன என்று யோசனை? நீங்கள் நினைவகம் வீணாக்குகிறாய். நீங்கள் எழுத அதாவது ஒவ்வொரு நிரல் ஒருவேளை இரண்டு மடங்கு அதிகமாக நினைவகம் பயன்படுத்தி நீங்கள் உண்மையில் வேண்டும். மற்றும் ஒரு போல் இல்லை என்று குறிப்பாக நேர்த்தியான தீர்வு. மேலும், அது குறைக்கிறது ஒரு பிரச்சனை நிகழ்தகவு. நீங்கள் ஒரு பிரபல நிச்சயமாக இல்லை நேர்ந்தால் ஒரு செமஸ்டர் மற்றும் 101 வேண்டும் மாணவர்கள், உங்கள் திட்டம் உள்ளது அடிப்படையில் அதே பிரச்சினை எதிர்கொள்ளும். அதனால் அதிர்ஷ்டவசமாக, ஒரு தீர்வு இருக்கிறது வடிவத்தில் இந்த விளம்பரத்தை அனைத்து எங்கள் பிரச்சினைகளை என்று தரவு கட்டமைப்புகள் ஒன்றை விட மிகவும் சிக்கலான நாம் இதுவரை பார்த்த. இந்த, நான் கூறுவது, ஒரு இணைக்கப்பட்ட பட்டியலில் உள்ளது. இந்த எண்களின் பட்டியல் - 9, 17, 22, 26, மற்றும் 34 - மூலம் ஒன்றாக இணைக்கப்பட்ட என்று என்ன நான் அம்புகள் வரைய. வேறுவிதமாக கூறினால், நான் பிரதிநிதித்துவம் வேண்டும் ஒரு வரிசை, நான் செய்ய இந்த மாதிரி ஏதாவது. நான் மேல்நிலை இந்த வைக்கிறேன் ஒரு நொடியில். நான் செய்ய முடியும் - ஹலோ, அனைத்து உரிமை. நிற்க. இங்கு புதிய கணினி, தெளிவான - சரி. நான் வரிசையில் இந்த எண்கள் இருந்தால் - 9, 17, 22, 26, 24 - அளவிட அவசியமில்லை. சரி, இங்கு என் வரிசை உள்ளது - கடவுளே. சரி, இங்கு என் வரிசை உள்ளது. கடவுளே. [சிரிப்பு] டேவிட் MALAN: பாசாங்கு செய்கின்றனர். அது போக நிறைய முயற்சி அதனால் அங்கு, என்று சரி - 26. எனவே நாம் இந்த வரிசைக்கு வேண்டும் 9, 17, 22, 26, மற்றும் 34. நீங்கள் அந்த பார்க்க முடியும் இடம் இக்கட்டான தவறு நான் செய்த, அங்கு அது. அதனால் நான் இந்த என்று கூறுவது ஒரு மிகவும் திறமையான தீர்வு. நான் பல ints ஒதுக்கப்படுகிறது நான் வேண்டும் - ஒன்று, இரண்டு, மூன்று, நான்கு, ஐந்து, அல்லது ஆறு - மற்றும் நான் எண்கள் சேமித்த இந்த வரிசைக்கு உள்ளே. ஆனால் ஒருவேளை, பிறகு, நான் நுழைக்க வேண்டும் எண் 8 போன்ற ஒரு மதிப்பு? நல்லது, அது எங்கே போய் கொண்டிருக்கிறது? நான் நுழைக்க வேண்டும் என்று நினைக்கிறேன் 20 போன்ற ஒரு எண். நல்லது, அது எங்கே போய் கொண்டிருக்கிறது? எங்கோ இருக்கும் நடுத்தர, அல்லது எண் 35 போக வேண்டும் எங்காவது இறுதியில். ஆனால் நான் எல்லா இடத்தையும் வெளியே இருக்கிறேன். எனவே இந்த அடிப்படை சவால் தீர்வு இருக்கிறது என்று வரிசைகளின். நான் GetString, ஒரு கணம் முன்பு கூறியது இந்த சிக்கலை தீர்க்கிறது. நீங்கள் ஒரு ஆறாவது எண் செருக விரும்பினால் இந்த வரிசை மீது, குறைந்தது ஒரு என்ன தீர்வு நீங்கள், நிச்சயம் மீது திரும்ப முடியும், நாங்கள் GetString செய்ய போன்ற? என்று என்ன இருக்கிறது? நல்லது, அது பெரிய செய்கிறது எளிதாக செய்து விட வேண்டும். நாம் அவசியம் வரிசை செய்ய முடியாது பெரிய, ஆனால் நாம் என்ன செய்ய முடியும்? அளவு பெரியது என்று ஒரு புதிய அணியை உருவாக்க, 6, அல்லது ஒருவேளை அளவு 10, நாம் விரும்பினால் மேலே விஷயங்கள் கிடைக்கும், பின்னர் நகலெடுக்க பழைய, புதிய ஒரு வரிசை, பின்னர் பழைய வரிசை விடுவிக்க. ஆனால் இயங்கும் நேரம் என்ன இப்போது அந்த செயல்பாட்டின்? இது, n, பெரிய ஓ ஏனென்றால் நகலெடுத்து நீங்கள் சில பிரிவுகள் செலவாகும் போகிறது நாம் வேண்டும் நேரம், இவ்வளவு சிறந்த என்றால் என்ன இது ஒரு புதிய வரிசை, ஒதுக்க இரு மடங்கு அதிகமாக சாப்பிட தற்காலிகமாக நினைவகம். புதிய பழைய காப்பி - அதாவது, இது ஒரு தலைவலி, தான் இது , மீண்டும், நாம் ஏன் எழுதினார் நீங்கள் GetString. நாம் அதற்கு பதிலாக என்ன செய்ய வேண்டும்? சரி, என்ன என்றால் எங்கள் தரவு கட்டமைப்பு உண்மையில் அது உள்ள இடைவெளிகளை கொண்டுள்ளது? நான் கொண்ட என் குறிக்கோள் ஓய்வெடுக்க என்று நினைக்கிறேன் நினைவகம் தொடர்ச்சியாய் துண்டுகளாக்கி, அங்கு 9 இது, 17, பக்கத்தில் தான் வலது 22 அடுத்து, மற்றும் பல. மற்றும் 9 இங்கே இருக்க முடியும் என்று நினைக்கிறேன் ரேம், மற்றும் 17, RAM இல் இங்கு மற்றும் 22 RAM இல் இங்கு. வேறுவிதமாக கூறினால், நான் அவர்களை தேவையில்லை கூட இனி மீண்டும் மீண்டும். நான் எப்படியோ ஒரு ஊசி நூல் வேண்டும் இந்த எண்களை ஒவ்வொரு, அல்லது ஒவ்வொரு மூலம் இந்த முனையங்களின், நாம் அழைக்கிறேன் நான் அவர்களை வரையப்பட்ட போல செவ்வகங்களை, வேண்டும் கடந்த பெற எப்படி நினைவில் முதல் போன்ற முனை. எனவே நிரலாக்க கட்ட என்ன நாங்கள் மிகவும் சமீபத்தில் பார்த்த எந்த நான் அந்த நூல் செயல்படுத்த, அல்லது , இங்கே வரையப்பட்ட நான் முடியும் அந்த அம்புகள் செயல்படுத்த? எனவே சுட்டிகள், சரியான? நான் ஒரு வெறும் ஒதுக்க வேண்டும் int, ஆனால் ஒரு முனை - மற்றும் கணு, நான் கொள்கலன் அர்த்தம். மற்றும் காட்சி, ஒரு செவ்வக அர்த்தம். ஒரு முனை வெளிப்படையாக தேவை இரண்டு மதிப்புகள் கொண்டிருக்க - int தன்னை, பின்னர், என மூலம் மறைமுகமாக செவ்வக கீழே பாதி, ஒரு முழு எண்ணாக தேவையான இடம். அதனால் தான், இங்கே மேலே நினைத்து இந்த முனை இந்த, எப்படி பெரிய கேள்வி கொள்கலன்? Int எத்தனை பைட்டுகள்? முன்கூட்டிய 4, அது இருந்தால், வழக்கம் போல் அதே. பின்னர் எத்தனை பைட்டுகள் சுட்டிக்காட்டி இல்லையா? 4. இந்த கொள்கலன், அல்லது இந்த முனை, இல்லை 8 பைட் கட்டமைப்பு இருக்க போகிறது. ஓ, அந்த ஒரு மகிழ்ச்சியான தற்செயல் என்று நாம் இந்த கருத்தை அறிமுகப்படுத்தப்பட்டது ஒரு struct, அல்லது ஒரு சி அமைப்பு. அதனால் நான் ஒரு முடிவை எடுக்க வேண்டும் என்று கூறுகின்றனர் மேலும் அதிநவீன நோக்கி எண்களின் பட்டியல், ஒரு செயல்படுத்துவது எண்கள் இணைக்கப்பட்ட பட்டியலில், நான் ஒரு செய்ய வேண்டும் இன்னும் கொஞ்சம் முன்னால் வரை சிந்தனை மற்றும் தான் ஒரு முழு எண்ணாக, ஆனால் ஒரு struct அறிவிக்க நான் அழைக்கிறேன் என்று, வழக்கமாக இங்கே, முனை. நாம் அதை நாம் விரும்பும் எதையும் அழைக்க, ஆனால் முடியவில்லை கணு நிறைய கருப்பொருளாக இருக்க போகிறது விஷயங்களை நாம் இப்போது பார்க்க ஆரம்பித்தால். அந்த முனை உள்ளே ஒரு முழு எண்ணாக N உள்ளது. பின்னர் இந்த தொடரியல், ஒரு சிறிய முதல் பார்வையில் வித்தியாசமாக - struct முனை * அடுத்த. நன்கு pictorially, அது என்ன? என்று கீழே பாதி உள்ளது நாங்கள் பார்த்தோம் என்று செவ்வக ஒரு நிமிடம் முன்பு. ஆனால் நான் ஏன் * struct முனை சொல்கிறேன் போலவே முனை * எதிர்க்கிறது? என்று சுட்டிக்காட்டி சுட்டிக்காட்டும் ஏனென்றால், மற்றொரு முனை நேரத்தில், இது தான் ஒரு முனை ஒரு முகவரி. நமக்கு என்ன இசைவானதாக என்று இதுவரை சுட்டிகள் பற்றி விவாதித்தனர். எனக்கு கூறுகின்றனர் என்றால், ஏன் இந்த கட்டமைப்பானது முனை என்று, நான் struct சொல்ல வேண்டும் இங்கே உள்ளே முனை? சரியாக. அதை சி ஒரு முட்டாள் உண்மையில் வகை இருக்கிறது typedef, அதனால் பேச, உள்ளது இதுவரை நடந்தது. சி நேரடி சூப்பர். இது உங்கள் குறியீடு மேலே கூறுகிறது கீழே, இடமிருந்து வலமாக. மற்றும் வரை அந்த அரைக்காற்புள்ளி பலி கீழே வரி, இல்லை என்ன நினைக்கிறேன் ஒரு தரவு வகையை உள்ளன? கணு, அதை மேற்கோள் முனை. ஆனால், ஏனெனில் மேலும் verbose பற்றி அறிவிப்பு முதல் வரியில் செய்தார் - typedef struct முனை - அந்த முன், முதல் வந்தது, ஏனெனில் சுருள் பிரேஸ்களான, போன்ற வகையான தான் முந்தைய கல்வி கணகண வென்ற சப்தம் என்று, நீங்கள் என்ன தெரியுமா, எனக்கு ஒரு struct கொடுக்க struct முனை என அழைக்கப்படும். உண்மையில், நான் அழைப்பு விஷயங்கள் பிடிக்காது struct முனை, struct முனை அனைத்து என் குறியீடு முழுவதும். ஆனால் நான் மட்டுமே, உள்ளே, ஒரு முறை அதை பயன்படுத்த வேண்டும் அதனால் நான் திறம்பட செய்ய முடியும் , வட்ட குறிப்பு ஒரு வகையான உருவாக்க ஒரு சே ஒன்றுக்கு நானே சுட்டிக்காட்டி, ஆனால் ஒரு மற்றொரு வகையில் சுட்டிக்காட்டி ஒரு தனித்த வகை. அது மாறிவிடும் என்று ஒரு தரவு கட்டமைப்பு இது போன்ற ஒரு சில இருக்கிறது இருக்கலாம் என்று நடவடிக்கைகளுக்கு எங்களை வட்டி இல்லை. நாம் சேர்க்க வேண்டும் இது போன்ற ஒரு பட்டியலில். நாங்கள் நீக்க வேண்டும் இந்த பட்டியலில் இருந்து. நாம் ஒரு பட்டியலை தேட வேண்டும் மதிப்பு, அல்லது பொதுவாக, பயணிக்கின்றன. மற்றும் பயணிக்கின்றன ஒரு ஆடம்பரமான வழி இடது தொடக்கத்தில் என்று அனைத்து நகர்த்த வலது வழி. இது கூட சற்று கூடிய அறிவிப்பு, அதிநவீன தரவு அமைப்பு, நாம் என்னை நாம் சில கடன் பெறலாம் என்று முன்மொழிய கடந்த இரண்டு வாரங்களுக்கு கருத்துக்கள் மற்றும் என்று ஒரு செயல்பாடு அமல்படுத்த இந்த தேடல். அது அல்லது உண்மையான திரும்ப நடக்கிறது , தவறான குறிப்பிடவும், ஆம் அல்லது இல்லை, N பட்டியலில் உள்ளது. அதன் இரண்டாவது வாதம் ஒரு சுட்டிக்காட்டி உள்ளது பட்டியல் தன்னை, ஒரு ஒரு முனை என்று சுட்டிக்காட்டி. நான் செய்ய போகிறேன் அனைத்து அறிவிக்க உள்ளது ஒரு தற்காலிக மாறி. நாங்கள், மாநாட்டின் மூலம் PTR அழைக்கிறேன் சுட்டிக்காட்டி ஐந்து. நான் அதை சம ஒதுக்க பட்டியலில் தொடங்கி. இப்போது அதே கண்ணி கவனிக்க. எனவே நீண்ட சுட்டிக்காட்டி சமமாக இல்லை என null, நான் பார்க்க போகிறேன். இது சுட்டிக்காட்டி அம்புக்குறி N சமமாக நிறைவேற்றப்பட்டது என்று N? புதிய - ஒரு நிமிடம் தொடரியல் பகுதியை. அம்புக்குறி திடீரென்று என்ன? அப்படியா? சரியாக. எனவே, அதே சமயம் ஒரு சில நிமிடங்கள் முன்பு, நாங்கள் பயன்படுத்தப்படும் ஏதாவது அணுக டாட் ஒரு struct உள்ளே வேறுபட்ட இருந்தால், நீங்கள் struct அல்ல தன்னை, ஆனால் ஒரு struct ஒரு சுட்டிக்காட்டி, அதிர்ஷ்டவசமாக, தொடரியல் ஒரு துண்டு என்று இறுதியாக உள்ளுணர்வு அர்த்தமுள்ளதாக. அம்புக்குறி, சுட்டிக்காட்டி பின்பற்ற வேண்டும் எங்கள் அம்புகள் பொதுவாக பொருள் போன்ற pictorially, மற்றும் போக தரவு துறையில் உள்ளே. எனவே அம்புக்குறி டாட் அதே விஷயம், ஆனால் நீங்கள் ஒரு சுட்டிக்காட்டி போது நீங்கள் அதை பயன்படுத்த. அதனால் தான், பின்னர் (உந்து வண்டியை) மீண்டும் நல்ல நிலைக்கு கொண்டு வா என்றால் N துறையில் struct உள்ளே சுட்டிக்காட்டி என்று சமமாக N சமம், உண்மையான திரும்ப. இல்லையெனில், இங்கே இந்த வரி - சுட்டிக்காட்டி அடுத்த சுட்டிக்காட்டி சமம். இந்த என்ன, அறிவிப்பு, என்று நான் தற்போது struct சுட்டிக்குறிப்பை 9 மற்றும் 9 கொண்ட எண் அல்ல எனக்கு தேடும் - நான் பார்த்து இருக்கிறேன் என்று நினைக்கிறேன் ஐந்து N 50 சமம் - நான் என் தற்காலிக சுட்டிக்காட்டி மேம்படுத்த போகிறேன் இந்த முனை நேரத்தில் சுட்டி இல்லை இனி, ஆனால் சுட்டிக்காட்டி அம்புக்குறி அடுத்த, இது இங்கே எனக்கு போட போகிறது. இப்போது, நான் ஒரு சுழற்காற்று உள்ளது உணர்ந்தேன் அறிமுகம். புதன்கிழமை, நாம் உண்மையில் இந்த செய்கிறேன் சில மனிதர்கள் சில மேலும் ஒரு மெதுவான வேகத்தில் குறியீடு. ஆனால் உணர, நாம் இப்போது நம் தரவு செய்கிறாய் கட்டமைப்புகள் மிகவும் சிக்கலான அதனால் எங்கள் நெறிமுறைகள், திறமையான பெறக்கூடிய தேவையான இருக்க போகிறது pset ஆறு, நாம் மீண்டும், உள்ள ஏற்ற போது, அந்த 150,000 வார்த்தைகள், ஆனால் அவ்வாறு செய்ய வேண்டும் திறமையாக, மற்றும் வெறுமனே ஒரு உருவாக்க நமது பயனர்கள் இல்லை இல் இயங்கும் நிரல் நேரியல் இல்லை ஸ்கொயர் என் இல், ஆனால் சிறந்த நிலையான நேரம். நாம் புதனன்று நீங்கள் காண்பீர்கள். காண்க: அடுத்த CS50, டேவிட் நேரத்தில் தனது அடிப்படை வழக்கு மறந்துவிடுகிறது. டேவிட் MALAN: மேலும் நீங்கள் அனுப்ப எப்படி உரை செய்திகளை சி என்ன - [பல்வேறு உரை செய்தி NOTIFICATION ஒலியை]