[సంగీతాన్ని] డేవిడ్ J. మలన్: ఈ వంటిది ఒక ఫ్రెష్మాన్ సదస్సు నేడు. అలాగే. కాబట్టి బయటకు చాలా వర్షపు. ఈ బుధవారాలలో జరిగే ఉంటుంది, కానీ అన్ని మరింత అవకాశం ప్రశ్నలు కోసం నేడు. కాబట్టి నిజంగా ఆఫ్ ప్రారంభిద్దాం కేవలం ఒక క్షణం సినిమా. కానీ మేము ఎల్లప్పుడూ వంటి ఘనంగా ప్రారంభం చేస్తాము. ఈ CS50, మరియు ఈ వారం 4 ముగింపు. మీరు ఎప్పుడైనా వీక్షించారు చేసిన చేస్తే TV లేదా ఒక సినిమా ఇందులో కొన్ని కంప్యూటర్ నిపుణులు ఉన్నాయి మరియు పోలీసు లేదా FBI, లేదా కొన్ని ఏజెన్సీ కొన్ని పట్టుకోవాలని ప్రయత్నిస్తూ ఉంది విరోధి, బాగా, మీరు చేసిన బహుశా "విస్తరించేందుకు" వ్యక్తీకరణ విన్న అనగా ఆ టెక్నీషియన్ ఏదో అద్భుతంగా అనంతమైన అవుటే చేయవచ్చు నేరస్థులు చూడటానికి చాలా గుర్తింపు లేదా లైసెన్స్ ప్లేట్ సంఖ్య ఒక అద్దం కూడా మెరిసే లో లేదా ఒకరి కంటి ప్రకాశం. కాబట్టి నిజంగా, యొక్క పరిశీలించి తెలియజేయండి హాలీవుడ్ నుండి కొన్ని అటువంటి సన్నివేశాలు. [వీడియో ప్లేబ్యాక్] -OK, ఇప్పుడు మీరు వద్ద ఒక మంచి లుక్ పొందుటకు వీలు. -దాన్ని పట్టుకో. ఆ వెనుక అమలు. ఒక నిమిషం -Wait. కుడి వెళ్ళండి. -ఉన్నాయి, ఆ స్తంభింప. -పూర్తి స్క్రీన్. -OK, ఆ స్తంభింప. మీరు ఆ అప్ -Tighten? ఆ లో -Vector వెనుక చక్రం ద్వారా గై. ఇక్కడ ఈ స్పాట్ లో -Zoom. సరైన పరికరాలు -తో, చిత్రం విస్తరించబడి పదును కాలేదు. ఆ -What వార్తలు? -ఇది ఒక మెరుగుదల కార్యక్రమం. ఆ ఏ స్పష్టం మీరు -Can? -I తెలియదు. యొక్క ఇది విస్తరించేందుకు లెట్. -Enhance విభాగం A6. -I వివరాలు మెరుగైన, and-- నేను ఉందని నేను అనుకుంటున్నాను విస్తరించేందుకు తగినంత, నా స్క్రీన్ దానిని విడుదల. -I ఆమె కంటిలో ప్రతిబింబం విస్తరించింది. -Let ద్వారా ఈ అమలు వీడియో మెరుగుదల. -ఎడ్గార్, మీరు ఈ మెరుగుపరుస్తాయి? పై -Hang. ఈ తెలివితో పని -I've. -Someone యొక్క ప్రతిబింబం. -Reflection. మనిషి యొక్క ముఖం యొక్క ప్రతిబింబం-ఉంది. -ది ప్రతిబింబం. ప్రతిబింబం-ఉంది. అద్దం లో -Zoom. -మీరు ప్రతిబింబం చూడగలరు. మీరు ఇక్కడ నుండి చిత్రం మెరుగుపర్చే -Can? మీరు ఇక్కడే అతనికి విస్తరించేందుకు -Can? మీరు విస్తరించేందుకు -Can? మీరు మెరుగుపరుస్తాయి? మేము ఈ విస్తరించేందుకు -Can? మీరు విస్తరించేందుకు -Can? ఒక క్షణము -Hold, నేను విస్తరించేందుకు చేస్తాము. తలుపు లో -Zoom. 10 -Times. -Zoom. లో -Move. మరిన్ని. -Wait, ఆపడానికి. -Stop. ఇది -Pause. మాకు 75 డిగ్రీల -Rotate నిలువు చుట్టూ, దయచేసి. -Stop. భాగానికి తిరిగి వెళ్ళు మళ్ళీ తలుపు గురించి. బిట్మ్యాప్ ఒక చిత్రం పెంచే -Got? -Hey, బహుశా మేము ప్రదీప్ ఉపయోగించవచ్చు సేన్ పద్ధతి విండోస్ లోకి చూడటానికి. -ఈ సాఫ్ట్వేర్ కళ యొక్క రాష్ట్రం. -ది Eigenvalue ఆఫ్. కుడి -తో అల్గోరిథం యొక్క కలయిక -అతను యొక్క తీసుకున్న తొలగింపు తదుపరి స్థాయికి అల్గోరిథంలు మరియు నేను వాటిని ఉపయోగించవచ్చు ఈ ఛాయాచిత్రం విస్తరించేందుకు. పై -Lock మరియు z అక్షం వచ్చేలా. -Enhance. -Enhance. -Enhance. -Freeze మరియు మెరుగుపరచడానికి. [END ప్లేబ్యాక్] డేవిడ్ J. మలన్: అన్ని కుడి, కాబట్టి ఆ అన్ని నిజానికి పదాలు. వారు కేవలం ఒక కలిసి strung చేస్తున్నారు నిజానికి సరైన కాదు మార్గం. అది వంటి మరియు, నిజానికి, CS50 మరియు కోర్సులు TV మరియు సినిమాలు చాలా నాశనం కావాలనుకుంటాడు నీ కోసం. ఆ కంప్యూటర్ నిపుణులు ఎందుకంటే నిబంధనలు ఆఫ్ rattling మరియు అంటున్నారు వంటి ఫాన్సీ విషయాలు eigenvectors మరియు z అక్షం, మరియు ఇతర ఎన్ని నిజానికి మరింత సాంకేతిక పదాలు, వారు నిజంగా కేవలం వాడు చేస్తున్నారు పదాలు కలిసి అన్ని చాలా తరచుగా. మా ఆశలు ఒకటి అని ఉంది, తీసుకోవడం కోర్సులు దుష్ప్రభావాన్ని ఈ వంటి, రెడీ ఎక్కువ మంది ప్రపంచ నిజానికి బరువు చేయగలరు మరియు కేవలం ఇంత కొద్దిగా ప్రభావితం నాణ్యత మరియు ఆ సినిమాలు యొక్క ఖచ్చితత్వం? నిజానికి, యొక్క రియాలిటీ వద్ద ఒక లుక్ తీసుకుందాం. కాబట్టి ఇక్కడ సిబ్బంది ఫోటో మేరీ, మా టీచింగ్ సహచరులలో ఒక. మరియు ఆమె అనుకుందాం ఏదో అనుమానం. మరియు ఇంకా, ఒక గ్లిమ్మెర్ వార్తలు ఆమె కంటిలో సాక్ష్యం కొన్ని ముక్క, లేదా ఆమె కళ్ళజోడు ప్రతిబింబం లో. Well, మేము సినిమాలు సరిగ్గా లేకపోతే మేము జూమ్ మరియు "విస్తరించేందుకు" ఇందులో ప్రతిపాదిస్తున్నాను ఈ ఎంత సమాచారం ఉంది మేరీ యొక్క ముఖం ఉంది మీరు ఒక చిత్రం పట్టుకుని ఉన్నప్పుడు అసలు రిజల్యూషన్ తో. మరియు, నిజానికి, మీరు ఈ చుక్కలు చూడగలరు. మరియు ఈ ఏమి ఉన్నాయి అని పిక్సెళ్ళు, p-i-X-E-L-S ఇది సాధారణంగా కేవలం ఒక చతురస్రం ఒక చిత్రం స్వరకల్పన ఒక డాట్ ఉంది. మళ్ళీ రోజు, మరియు నిజానికి కూడా నేటి LED TVs కొన్ని నేడు లేదా LCD TV స్, మీరు పొందారు ఉంటే మీ గది లేదా ఇంటి వద్ద ఒకటి, మీరు దానికి సూపర్ దగ్గరగా అప్ వెళ్ళి, మరియు లేకపోతే అది ఒక కొంతవరకు పాత TV ప్రత్యేకించి, మీరు బహుశా కూడా ఈ చుక్కలు చూడగలరు మరియు ఒక చిత్రం కంపోజ్ ఏమిటి. మరియు మరింత ఉంది ఈ కంటే సమాచారం. మేము అర్థంలో, "విస్తరించేందుకు" కాలేదు పైగా మరియు విధమైన విషయాలు సులభం రకమైన విధమైన ఏమి ఊహించే రంగు మేరీ కంటికి పక్కన ఉండాలి కాబట్టి ఇది నిజానికి కాబట్టి pixelated కాదు. కానీ నేను జూమ్ ఉంచుకుంటే, అక్కడ ఆమె కంటిలో చెడు వ్యక్తి. ఆ వంటి అన్ని ఉంది సమాచారం మనం. మీరు సృష్టించలేరు ఏమీ బయటకు సమాచారం. కేవలం పరిమిత ఉంది అక్కడ బిట్స్ సంఖ్య. సమస్య సెట్ 4, పేరు కాబట్టి మీరు ఒక అవకాశం కలిగి ప్రపంచంలోని ఈ రకమైన తో ఆడటం. సమస్య సెట్ 4 లో, మీరు అన్వేషించడానికి చేస్తాము గ్రాఫిక్స్, మరియు ఫోరెన్సిక్స్ ప్రపంచం, మరియు వాస్తవానికి కోడ్ వ్రాయడానికి కోల్పోయిన చిత్రాలు కోలుకుంటుంది. మీరు కోడ్ వ్రాయడానికి ఉంటాం ఆ ఇప్పటికే ఉన్న చిత్రాలను అభిసంధానం మరియు చివరికి ఏమిటి అర్థం హుడ్ కింద జరగబోతోంది. మరియు, అది నిజానికి, హాజరవుతారు అన్ని ఆ క్లిష్టమైన కాదు. ఉదాహరణకు, మనము కావలెను ఒక స్మైలీ ముఖం ఎక్కడ ప్రాతినిధ్యం ఈ నల్ల పిక్సెళ్ళు, లేదా ఈ నల్ల చుక్కలు, బాగా, మేము కేవలం ప్రాతినిధ్యం వహిస్తుంది వాటిని నిజంగా ఒక బిట్మ్యాప్. మరియు ఉంటే మీరు ఎప్పుడైనా విన్నారు వ్యక్తీకరణ బిట్మ్యాప్, బహుశా ఇప్పుడు ఒక చేయడానికి మొదలవుతుంది కొంచెం సెన్స్ నేడు. మేము ఇప్పటికే ఒక బిట్ ఉంది ఏమి. ఇది 0 లేదా 1 అనిపిస్తుంది. మరియు ఒక చిహ్నం కేవలం ఏదో ఉంది కాగితం ముక్క వంటి మీరు ఆదేశాలు ఇస్తుంది మరియు ఉంది బహుశా ఎక్స్ మరియు వై ఆర్డినేట్ ఒక గ్రిడ్. కాబట్టి ఇక్కడ ఒక బిట్మ్యాప్ ఉంది. ఇది బిట్స్ ఒక చిహ్నం వార్తలు మలిచారు 1 స్పష్టంగా ఉంది తెల్ల పిక్సెల్ ప్రాతినిధ్యం అన్నారు, మరియు ఒక 0 ఒక నల్ల పిక్సెల్ ప్రాతినిధ్యం అన్నారు. కానీ మేము ఖచ్చితంగా అది చుట్టూ కుదుపు కాలేదు. ఇది నిజంగా ప్రాధాన్యత లేదు కాబట్టే మేము స్థిరమైన ఉన్నారు కాలం. మరియు ఇక్కడ లోపల binary--, ఎలా ఉంది ఒక కంప్యూటర్ యొక్క మెమరీ, లేదా లోపల మీ హార్డ్ లో ఒక ఫైల్ యొక్క drive-- మీరు నిల్వ చేసుకోవచ్చు స్మైలీ ముఖం చిత్రాల సరళమైన. కానీ మేము ఏ ఉంటాయి, కోర్సు యొక్క, ఈ చిత్రం లేకపోవడంపై? రంగు, కుడి? ఇది ఒక స్పష్టమైన తదుపరి దశలో ఉంది లేదా వృద్ది రంగు ఈ మెరుగుపరచడానికి. కాబట్టి దురదృష్టవశాత్తు కేవలం ఒకే బిట్ 0 లేదా 1, మేము రంగు ప్రాతినిధ్యం వహిస్తుంది. ఆ ఎరుపు, లేదా నీలం, లేదా కాలేదు నలుపు లేదా తెలుపు లేదా ఆకుపచ్చ, గులాబీ లేదా, లేదా రంగులు ఏ జతల. కానీ సరళత్వం కోసమని, మేము చేస్తాము కేవలం నలుపు మరియు తెలుపు భావించవచ్చును. కాబట్టి తార్కికంగా మనం ఉంటే అవసరం ఏమి మేము ఒక చిత్రం రంగు అమలు చేయదలిచిన? మనం ఎందుకు చేయాలి? ఇక్కడ పరిమిత కారకం వలె ఒక బిట్ మీకు మాత్రమే చెయ్యవచ్చు ఉంది రెండు రాష్ట్రాలు, 0 లేదా 1, తెలుపు ప్రాతినిధ్యం లేదా నలుపు, మీరు ఏమి అనుకుంటున్నారు? ప్రేక్షకులు: మరిన్ని డేటా. డేవిడ్ J. మలన్: మరిన్ని బిట్స్ అవును మరింత డేటా, మరింత బిట్స్. మరియు, నిజానికి, ఖచ్చితంగా ఎలా రంగుల చిత్రాలను ప్రాతినిధ్యం వహిస్తున్నారు. ఒకే బిట్ ఉపయోగించడానికి బదులు ఒక 0 లేదా ప్రతి పిక్సెల్ కోసం 1, ప్రతి డాట్, మీరు కేవలం బహుళ ఉపయోగించండి. బహుశా బహుశా సర్వసాధారణంగా 8 ఉపయోగించడానికి సమస్య సెట్ లో, నిజానికి 24 ఉపయోగించండి, మరియు 4, మీరు ఒక ఫైల్ తో ఆడతారు సాధారణంగా 24 బిట్స్ ఉపయోగించే ఫార్మాట్. కానీ మీరు చాలా బహుశా ఉంటాయి JPEGs తెలిసిన. మీరు ఎప్పుడైనా తీసుకున్నారు ఉంటే మీ ఫోన్ లో ఒక ఫోటో, లేదా అప్లోడ్ లేదా ఏదో చూసింది ఫేస్బుక్, లేదా Flickr, ఎన్ని ఫోటో ఆధారిత వెబ్సైట్లను, మీరు చేసిన బహుశా ముందు ఒక JPEG ఇమేజ్ చూసిన. మరియు అది ఈ ఫైలు హాజరవుతారు ఫార్మాట్ మేము pset 4 లో ఉపయోగించడానికి వెళుతున్న అనగా మీరు చూడాలని చిత్రాలు తిరిగి ఉంటుంది నేను అనుకోకుండా ఒక నుండి తొలగించారు చేసిన కెమెరా పాడైన మెమరీ కార్డ్, మీరు రెడీ ఉంటే. మరియు అది అవుతుంది ఆ అయినప్పటికీ JPEG అందంగా sophisticated-- ఉంది ఇది మరింత అధునాతన నలుపు మరియు తెలుపు చుక్కలు కంటే అక్కడ ఎందుకంటే మేము ఒక క్షణం క్రితం చూసిన నిజానికి ఫాన్సీ అల్గోరిథంలు ఆ కాబట్టి, ఒక JPEG కుదించుము ఉపయోగిస్తారు మీరు ఒక నిజంగా nice కలిగి, నాణ్యత చిత్రం కాని ఉపయోగించి కొద్దిమంది బిట్స్. మరియు మేము తిరిగి వచ్చి ఉంటుంది దీర్ఘ ముందు కుదింపు. ఇది మొదటి హాజరవుతారు ఒక JPEG image-- మూడు బైట్లు ఉన్నా మీరు ఒక ఫోటో తీసుకున్నారు ఏమి of-- విలువలు 255, 216, 255 ఉన్నాయి. ఇతర మాటలలో, మీరు కేవలం బిట్స్ నమూనా చూడండి, మూడు ఇక్కడ ప్రాతినిధ్యం బైట్లు లేదా 24 బిట్స్ మొత్తం అధిక సంభావ్యత తో ఆ ప్రతిపాదించే చేయవచ్చు మీరు ఈ మొదటి మూడు వద్ద చూస్తున్నాయి ఒక JPEG బైట్లు. మరియు ఈ ఏమి తెలిసిన ఉంది ఒక JPEG సంతకం వంటి. ఫైల్ ఫార్మాట్లు చాలా ప్రారంభించడానికి అక్కడ ఉంటాయి బయటకు 0 సె మరియు 1s యొక్క నిర్దిష్ట నమూనాలు తో, ఆ Windows మరియు Mac OS, మరియు iOS కాబట్టి, మరియు Android తెలుసు ఫైలు యొక్క ఏ రకమైన వారు అని పిలవబడే ఫైలు అదనంగా ఉంటాయి పొడిగింపు ఫైళ్లు చాలా కలిగి. మీరు .jpg ఉంటే, ఆ కంప్యూటర్కు మరొక క్లూ. కాబట్టి ఇప్పుడు ఈ చూడండి చేసుకుందాం సాంకేతికంగా కొద్దిగా. మేము దశాంశ తెలుసు వ్యవస్థ 9 ద్వారా 0 కాదు. మేము బైనరీ 0 మరియు 1 తెలుసు. మరియు మీరు PSet తిరిగి అనుకుంటే 0, మేము మీతో కుస్తీ కలిగి కొద్దిగా ఏదో హెక్సాడెసిమల్ అని, మీరు 16 అంకెలు కలిగి ఉన్న బదులుగా 10 లేదా బదులుగా 2. మరియు ఆ అంకెలు, సాంప్రదాయకంగా, ఒక 9 మరియు ద్వారా 0 ఉంటాయి f ఏమి సూచిస్తుంది, ఇక్కడ f ద్వారా కేవలం ఒక శీఘ్ర తెలివి దశాంశ సంఖ్య తనిఖీ? సో, 15. మరియు ఒక కేవలం ద్వారా 10 ప్రాతినిధ్యం వహించవలసి నేను ఇచ్చిన చేసిన ఆర్దరింగ్ స్వభావం. ఇది, కేవలం ఏకపక్ష కన్వెన్షన్ కానీ అది చాలా ప్రమాణంగా ఉంది. మేము ఈ నమూనా చూడండి చేస్తే మూడు లెట్ యొక్క బైట్లు కేవలం అది చూడండి మొదలుపెట్టిన ఎలా ఏకరీతిగా ఉంటుంది సాధారణంగా కంప్యూటర్ శాస్త్రవేత్తలు చూడండి మరియు ఫైళ్ళ గురించి అనుకుంటున్నాను. మీరు ఖచ్చితంగా గురించి ఆలోచించవచ్చు 0 సె ఫైళ్లు, మరియు 1s, మరియు దశాంశ, కానీ వాస్తవానికి, మేము బైనరీ ఉపయోగించడానికి ఉంటాయి లేదా మరింత సాధారణంగా hexadecimal-- తిరిగి pset 0 నుండి. కాబట్టి నాకు ప్రపోజ్ తెలియజేయండి ఆ 255, 216, మరియు 255 0 సె మరియు 1s కేవలం ఈ నమూనాలు ఉన్నాయి. మరియు మీరు ఈ ఉంటే తనిఖీ చేయవచ్చు మీరు వీక్ 0 నుండి గణిత చేయాలనుకుంటున్నారా. కానీ, ఇప్పుడు కోసం, కేవలం ఊహించుకోవటం ఈ నిజానికి సరైనది. నేను కేవలం మూడు దశాంశ తిరిగి వ్రాయబడుతుంది చేసిన మూడు ద్వియాంశ విలువలను వంటి సంఖ్యలు. ఇప్పుడు నేను ఏమి వెళుతున్న ఉంది కేవలం కొన్ని వైట్ స్పేస్ జోడించండి కేవలం చదవడానికి కోసమని. మరియు నోటీసు, నేను వెళుతున్నాను విషయాలు కాకుండా తరలించడానికి. సో ముందు, తరువాత, ముందు, తర్వాత. నేను ఇతర ఆసక్తికరమైన ఏమీ చేయడం వెబ్ కేవలం విషయాలు విస్తరించే కంటే ఆ నోటీసు ఎనిమిది ప్రతి సమితి బిట్స్ ఇప్పుడు నాలుగు బిట్స్ రెండు సెట్లను ఉంది. ఈ హెక్సాడెసిమల్ ఎందుకంటే ఉపయోగపడుతుంది ముఖ్యంగా ఫ్యాషన్ ఉంది ఎందుకంటే ప్రతి హెక్సాడెసిమల్ అంకెల 0 ద్వారా f, లేదా మరింత నిర్దిష్టంగా 0 ద్వారా 15, ప్రాతినిధ్యం చేయవచ్చు సరిగ్గా నాలుగు బిట్స్ తో. ఇతర మాటలలో, హెక్సాడెసిమల్ లో మీరు ఉంటే అది కేవలం 0000 వార్తలు, ఒక 0 ప్రాతినిధ్యం అనుకుంటున్నారా, నాలుగు సున్నాలు. మరియు మీరు 15 ప్రాతినిధ్యం అనుకుంటే, నాలుగు బిట్స్ ఇది 1111 ఉంది. మరియు మీరు గణిత చేయండి ఉంటే, ఈ వాటిని స్థలం ఉంటే, ఈ 16s ప్రదేశం ఆ మీరు చేసిన ఇవ్వాలని జరగబోతోంది కాకుండా ఆ జరగబోతోంది క్షమించండి ఆలోచన బైనరీ లో, 15 మీరు ఇవ్వాలని జరగబోతోంది, వాటిని స్థలం, పరుగులు తీయడం స్థానంలో, ఫోర్లు, ఎయిట్స్కి స్థానంలో. నాలో ఆ ప్రపోజ్ తెలియజేయండి ఎడమవైపు నాలుగు బిట్స్ సెట్ F కాల్ చూడాలని ఏమిటి. ఇది అతిపెద్ద సంఖ్య మీరు నాలుగు బిట్స్ తో సూచిస్తాయి. మరియు మేము ఇప్పటికే హెక్సాడెసిమల్ నుండి తెలుసు, f హెక్సాడెసిమల్ లో అతిపెద్ద అంకెల ఉంది. మేము అక్కడ మరో f పొందారు రెండు అక్కడ మరింత. మరియు ఇప్పుడు కోసం, కేవలం విశ్వాసం తీసుకోవాలని నేను గణిత కుడి చేసారు మరియు ఎడమ భాగంలో ఆ బిట్స్, 1101, హెక్సాడెసిమల్ లో d అదే విషయం. మరియు కుడి చేతి, 1000, కేవలం 8 ఉంది. మరియు సులభంగా ఒకరి కుడి, చూడటానికి? 8 represents-- హక్కు ఆ ఎయిట్స్కి స్థానంలో క్రింద ఉంటుంది. కాబట్టి మేము eights కాలమ్ లో ఒక కలిగి మరియు ఫోర్లు, రెండు పరుగులు తీయడం లేదా వాటిని ఏమీ లేదు. కాబట్టి ఇప్పుడు మరింత సంప్రదాయకంగా, మానవులు ఉంటాయి ఈ వంటి హెక్సాడెసిమల్ అంకెలు రాయడానికి మీరు కేవలం, వాటిని కలిసి squish ఆపై మీరు 0x వాటిని ఉపసర్గ. ఇది కంటే ఇతర ఏమీ అర్థం ఒక human-- ఒక దృశ్య ఆధారాన్ని ఇక్కడ ఒక హెక్సాడెసిమల్ విలువ ఎందుకంటే వస్తుంది అది లేకపోతే స్పష్టమైన కాదు. ఇది ఆ, చివరికి, చెప్పటానికి ఉంది సున్నాలు మరియు వాటిని నమూనా, లేదా హెక్సాడెసిమల్ యొక్క నమూనా అంకెలు సమానమైన మీరు ఆ కోసం చూడటం మొదలు కానుంది సమస్య సెట్ లో 4 దీన్ని ఉంది మరియు సమస్య సెట్ 4 స్పెక్ నడిచే మరింత detail-- ఈ ద్వారా మీరు కానీ మర్మమైన విధమైన వంటి తెలుసుకోవటం ఈ మొదటి చూపులో కనిపిస్తుంది ఉండవచ్చు మీరు ఈ చాలా చూసిన ఆరంభమవుతుంది చేస్తున్నారు. నిజానికి, కూడా GDB లో, డీబగ్గర్ సోమవారం ప్రవేశపెట్టిన మరియు డాన్ pset 3 లో, వెళ్ళి పరిచయం తరచుగా మీరు హెక్సాడెసిమల్ విలువలు చూపించడానికి కేవలం వారు మరింత ఉంటాయి కాబట్టి దశాంశ లేదా బైనరీ కంటే సంప్రదాయ కంప్యూటర్ల ప్రపంచంలో. ఇప్పుడు సందర్భం ఈ ఉంచారు తెలియజేయండి. చాలా మీరు ఈ గుర్తు ఉండవచ్చు యొక్క నుండి వచ్చింది, ఇక్కడ చిత్రం? Vista, కాబట్టి పాతతరానికి కంటే ఆ Windows XP తొలి చేశాడు. కాబట్టి ఈ ఒక అందమైన ప్రకృతి దృశ్యం ఉంది. నిజానికి, మీరు online-- చుట్టూ దూర్చు ఉంటే నేను ఒక వికీపీడియా ఆర్టికల్ అని, ఇందులో ఎవరైనా చాలా అద్భుతంగా బయటకు వెళ్లి దొరకలేదు ప్రపంచంలో ఈ స్థానాన్ని ఏర్పాటు అతని లేదా ఆమె కెమెరా ఖచ్చితంగా కుడి place-- మరియు ఈ రోజు వంటి ఫంక్షన్ బాగుంది కానీ అది ఖచ్చితంగా అదే సెట్టింగ్ ఉంది. ఈ చిత్రం, అయితే, ఒక ఫైల్ లో ఉంది ఫార్మాట్ అని బిట్మ్యాప్, బి-m-p. మరియు మేము ఒక సూపర్ తీసుకుని వెళుతున్నాం అర్థం ఏమి వద్ద ఒక్కసారి. కాని బిట్మ్యాప్ కేవలం వేరే మార్గం పాఠశాల చిత్రాలు ఇంకా పిక్సెళ్ళు ఉపయోగించి 0 సె మరియు 1s, చివరికి. కానీ త్వరగా చూపులో, ఇది ఉంది మరింత ఆసక్తికరమైన సంతకం ఫైలు ప్రారంభంలో. ఇది కేవలం మూడు కాదు బైట్లు కాకుండా అక్కడ వార్తలు బైట్లు నమూనాలను యొక్క మొత్తం బంచ్ అర్ధములో ముందుగా నిర్ణయించిన చేశారు. ఉదాహరణకు, ఎక్కడో బిట్మ్యాప్ చిత్రం యొక్క మొదటి కొన్ని బైట్లు పరిమాణం అవతరిస్తుంది చిత్రం, చిత్రం యొక్క వెడల్పు, చిత్రం యొక్క ఎత్తు, కాబట్టి ఉపయోగకరమైన మెటాడేటా, మీరు రెడీ ఉంటే. ఉపయోగకరమైన సమాచారం Photoshop లేదా ఏ గ్రాఫిక్స్ మీరు ఉపయోగిస్తున్నట్లయితే ప్రోగ్రామ్ నిజానికి పట్టించుకోనట్లు ఉండవచ్చు. ఈ కాబట్టి మరింత సమస్య 4 సెట్, కానీ ఈ ఆ చెప్పటానికి మాత్రమే ఉంది రోజు చివరిలో మీరు ఉపయోగించి చేసిన అన్ని ఫైల్ ఫార్మాట్లు years-- మైక్రోసాఫ్ట్ వర్డ్ ఫైళ్లు కోసం, సంఖ్యలు ఫైళ్లు, Excel ఫైళ్లను, ఫైల్ ఫార్మాట్లు ఎన్ని కొన్ని ఉండవచ్చు తెలిసిన ఫైల్ పొడిగింపు హుడ్ కింద కేవలం 0 సె మరియు 1s ఉంటాయి. మరియు మానవుల నిర్ణయించాము సమావేశాలు ఏమిటో, ఏమి 0 సె మరియు 1s రీతులు ప్రాతినిధ్యం ఒక పద, Excel ఫైల్ వర్సెస్ దాఖలు ఇతర ఫైల్ ఫార్మాట్లు ఎన్ని వర్సెస్. Pset 4 లో కాబట్టి, మీరు ఒక ఉంటుంది అవకాశం ఆ తో ఆడటం. కానీ ఏమి అది ఒక struct కలిగి అర్థం. ఈ ఇప్పుడు నిజానికి ఒక nice segue ఉంది మాత్రమే జంట కలిగి సి, అదనపు ఫీచర్స్ మేము ఇంకా చూశారు లేదు. ఇది ఒక అందమైన చిన్న భాష మరియు ఒకటి సి గురించి nice లక్షణాలు ఒక struct ఉంది. ఉదాహరణకు, మీరు ఉంటే లెట్ యొక్క represent-- కావలెను మీరు ఒక వేరియబుల్ కలిగి కోరుకున్నారు పేర్కొన్నట్లు కొన్ని ప్రోగ్రామ్ ఒక విద్యార్థి సూచిస్తుంది. బహుశా మీరు ఒక కోర్సు రాసే నమోదు కార్యక్రమం, లేదా కోర్ షాపింగ్ సాధనం లేదా అలాంటిదే. సంబంధిత డేటాని ముక్కలను ఏమిటి చూసుకొని వచ్చారు ఆ విద్యార్థికి? ఒక విద్యార్థి ఇలా విలువలను ఏమి ప్రాతినిధ్యం? అవును? మీరు ఒక విద్యార్థి ఒక పేరు. ఒక సాధారణ విద్యార్థి వేరే ఏమి కాదు? ప్రేక్షకులు: [వినబడని] డేవిడ్ J. మలన్: సో, క్షమించండి. ప్రేక్షకులు: వయసు. డేవిడ్ J. మలన్: ఒక వయసు లేదా పుట్టినరోజు సమానమైనప్పుడు, YEP. ఏమి? ప్రేక్షకులు: ID సంఖ్య? డేవిడ్ J. మలన్: బహుశా కాబట్టి ఒక ID సంఖ్య, ఒక ఫోన్ నంబర్, బహుశా ఒక వసతి, లేదా ఇల్లు, కళాశాల, లేదా అలాంటిదే లేదా. డేటా ముక్కలు ఎన్ని ఆ మీరు మీ పరిచయాల జాబితాకు లో కలిగి ఉండవచ్చు ఒక విద్యార్థి నిర్వచించే ఉండవచ్చు ఏమిటి. మేము కోడ్ లో, దీన్ని కోరుకుంటే కాబట్టి, మేము ఈ వంటి సాధారణ ఏదో ఉండవచ్చు. త్వరలో కాబట్టి ఒక కార్యక్రమం కలిగి ఉండవచ్చు ఉంది, యొక్క అని Int ప్రధాన (తప్ప) తెలియజేయండి. నేను ఒక ప్రాతినిధ్యం అనుకుంటే నేను ఉదాహరణకు, కలిగి ఉండవచ్చు విద్యార్థి, ఆ విద్యార్థి పేరు అనే స్ట్రింగ్, ఆ విద్యార్థి వసతి అనే స్ట్రింగ్, బహుశా ఒక పూర్ణాంకానికి విద్యార్ది కోసం ID అని. నేను స్ట్రింగ్ ఉపయోగించి నేను ఎందుకంటే, నేను cs50.h. తిరిగి వెళ్ళి ఉంచాలి బహుశా నేను stdio.h అవసరం వెళుతున్న. నాలో preemptively ఆ తెలియజేసేలా మరియు నేను ఉన్నాను ఇప్పుడు ఈ student.c కాల్ వెళుతున్న మరియు ఈ సేవ్. మరియు ఇప్పుడు నేను ఏదో ఒకటి చెయ్యాలి ఈ చరరాశులు తో. మరియు మేము కేవలం రాయాలో ఆ సూడో కోడ్ వ్యాఖ్య అని, ఇది ఆసక్తికరమైన కాదు ఎందుకంటే మేము ఇప్పుడు ఏమి. సరే, ఈ ప్రోగ్రామ్ ఆ ఏదో ఒక విద్యార్థి నిల్వ. నేను ఉంటే ఏమి అనుకుంటున్నారు నేను రెండు విద్యార్థులు నిల్వ అనుకుంటున్నారా? నా మొట్టమొదటి ప్రవృత్తి అన్నారు ఒక నిమిషం వేచి, అన్ని కుడి ఉండాలి, నేను మరొక విద్యార్థి ఉంటే ఎందుకు నాదగ్గర కేవలం స్ట్రింగ్ పేరు 2, స్ట్రింగ్ వసతి 2 చేయండి, పూర్ణాంకానికి id2. మరియు మేము పోయింది చేసిన ఈ రహదారి ముందు డౌన్ మరియు తెలుస్తోంది ఏమి మా పరిష్కారం ఏమిటి ఒక hackish కాపీని పేస్ట్ యొక్క రకం ఇక్కడ ఉద్యోగం? ప్రేక్షకులు: ఒక అమరిక. డేవిడ్ J. మలన్: అవును, మేము ఒక అర్రే వాడవచ్చు. కుడి ఈ చాలా త్వరగా అతిపెద్దదైన అవుతుంది. మీరు ఏకపక్ష యొక్క క్రమం ఉంటుంది ఈ చరరాశులు యొక్క అన్ని నామకరణ మొదలు. మరియు మీరు, మానవ, పెట్టాలి ఆ సరే NAME 2 సదృశంగా ట్రాక్ dorm2 తో id2 అనుగుణంగా ఉంటుంది. ఇది కేవలం ఒక గజిబిజి అవుతుంది. కనుక ఇది చాలా సులభం కొన్ని వారాల క్రితం నుండి రీకాల్, కేవలం అనే స్ట్రింగ్ పేర్లు కలిగి మరియు బహుశా మాకు ఆ మూడు ఇస్తాయి. ఆపై బహుశా మేము కలిగి స్ట్రింగ్ కళాశాలలో మరియు కలిగి వాటిలో మూడు లేదా ఒక స్థిర తో, ఐడిలు Int మరియు వాటిలో మూడు ఉన్నాయి. అయితే ఇప్పుడు ఈ భావం కొద్దిగా అలసత్వము, కుడి. మేము ఇంకా విద్యార్థులు మరియు గురించి మాట్లాడటం చేస్తున్నాం నేను నిజంగా తక్కువ స్థాయిలో నివాసస్థలం చేస్తున్నాను అమలు వివరాలు. విద్యార్థి ఒక పేరు మరియు ఒక వసతి గృహం మరియు ID. ఎందుకు నేను ఒక వేరియబుల్ డిక్లేర్ కాదు విద్యార్థి పిలిచి s కాల్. మరియు నేను మరొక విద్యార్థి అనుకుంటే, ఎందుకు నేను దానిని కాల్ లేదు. లేదా నేను ఒక మొత్తం బంచ్ అనుకుంటే విద్యార్థులు, ఎందుకు నేను లేదు నేను మొత్తం తరగతి కలిగి చెప్పటానికి విద్యార్థులు, మరియు అది వాటిని మూడు వార్తలు. ఇతర మాటలలో, ఎందుకు నేను వచ్చి కాదు అని నా సొంత డేటా రకం, పైకి విద్యార్థులు, లోపల ఇది ఉంది ఒక పేరు, ఒక ID ఉంది ఒక వసతి ఉంది, ఇతర రంగాలలో ఏ సంఖ్య. మరియు మీరు అవుతుంది సరిగ్గా ఆ చేయవచ్చు. కాబట్టి సి struct అని ఈ లక్షణం ఉంది. ఒక భాష ఫీచర్ అని మాకు ఖచ్చితంగా దీన్ని అనుమతిస్తుంది. నేను ముందుకు వెళ్ళి వెళుతున్న మరియు structs.h తెరుచుకుంటుంది మేము చూడండి వెళుతున్న ఒక విద్యార్థి యొక్క నిర్వచనం క్రింది. ఇది హాజరవుతారు - మరియు ఈ ఒక కూడా ఉంది ఒక ID పాల్గొన్న ఒకటి కంటే సరళమైన ఒక క్షణం క్రితం. మీరు ఆలోచన అనుకుంటే మీ ఇంట్లో డేటా రకం, మరియు Int పాటు, మరియు చార్ మరియు ఇది ఉనికిలో మరియు అన్ని ఈ ఇతరులు తేలుతూ మీరు వాచ్యంగా ద్వారా అలా చెయ్యవచ్చు typedef struct రాయడం, ఆపై కొన్ని గిరజాల జంట కలుపులు, ఇది లోపలి మీరు మీరు కావలసిన వేరియబుల్స్ జాబితా ఈ కొత్త కస్టమ్ డేటా అనుబంధం ఒక పేరు మరియు ఒక వసతి వంటి టైప్ మరియు అప్పుడు గిరజాల జంట కలుపులు తర్వాత మీరు కొత్త డేటా రకం ఒక పేరు ఇవ్వండి. కావున, ఉదాహరణకు, విద్యార్థి. మరియు ఇప్పుడు ఈ గురించి మంచిది అని మేము సంబంధిత కోడ్ విషయంలో చూస్తే, మొదటి సమావేశం, అన్ని ఈ ఉంచాలి గా పిలువబడే ఒక ఫైల్ ఏదో డాట్ h లో, మేము కలిగి ఉండే శీర్షికా ఫైలును చాలా మేమే ఉపయోగించడం ప్రారంభించారు. కానీ మేము ఆరంభమవుతుంది చేస్తున్నారు ఇప్పుడు కొంచెం ఉపయోగించి. మరియు మేము ఈ ఏమి చెయ్యగలను, చివరికి, కోడ్ యొక్క ఈ కొన్ని పంక్తులు లో సరిగ్గా ఆ డిక్లేర్ ఉంది డేటా రకం, ఒక విద్యార్థి. ఇప్పుడు యొక్క అది ఉపయోగించడానికి అనుమతిస్తున్నట్లు. నేను ఇప్పుడు వెళ్ళాలని వెళుతున్న ఒక ఫైల్ structs1.c అని. మరియు యొక్క ఒక పరిశీలించి వీలు ఇక్కడ కొన్ని లక్షణాలు. కాబట్టి ఇక్కడ stuff ఉంది ఎక్కువగా తెలిసిన, మరియు మేము చేస్తాము ఏమి కాదు తిరిగి వచ్చి కేవలం ఒక క్షణం లో తెలిసిన. కోర్సు యొక్క ఈ నా సొంత సహా ఉంటుంది అలాగే కొత్త ఇది శీర్షికా ఫైలును, pset 3 పేరు తప్ప, రీకాల్, మేము helpers.h ఉన్నాయి. కాబట్టి మీరు # ఉన్నాయి helpers.h గుర్తు ఉండవచ్చు. ఎందుకు అయితే నేను కోట్లు ఉపయోగిస్తున్నాను బదులుగా కోణ బ్రాకెట్లలో? అపుడు నేను వారిని మధ్య ఎంచుకోవాలి? దాదాపు ఎల్లప్పుడూ నేను కనిపిస్తుంది కోణ బ్రాకెట్లలో ఉపయోగించడానికి. ఆపై, ఒక అన్ని ఆకస్మిక న లైన్ ఆరు నేను డబుల్ కోట్స్ ఉపయోగించి వెబ్. ఎందుకు అని ఉంటుంది? అవును? ప్రేక్షకులు: [వినబడని] డేవిడ్ J. మలన్: ఆ ఏమి ఒక వాస్తవ వార్తలు? ప్రేక్షకులు: మీ IDE. డేవిడ్ J. మలన్: అవును, నా అసలు IDE ఉంది. మరియు ఎందుకంటే యొక్క IDE న తొలిచే లేదు వీలు ఆ కేవలం నేను ఉపయోగించి నేను ఒక సాధనం. ఆ నా ప్రస్తుత వార్తలు డైరెక్టరీ, ప్రత్యేకంగా. కాబట్టి structs.h నా స్వంత ఫైల్ ఉంది IDE ఇన్ వ్యవస్థాపించబడలేదు, ఆపరేటింగ్ సిస్టమ్ లోనే, అంతేకానీ నా ప్రస్తుత డైరెక్టరీ లో. కాబట్టి సమావేశం మీరు అనుకుంటే ఉంది మీ సొంత శీర్షిక ఫైలు ఉన్నాయి, మీరు కేవలం డబుల్ కోట్స్ ఉపయోగించడానికి. మేము ఈ విషయం కాల్ ఏమి లైన్ 8, సాధారణంగా చెప్పాలంటే? ఈ ఏమి ఉంది? # define ఏదో. ఈ కుడి, స్థిరాంకాలు సూచిస్తుంది? మీరు ఒక కలిగి అనుకొంటే మీ కార్యక్రమంలో విలువ మీరు మొత్తం ఉపయోగించే సార్లు బంచ్, అంతే అది బయటకు కారణం సదస్సును మంచి హాష్ చిహ్నం ప్రకటించాలని అన్ని లో, సాంప్రదాయకంగా, అప్పుడు నిర్వచించే అది కాదు అయితే word-- అప్పర్కేస్ ఖచ్చితంగా అవసరమైన, కానీ అది మానవ కన్వెన్షన్ స్థిరాంకాలు చూపడంలో వారు జంప్ అవుట్ కాబట్టి మీరు స్పేస్ visually-- వద్ద మరియు అప్పుడు మీకు కావలసిన విలువ ఆ స్థిరమైన యొక్క పేరు సమానం. ఏ సెమికోలన్, కానీ కేవలం మీరు అక్కడ ఆ నమూనా అనుసరించండి. సో నేను ఈ వాస్తవ కోడ్ చేస్తున్నాను. కాబట్టి యొక్క పరిశీలించి తెలియజేయండి ఇక్కడ ప్రధాన కార్యక్రమం. లైన్ 12 లో నేను structs.h ఉన్నాయి, నేను ఇప్పుడు అద్భుతంగా నా పారవేయడం కొత్త డేటా రకం. నేను, పూర్ణాంకానికి యాక్సెస్ లేదు మరియు చార్ మరియు ఫ్లోట్, మరియు తీగ, మరియు నీలం మరియు ఇతరులు. నేను ఇప్పుడు ప్రాప్తి ఒక విద్యార్థి డేటా రకం. లైన్ 12 లో, నేను రెండు కలపడం ఉన్నాను కాబట్టి ఒక కస్టమ్ డేటా రకం మరియు రెండు ఆలోచనలు వ్యూహం ఉపయోగించి. కాబట్టి ఈ కార్యక్రమం ఉంటే నేను నిజానికి మద్దతు అనుకుంటున్నారా మూడు వేర్వేరు విద్యార్థులు నా కార్యక్రమంలో, నేను నాకు ఒక వేరియబుల్ ఇవ్వాలని అంటున్నారు కేవలం చేయవచ్చు వీటిలో ప్రతి అనే విద్యార్థులు, రకం విద్యార్థులు, ఇది నా కస్టమ్ డేటా రకం. మరియు, ప్రత్యేకంగా, నాకు ఇవ్వండి నా వ్యూహంలో ఆ మూడు. కాబట్టి ఇప్పుడు మేము ఈ కార్యక్రమంలో ఏమి చేస్తారు? ఇక్కడ కేవలం ఒక లూప్ iterating వార్తలు ఆ ఎందుకంటే, 3 0 నుండి విద్యార్థులు విలువ ఏమిటి. నేను కేవలం యూజర్ ప్రాంప్ట్ వెబ్ నాకు విద్యార్థి యొక్క పేరు ఇవ్వండి. ఆపై లైన్ 17 లో, మేము ఎక్కువగా తెలిసిన లైన్ కలిగి. మేము మా పాత స్నేహితుడు కలిగి కుడివైపు GetString. సింటెక్స్ ఏ ముక్క స్పష్టంగా కొత్త ఉంది మీరు ముందు సి లో ప్రోగ్రామ్ ఎప్పుడూ ఉంటే, మరియు structs వాడలేదు? అవును? ప్రేక్షకులు: .name. డేవిడ్ J. మలన్: .name. కానీ ఈ, ఒక లీపు యొక్క చాలా లేదు ఇప్పుడు విద్యార్థులు బ్రాకెట్ ఎందుకంటే మీరు i-th విద్యార్థి ఇస్తుంది. మరియు మీరు ప్రవేశిస్తాడు అనుకుంటే ఆ నిర్మాణం యొక్క లోపల, మీరు కేవలం ఒకే కాలంలో ఉపయోగించడానికి మరియు అప్పుడు లోపల వేరియబుల్ పేరు, లేదా ఆ లోపల ఆస్తి మీరు యాక్సెస్ పొందడానికి కావలసిన. అదేవిధంగా నేను అప్పుడు ప్రాంప్ట్ ఉంటే వినియోగదారు, నాకు విద్యార్థి వసతి ఇవ్వాలని, మీరు అదేవిధంగా అని నిల్వ చేయవచ్చు లోపల వసతి వేరియబుల్ స్ట్రింగ్ ఆ విద్యార్థి నిర్మాణం. ఇప్పుడు విషయాలు కొద్దిగా ఫాన్సీ పొందండి. మరియు ఈ చూడండి కానుంది బహుశా చాలా చాలా త్వరలోనే. కానీ మీరు pset లో ఈ దూరం మరింత చూస్తారు 4, కాబట్టి ఇప్పుడు అది కేవలం మెరుపు లెట్. ఇది పంక్తి 23 లో ద్వారా హాజరవుతారు 38, మీరు నేను బహుశా చేస్తున్నదాన్ని ఏమి ఆలోచిస్తాడు? నేను వ్యాఖ్యలను తొలగించి చేసిన నేడు, కానీ వెర్షన్ కోసం ఆన్లైన్ కోడ్ సూచన అన్ని వ్యాఖ్యలు ఉన్నాయి. నేను దాదాపు అనిపించవచ్చు లేదు? ప్రేక్షకులు: అన్ని ఫైల్ సేవ్ యూజర్ ప్రవేశించిన సమాచారం. డేవిడ్ J. మలన్: అవును, ఈ ఖచ్చితంగా, ఒక కొత్త మార్గం మేము రెండు చూడటానికి ఆ, సి యొక్క మరొక లక్షణంగా అనగా నా స్వంత ఫైళ్ళను సృష్టించవచ్చు. ఇంతవరకు దాదాపు ప్రతి కార్యక్రమం వ్రాయలేదు మీరు స్థితిలేని ఉంది. వెంటనే అది అమలు చేయబడుతుంది వంటి, అంతే. జ్ఞాపకాలు లేదా అది జ్ఞప్తికి తెచ్చుకొను ఉంది. సేవ్ ఏ ఫైలు కూడా ఉంది. కానీ మీరు అనుకుంటున్నారు ఉంటే ఉంది ఇన్పుట్ సేవ్ ఒక ఆట లేదా ఒక కార్యక్రమంలో వంటి, జరిగిన ఈ వంటి, అది మేము అలా అవుతుంది. మరియు మీరు ఈ మరింత చూస్తారు pset 4 మరియు విభాగం లో. కానీ ఈ లైన్ 23 తప్పనిసరిగా students.csv అనే ఫైల్ సృష్టిస్తుంది. మరియు మీరు ముందు ఈ చూసిన ఉండవచ్చు. మీరు ముందు CS అధ్యయనం ఎప్పుడూ చేసిన కూడా, CSV కామాతో వేరుచేసిన వేరియబుల్స్. ఇది ఒక చాలా పేదవాని వంటిది Excel ఫైల్ యొక్క వెర్షన్, ఇది ప్రారంభమైంది అని అర్థం Excel లో మరియు ఆపిల్ నంబర్స్, మరియు వరుసలను మరియు కాలమ్లను కలిగి ఉంది. కానీ ఇది ఒక యాజమాన్య కాదు మైక్రోసాఫ్ట్ లేదా Apple యొక్క వంటి ఫార్మాట్. ఇది వేరు కేవలం కామాలతో వార్తలు మేము ఒక క్షణంలో చూస్తారు ఆ విలువలు. మరియు కేవలం ఒక అంచనా పడుతుంది. చాలా వద్ద లైన్ 23 లో, ముగింపు, నా రెండవ వాదన అని ఈ కొత్త ఫంక్షన్ f ఫైలు ఓపెన్ కోసం ఓపెన్ w ఉంది. W ఏమిటి సూచించడానికి ఉండవచ్చు? అవును? ప్రేక్షకులు: మీరు ఫైలుకు వ్రాయవచ్చును? డేవిడ్ J. మలన్: ఇది అనుమతిస్తుంది మీరు ఫైల్ వ్రాయండి. కాబట్టి రూపాలను ఒక జంట ఉంది మేము ఇక్కడ ప్లగ్ చేయవచ్చు. కానీ మీరు కేవలం చదవడానికి కావాలా ఫైలు, అది చూడండి ఉంది మరియు జ్ఞాపకాలలో మీరు చదివిన కేవలం కోట్ unquote "r" ఉపయోగించండి. మీరు వ్రాయడానికి అనుకుంటే ఫైలు, మీరు "w" unquote కోట్ ఉపయోగించడానికి. కూడా ఉన్నాయి కలపవచ్చు మరియు ఇతర విషయాలను మీరు ఇప్పటికే ఫైళ్లు సవరించడానికి కావాలా. ఇప్పుడు మేము ఈ చూసిన ఉంచడానికి వెళుతున్న 24 వరుసలో విషయం, అప్పుడు మేము తిరిగి వచ్చి చేస్తాము. NULL, అది అవుతుంది, ఉంది ఒక ప్రత్యేక విలువ ఆ కొన్ని విధులు ద్వారా తిరిగి చేయవచ్చు ఏదో wrong-- పోయిందో ఉంటే ఫైల్ ఉనికిలో ఉంటే, మీరు మెమరీ రన్నవుట్ ఉంటే, ఇతర లోపాల లేదా ఒక సమూహం. కానీ ఇప్పుడు కోసం, యొక్క కేవలం ఈ ఊహించుకోవటం తెలియజేయండి కేవలం సంప్రదాయ దోష పరిశీలన ఉంది. ఇక్కడ లైన్ 26 లో, నేను iterating ఉన్నాను 0 నుండి నా విద్యార్ధులకు పైగా 3 వరకు. మరియు ఈ విధమైన రకం ఒక కొత్త ఫంక్షన్ యొక్క, fprintf, కానీ కేవలం ఒక అంచనా పడుతుంది. Printf కేవలం ముద్రణ ఉంటే ఒక ఆకృతీకరణ స్ట్రింగ్, fprintf బహుశా అర్థం ఏమిటి? ప్రేక్షకులు: ఒక ఫైల్ ముద్రించండి. డేవిడ్ J. మలన్: ప్రింట్ ఒక ఒక ఫైల్ ఫార్మాట్ స్ట్రింగ్. అదనపు ఏమిటి f అంటే ఫైల్. మరియు కొత్త ఫస్ట్ వాదన ఉంది మీ ఫైలు సూచిస్తుంది వేరియబుల్. అప్పుడు మేము కేవలం ఒక ఫార్మాట్ కలిగి కేవలం printf వంటి స్ట్రింగ్. మరియు కూడా ఈ అయితే వాక్యనిర్మాణం ఈ కేవలం క్రొత్త ఉంది విద్యార్థి యొక్క పేరు లో ప్లగ్ అంటే, విద్యార్థి వసతి ప్లగ్ ఇన్, మరియు అప్పుడు fclose ఫైలు మూసివేయండి. ఆపై ఈ కొత్త ఉంది lastly-- మరియు మేము ఈ వచ్చి చేస్తాము నేను ఉండండి నేను లాంగ్ ముందు కారణాల విద్యార్థి అక్కడ పైన జరిగింది. కానీ మేము తిరిగి వచ్చి చేస్తాము ఆ లాంగ్ ముందు ఆ ఎందుకంటే GetString ఎంత వార్తలు నిజానికి, హుడ్ కింద పని. కాబట్టి యొక్క ఇక్కడ ఒక త్వరిత వీక్షణ తీసుకుందాం. నేను నా డైరెక్టరీ లో ls టైప్ చేస్తే, నేను లేదు అని గుర్తించలేకపోతే , students.csv అనే ఫైల్ కలిగి కేవలం లేదు, ఉనికిలో లేదు. నేను ఇప్పుడు ఈ కార్యక్రమం కంపైల్ చేస్తే, , structs-1 తయారు. / structs-1, మరియు నేను ముందుకు వెళ్లి టైప్ వెళుతున్న యేల్ బర్కిలీ నివసించే Andi. మేము రాబ్ చూడాలని ఎవరు ఈ రోజుల్లో థాయర్ నివసిస్తున్నారు. మరియు యొక్క పేరు తో రావాలి , నేను అనుకుంటున్నాను, మరియా, మాథుర్ లో ఉంటే నేను సరిగ్గా జ్ఞాపకం. కాబట్టి ఏమీ జరిగే తెలుస్తోంది. కానీ ఇప్పుడు ls టైప్ ఉంటే, students.csv ఉంది. యొక్క ముందుకు మరియు ఓపెన్ students.csv వీడలేదు. ఈ మళ్లీ ఒక చాలా ఉంది తేలికైన ఫైలు ఫార్మాట్. కాని నేను కేవలం ఒక ఆచారం స్వీకరించారు నేను ఇక్కడ రెండు వరుసలు మరియు నిలువు వరుసలు. మొదటి కాలమ్ ఉంది ప్రజలు మొదటి పేర్లు. రెండవ కాలమ్ విద్యార్థి ఉంది వసతి, లేదా కళాశాల, లేదా ఇల్లు, లేదా whatnot. మరియు ఇప్పుడు నేను ఈ సేవ్ చేసిన శాశ్వతంగా ఒక ఫైలులో. కాబట్టి అది ఆసక్తికరమైన కాదు. కానీ ఈ కేవలం ఒక పునాది రాయి ఇప్పుడు సమాచారం అంటిపెట్టుకుని సామర్థ్యం శాశ్వతంగా. కాబట్టి ఇప్పుడు ఏమి మరింత మేము యొక్క చూసేలా ఈ మరియు ఇతర లక్షణాలను తో. కానీ మొదటి, ఏ ప్రశ్నలు? ఒక నవ్వులాట, మరియు ఫాస్ట్ ఉంది. కానీ మీరు చాలా చూస్తారు pset 4 మరింత, అలాగే. అవును? ప్రేక్షకులు: ఒక మార్గం ఉంది ఫైల్ పేర్లు జోడించడం కొనసాగుతుంది? డేవిడ్ J. మలన్: మంచి ప్రశ్న. కొనసాగించడానికి ఒక మార్గం ఉంది ఫైల్ పేర్లు జోడించడం? అవును. మరియు, నిజానికి, మీరు తాకినప్పుడు అప్, ఫైలు తిరిగి తెరవడం మీరు కోట్ ను ఉపయోగించాలి unquote "ఒక" append కోసం, ఇది కేవలం ఒక కొత్త లైన్ చేర్చుతారు, ఒక కొత్త లైన్ మళ్ళీ మళ్ళీ, సరిగ్గా. మంచి ప్రశ్న. ఇతర ప్రశ్నలు? అవును? ప్రేక్షకులు: మీరు నడిచింది ఉంటే ప్రోగ్రామ్ మళ్ళీ ప్రస్తుతం, దానికి పేర్లు జోడించడం కొనసాగిస్తామని దాఖలు లేదా అది క్రొత్త ఫైల్ తెరుచుకుంటుంది అని? డేవిడ్ J. మలన్: Ah, మంచి ప్రశ్న. మీరు మళ్ళీ కుడి కార్యక్రమం నడిచింది ఉంటే ఇప్పుడు, బహుశా కొత్త పేర్లు లో టైప్, ఇది ఫైల్ తోడవుతాయి లేదా ఫైల్ను ఓవర్రైట్? తరువాతి నేను ఉన్నాను ఎందుకంటే append మోడ్ ఉపయోగించి లేదు. మరియు నేను గుడ్డిగా ఉన్నాను ఎందుకంటే రచనకు తెరుస్తోంది, అది కేవలం ఫైల్ను ఓవర్రైట్ జరగబోతోంది. నేను నిజానికి కలపవచ్చు చేయవలసిందల్లా అని, నేను నిజానికి ఒక దీర్ఘకాల కలిగి అనుకుంటే డేటాబేస్. ఇప్పుడు CSV కూడా, స్పష్టముగా, ఉపయోగపడుతుంది వంటి ఉన్నాము writing-- మరియు మేము చివరికి ఈ చూస్తారు తరువాత సెమిస్టర్ లో మేము ఇతర ప్రయోజనాల కోసం CSV లు ఉపయోగించడానికి. మీరు ప్రజలు అన్ని నిల్వ చేయాలనుకుంటే ఎవరు సంఘటన కోసం నమోదు చేశారు లేదా మీ విద్యార్థి కోసం సైన్ అప్ సమూహం లేదా అలాంటిదే, ఈ రకమైన డేటా నిల్వ ఫార్మాట్ సూపర్ సౌకర్యవంతంగా ఉంటుంది. అక్షరాలా ఎందుకంటే, నేను ఉంటే ఈ ఫైల్ డౌన్లోడ్ ఉన్నారు. నేను double-- కాలేదు మరియు యొక్క నిజానికి ఈ ప్రయత్నించండి తెలియజేయండి నేను ఇక్కడ ఎక్సెల్ లేదా నంబర్స్ ఉంటే. నేను కుడి క్లిక్ వెళుతున్న లేదా నా ఫైలు నియంత్రణ క్లిక్ చేయండి. వై. కుడి క్లిక్ చేయండి లేదా నా ఫైలు నియంత్రణ క్లిక్ చేయండి. న కమ్, నా మౌస్ సహకరించింది లేదు. నేను వెళుతున్న Download-- కాబట్టి ఇక్కడ అన్ని ఫైళ్లను డౌన్లోడ్ కేవలం నేను ఈ ఒక పట్టుకోడానికి చేయవచ్చు. ఈ పనుల ఉంటే యొక్క చూసేలా students.csv-- మొదటిసారి నేను ఏక్టివేట్. ఇప్పుడు వారు నా పరిచయాలు చూడాలనుకుంటే. ఇప్పుడు, నేను నమోదు చేయాలి. ఇది CSV లు ఉపయోగించడానికి ఎంత సులభం చూడండి? అవును, తాజాగా ఉంచండి. సరే, ఇప్పుడు మేము తరగతి కోసం సిద్ధంగా ఉన్నారు. ఓహ్, ఓకే, కొత్త ఏమిటి? సరే, దగ్గరగా. ఆ మాంత్రిక ఉంది. సరే, ఇప్పుడు మేము అప్డేట్ ఉంటుంది. మరియు ఇప్పుడు, మర్చిపోయాను ఏమి నేను నిజానికి తెరుచుకున్న ఫైల్ కానీ అక్కడ ఫంక్షన్ ఏమి మేము వెళ్ళి. OK, కాబట్టి ఇప్పుడు మేము ఒక Excel ఫైల్ ఉంటుంది. ధన్యవాదాలు. OK, నేను అలా చేసినందుకు చాలా దానికి సులభమైన భాగంగా ఉండేది. కోర్సు యొక్క నేను ముందుగానే ఇన్స్టాల్ కాలేదు Excel లేదా సంఖ్యలు, లేదా ఏ ప్రోగ్రామ్. కానీ ఈ ఎందుకంటే, nice ఉంది ఇప్పుడు నేను చేయవచ్చు ప్రామాణిక ఫార్మాట్ డేటా. కాబట్టి ఇప్పుడు చూద్దాం సందర్భం మేము వదిలి పేరు మారడం ఆరంభమవుతుందని చివరిసారి, శిక్షణ చక్రాలు టేకాఫ్. కానీ మొదటి, మీరు కాదు ఈ ముందువి భోజనం చూడండి మళ్ళీ ఫైర్ వద్ద ఇక్కడ జరుగుతున్న మరియు న్యూ హవెన్ లో కేంబ్రిడ్జ్, సితార్ లో ఐస్. ASAP CS50s వెబ్ సైట్ సైన్ అప్ చేయండి CS50 విద్యార్థులు మరియు సిబ్బంది చేరడానికి. కాబట్టి మేము శిక్షణ చక్రాలు పట్టింది సోమవారం ఆఫ్ క్రింది విధంగా స్ట్రింగ్ డిక్లేర్డ్ చెయ్యబడింది కొంత సమయం కోసం CS50s లైబ్రరీ. ఇది అనుమతిస్తుంది ఎందుకంటే ఇది మంచిది మాకు ఉండటం వంటి వేరియబుల్స్ గురించి మాట్లాడటానికి పూర్తి పదాలు మరియు వాక్యాలను మరియు మరింత. కానీ అది లేదు స్ట్రింగ్ హాజరవుతారు. కేవలం పర్యాయపదంగా, లేదా ఒక అలియాస్ ఉంది, మేము ఏదో కోసం సృష్టించిన ఆ నిజానికి కొంచెం ఉంది సాంకేతిక ఒక చార్ * అని. నిజానికి, మేము ఒక ఉదాహరణ చూసిన సోమవారం ఒక కార్యక్రమంలో మేము అంచనా చాలా వంటి ప్రవర్తించే లేదు. ఈ సరిపోల్చండి -0, ఫైలు ఉంది. మరియు ఉంటే సరిపోల్చండి -0 గుర్తుకు నేను సోమవారం కార్యక్రమం కంపైల్ చెయ్యండి మరియు అమలు -0 సరిపోల్చండి మరియు తల్లి లో టైప్ మళ్ళీ చిన్న లో చిన్న, మరియు తల్లి. కార్యక్రమం నేను పట్టుబట్టారు వివిధ విషయాలను టైప్, కూడా తల్లి, అన్ని అయితే చిన్న, దృష్టి ఒకే విధంగా ఉంటుంది. కాబట్టి చిన్న సమాధానం ఏమిటి కంప్యూటర్ ఆలోచించడం ఎందుకు కోసం ఆ రెండు తీగలను భిన్నంగా ఉంటాయి? అవును? ప్రేక్షకులు: [వినబడని] డేవిడ్ J. మలన్: రైట్. సో, తల్లి, మొదటి సారి నేను ఉండటం, అది టైప్ నా కంప్యూటర్ యొక్క ఎక్కడో నిల్వ కాని మెమొరీ వేరే ప్రదేశంలో రెండవసారి కంటే నేను అమ్మ లో టైప్ చేయండి. ఇప్పుడు అది ఖచ్చితంగా ఆప్టిమైజ్ చేయవచ్చు. కంప్యూటర్ స్మార్ట్ కావచ్చు మరియు హే, ఈ రెండు తీగలను తెలుసుకోవటం వారు ఒకేలా ఉన్నారు. నాకు విస్తారంగా నిల్వ లేదు లెట్. కానీ కంప్యూటర్లు అలా లేదు ఆప్టిమైజేషన్ మీరు వారికి తెలియజేయవచ్చు తప్ప. కాబట్టి, డిఫాల్ట్గా, వారు కేవలం వదులుకోవడానికి వెళుతున్న మెమరీలో రెండు వేర్వేరు ప్రదేశాల్లో. అందువలన, మరింత స్పష్టమైన ఉండాలి మేము రెండు రెమ్మలు పోలిస్తే మొదటి పిలిచారు లు, రెండవది t, ప్రత్యేకంగా నేను ఏమి లైన్ 13 న ఇక్కడ పోల్చడం? అవును. ప్రేక్షకులు: ఇది మెమరీ లో స్థానం వేరియబుల్ ఆకర్షిస్తాయి. డేవిడ్ J. మలన్: ఖచ్చితంగా, నేను మెమరీలో స్థానంలో పోల్చడం ఆ వేరియబుల్స్ చూపారు. సో ప్రత్యేకంగా ఉంటే mom వద్ద ఉంది బైట్ సంఖ్య 1, 2, మరియు 3, మరియు 4-- ఎందుకంటే బాక్ స్లాష్ గుర్తు 0 చివరిలో అన్ని మార్గం ఉండాలి. మరియు mom, చి-o-m ఇతర ఉదాహరణకు, చిరునామా 10, 11, 12, మరియు 13 వద్ద ఉంది. నేను 1 పోల్చడం జరిగింది, ఆ చిరునామా, మెమరీ ఆ నగర, 10 వ్యతిరేకంగా, ఇది ఖచ్చితంగా కాదు అదే. 1 10 కాదు. కాబట్టి ఈ nice ఉంది ఇది అందంగా సూటిగా ఉంది. కానీ అది అజమాయిషీ సమస్యాత్మక ఉంది మేము తీగలను పోల్చడం అనిపించవచ్చు కాదు. కాబట్టి fundamentally-- మరియు ఈ తక్కువ స్థాయిలో, మీరు అమలు కోరుకుంటే ఒక కార్యక్రమం పోల్చడానికి రెండు వేర్వేరు పదాలు వినియోగదారు, నాణ్యత కోసం సైన్ టైప్ వారు చార్ వరుసలో చేయండి కేవలం సాధారణ పరంగా చార్, మనం స్పష్టంగా, ఏమి చేయాలి? ఇది కేవలం తగినంత కాదు ఆ రెండు చిరునామాలు చూడండి. మనం ఏమి చేయాలి? అవును? ప్రేక్షకులు: ద్వారా iterate స్ట్రింగ్ [వినబడని]. డేవిడ్ J. మలన్: అవును, లెట్స్ స్ట్రింగ్ ద్వారా iterate. లూప్, కొంత లూప్ ఒక ఉపయోగించవచ్చు లెట్, లేదా మీరు చాలా సౌకర్యంగా ఉన్నాము సంసార. మరియు మేము ఎక్కడో రెండు తీగలను పొందారు మెమరీలో, ఒకరి యొక్క చూద్దాం మొదటి పాత్ర, అప్పుడు ప్రతి రెండవ పాత్ర, అప్పుడు మూడవ మరియు నాల్గవ, మరియు ఐదవ మేము హిట్ వరకు ఏమి ప్రత్యేక కాపలాదారుడు విలువ? ప్రేక్షకులు: [వినబడని] డేవిడ్ J. మలన్: అవును, బాక్ స్లాష్ సున్నా గాని స్ట్రింగ్ లో పాయింట్ వద్ద మేము అంతే నిర్ణయించవచ్చు. మేము ప్రతి పాత్ర సరిపోలిన? లేకపోతే, తప్పుడు తిరిగి. అలా అయితే నిజమైన తిరిగి. అందువలన, ఏమి ఈ వెర్షన్ సరిగ్గా వార్తలు కార్యక్రమం సరిపోల్చండి 1.c చేస్తుంది. ఇది సమానంగా ఏమి మేము నేను చేసిన తప్ప సోమవారం చూశారు అయితే పదం స్ట్రింగ్ విమోచనం సంపాదించిన అన్ని ఎలాంటి క్రియాత్మక impact-- ఉంది నేను ఇప్పుడు ఏమి చేస్తున్నానో తీస్తూ కొన్ని దృశ్య శిక్షణ చక్రాలు, కానీ స్పష్టంగా చూడడానికి s మరియు t విలాసాలు. మరియు ఆ, ఏమి తార చుక్క, సూచిస్తుంది ఒక చిరునామా లేకపోతే అంటారు మరింత సాంకేతికంగా ఒక పాయింటర్ గా. అందుకే లు ప్రకటిస్తాయి లైన్ 9 మరియు చార్ * s చెప్పటానికి, నాకు ఒక స్ట్రింగ్ ఇవ్వాలని కాదు. నాకు దీని వేరియబుల్ ఇవ్వాలని అర్థం జీవితం లో ప్రయోజనం ఒక చిరునామా నిల్వ చేస్తారు. నేను ఉంచాలి గురించి am ఎందుకంటే అది ఒక స్ట్రింగ్ యొక్క చిరునామా. నిజానికి, GetString, అని స్పష్టమైన, ఒక స్ట్రింగ్ తిరిగి లేదు. ఇది తల్లి తిరిగి లేదు బాక్ స్లాష్ సున్నా, కేవలంగా. ప్రత్యేకంగా ఏమి GetString లేదు మరియు ఖచ్చితంగా తిరిగి? ప్రేక్షకులు: [వినబడని] డేవిడ్ J. మలన్: ఒక చిరునామా, మొదటి పాత్ర యొక్క చిరునామా కొన్ని స్ట్రింగ్ లో సంపాదించిన చేసింది. కాబట్టి ఇప్పుడు మేము చూసిన చేస్తున్నారు మళ్ళీ ఒక ప్రత్యేక కీవర్డ్. మరియు, నేను ఈ ముందు పేర్కొన్నట్లు. ఈ మంచి ఒడంబడిక ఉండాలి అన్నారు మేము ఇప్పుడు మళ్ళీ మళ్ళీ చూస్తారు. నేను నిర్ధారించుకోండి తనిఖీ చేస్తున్నాను లు శూన్య కాదు మరియు t శూన్య కాదు. నిజంగా నా ఆధారంగా ఎందుకంటే శీఘ్ర ప్రస్తావన ముందు, GetString లేదు తిరిగి ఉంటే కావచ్చు ఏమి ఒక చిరునామా కానీ మళ్ళీ ఇది N-U-L-L, కొన్ని ప్రత్యేక విలువ? ప్రేక్షకులు: లోపం. డేవిడ్ J. మలన్: ఇది ఒక లోపం. ఎక్కడో తేడ జరిగింది. మరియు సాధారణంగా ఏమి ముఖ్యంగా, జరిగే strings-- ఇది కావచ్చు advance-- తెలియని పొడవు బహుశా కంప్యూటర్లు ' మెమరీ, బహుశా మీరు ఒక లో టైప్ దీర్ఘ పదం లేదా వాక్యం లేదా అంత పెద్ద వ్యాసం అతికించారు కేవలం తగినంత మెమరీ ఉంది. అందువలన GetString తిరిగి కాదు మొత్తం విషయం యొక్క చిరునామా కాబట్టి అది కేవలం ఏమీ తిరిగి. మరియు అది ఒక లోపం జరిగింది చెప్పారు ప్రత్యేక శూన్య విలువను ఇచ్చారు. అది మాట్లాడటానికి, సున్నా చిరునామా ఉంది. ఇప్పుడు దాన్ని మారుతుంది సి వస్తుంది ఆ మళ్ళా చేసే ఫంక్షన్. మేము ఈ అమలు లేదు లూప్ లేదా కొంత లూప్ మేమే కోసం. మేము ఒక ఫంక్షన్ ఉపయోగించవచ్చు, క్లుప్తమైన అని, దీని comp కదిలించు, లేదా స్ట్రింగ్ సరిపోల్చండి జీవితం లో ప్రయోజనం ఖచ్చితంగా అలా ఉంది. మీరు ఇది రెండు పాయింటర్లు, రెండు చిరునామాలు ఇవ్వాలని, మరియు ఇది ఆ చిరునామాలను వెళతారు ఆపై లేఖ సరిపోల్చండి నాణ్యత కోసం అక్షరానికి లేఖ, నిజమైన ఏమిటి మాత్రమే ఆపటం? అకారణంగా comp కదిలించు వచ్చినపుడు కేవలం స్పష్టతను iterating ఉండాలి ఆపడానికి? అది ఒక బాక్ స్లాష్ 0 తగిలినప్పుడు గాని స్ట్రింగ్, ఆ సమయంలో అది నిర్ణయించవచ్చు ప్రతిదీ, సరిపోలిన లేదా ఒక వ్యత్యాసం ఉంది? మేము ఇప్పుడు ఈ అమలు మరియు కనుక, ప్రయత్నించండి మా చిన్న క్యాపిటలైజేషన్ గేమ్, కాబట్టి సరిపోల్చండి -1, ./compare-1 తయారు, మరియు చిన్న లో రెండు సార్లు తల్లి టైప్ చేయండి. ఇప్పుడు అదే విషయం. మరియు నేను మళ్ళీ దాన్ని చిన్న మరియు అప్పుడు బహుశా పెద్ద. ఇప్పుడు అది నిజంగా వేరుచేస్తుంది ఉన్నత మరియు చిన్నబడి మధ్య. కాబట్టి అన్ని ఆ కష్టం లేదా మాయా, కానీ అది ఇప్పుడు వివరించేందుకు లేదు ఏమి హుడ్ కింద జరగబోతోంది. కాబట్టి మనం గ్రహించలేని ఏమి పాఠం ఈ రకమైన నుండి? కాబట్టి యొక్క ఈ పరిశీలించి తెలియజేయండి. నేను ముందుకు వెళ్లి ఒక రాయాలో శీఘ్ర ప్రోగ్రామ్ ఇక్కడ కాపీని-0 అని. ఇప్పుడు యొక్క ముందుకు మరియు నిజానికి వీడలేదు , యొక్క నకలు 0 దీన్ని వీలు నేను ఇక్కడ మేం ఏమి పరిశీలించి. నేను మొదటి వినియోగదారు చెప్పడం, ఏదో చెప్పటానికి. అప్పుడు నేను ఒక స్ట్రింగ్ పొందండి మరియు నేను s లో నిల్వ. లు సమానం ఉంటే అప్పుడు నేను తనిఖీ NULL సమానం, కేవలం 1 తిరిగి. కాబట్టి ఈ కేవలం ప్రామాణిక లోపం తనిఖీని ఉంది. ఆసక్తికరంగా ఏమీ జరిగింది. నిజానికి, మేము తప్పు వదిలించుకోవటం అయితే తనిఖీ, ఈ వారం 1 కోడ్ కనిపిస్తోంది ఈ క్షణం లో. కానీ నేను ఒక పొందుటకు ప్రారంభించారు చేసిన గురించి మంచి కొద్దిగా. ఇప్పుడు లైన్ 16 లో, ఒక వారం క్రితం, బహుశా కూడా ఒక జంట రోజులు లేదా నిమిషాల క్రితం, మీరు లైన్ 16 అనవచ్చు ఒక వేరియబుల్ అని t సృష్టించడం మరియు కాపీ అది లోకి రాదు. మరియు ఒక సంపూర్ణ వార్తలు సహేతుకమైన takeaway. కానీ ఇప్పుడు మరింత ఖచ్చితమైన ఉండాలి. లైన్ 16 లో ఏం జరిగింది? ఏం కాపీ విధానం ఉంది కుడి నుండి ఎడమకు? అవును? ప్రేక్షకులు: t లు ఒక చిరునామా పెరిగిపోతుంది? డేవిడ్ J. మలన్: ఖచ్చితంగా t s యొక్క చిరునామా పెరిగిపోతుంది. నేను వెళ్ళి ఉంటే, ఇప్పుడు స్పష్టమైన ఉండాలి తిరిగి ముందు ఉదాహరణకు కు మరియు నేను నేను సైన్ టైప్ చేసిన విషయం డ్రా. నేను టైప్ చేసిన దానికి in-- ఇక్కడ లు, మరియు ఇక్కడ నేను ఎక్కడో టైప్ చేసిన ఏమి జ్ఞాపకశక్తి, తల్లి ఆపై ఒక బాక్ స్లాష్ నాకు జోడించారు ఆ 0. నేను ఇక్కడ నిల్వ గుర్తుకు ఈ నగర 1, 2, 3, 4 వద్ద ఉంది ఈ విధంగా ప్రస్తుతం ఏమిటి. లైన్ 16 న చేస్తే, నేను నాకు ఇవ్వాలని అంటున్నారు మరొక వేరియబుల్ అని t మరియు స్టోర్ లు విలువ వద్ద, ఏమి ఇక్కడ నిల్వఉంటోంది తల్లి కాదు రెడీ కానీ కేవలం సంఖ్య 1. మేము ఈ కార్యక్రమంలో ముందుకు చూస్తే ఇప్పుడు, ఏ జరిగే అవకాశముంది? సో అక్కడ గమనిస్తారు ఈ ఫంక్షన్ మీరు వాటిని సీజర్ కోసం కొంతకాలం క్రితం ఈ ఉపయోగించారు, లేదా విజెనెరే, లేదా ఉండవచ్చు కాదు వద్ద అన్ని. నేను ఉన్నాను, నా printf దావా కాపీని t పెట్టుబడిగా వెళుతున్నాను. మొదటి లైన్ 19, శీఘ్ర తెలివి లో , t యొక్క strlen తనిఖీలు పొడవును తనిఖీ. నేను అనుకుంటున్న ఎందుకంటే ఏదో చూపడంలో ప్రయత్నించండి ఒక వేళ ఏ తీగ ఉంది. యూజర్ కేవలం ఎంటర్ నొక్కండి చూపడంలో ఏమీ లేదు. కాబట్టి నేను లైన్ 21 చేయాలనుకుంటున్నారా లేదు. కాబట్టి లైన్ 21 కేంద్రీకరణ ఉంటుంది ఇది స్పష్టంగా లేఖ, T లో? ప్రేక్షకులు: m? డేవిడ్ J. మలన్: ఇది కనిపిస్తుంది వంటి అది కాపీ ఇది ఒకటి? ప్రేక్షకులు: m. డేవిడ్ J. మలన్: ఉహ్, m. సరే, మొదటి నాకు అలా నేను రెడీ గమనించవచ్చు ఎందుకంటే , toupper ప్రయాణిస్తున్న ఇది మీరు ఎప్పుడూ చూడలేదు ఉంటే అది కేవలం ఒక ఫంక్షన్ దాని ఇన్పుట్ వంటి పెట్టుబడి. t బ్రాకెట్ సున్నా ఇవ్వడానికి అర్థం నాకు t యొక్క సున్నా పాత్ర. కాబట్టి ఎలా ఈ చేస్తుంది చిత్రాన్ని మార్పు స్పష్టంగా ఉండాలి? ఏం తిరగరాశాడు లేదా మార్చుకోమని అవసరం లు గౌరవం మరియు t మరియు mom తో బాక్ స్లాష్ సున్నా. ప్రేక్షకులు: [వినబడని] డేవిడ్ J. మలన్: అవును, కాబట్టి ఈ ఒక ఇక్కడ కేవలం దీన్ని పరిష్కరించడానికి ఆలోచన మార్చుకోమని కావాలి ఒక రాజధాని m మార్చారు చేసుకోగా అవసరం. కానీ ఇప్పుడు, లో తర్వాత చూడండి ప్రోగ్రామ్ నేను ప్రింట్ ఉంటే నేను ఇక్కడ శుభ్రం గా s మరియు t, ఏమిటి చూడటానికి s మరియు t ముద్రించి జరిగే. కాబట్టి కాపీని -0, ./copy-0 చేస్తాయి. నాకు ముందుకు వెళ్లి టైప్ లెట్ అన్ని చిన్న లో తల్లి లో. గమనించండి అసలు మరియు రెండు కాపీని క్యాపిటల్స్ చేశారు. ఎందుకు? బాగా, s మరియు t రెండు సూచించే ఉంటాయి, మీరు రెడీ ఉంటే, మెమరీ అదే భాగం. మరియు స్పష్టముగా, ఈ పెరిగిపోతుంది నిజంగా నిజానికి uninteresting-- మేము ఇక్కడ చిరునామా సున్నా ఉపయోగించి చేస్తున్న. అంటే, నేను నిజంగా పట్టించుకోను పేరు stuff మెమరీలో ఉంది. క్షమించాలి నేను కొద్దిగా చాలా erasing చేస్తున్నాను. కానీ నేను నిజంగా పట్టించుకోను విషయాలు మెమరీ ఉన్నాయి. అందువలన, నిజానికి ఏమి ప్రోగ్రామర్లు గురించి అనుకుంటున్నాను ఉంటాయి మీరు మాట్లాడినప్పుడు ఉంది ఒక చిరునామా, లేదా ఒక పాయింటర్, అది మెమరీలో ఉన్న ఎవరు పట్టించుకుంటారు. అది వద్ద ఉంటే నేను పట్టించుకోను బైట్ ఒకటి లేదా ఒక బిలియన్. నేను ఈ పట్టించుకోను వేరియబుల్ సమర్థవంతంగా మెమరీ యొక్క భాగం వద్ద గురిపెట్టి. అందువలన, ఇకమీదట కాకుండా ఆక్షేపణ ఏకపక్ష మెమరీ చిరునామాలను పైగా, లెట్స్ కేవలం గమనికలు డ్రా ప్రారంభం బాణాలు వంటి గమనికలు, వంటి. సో మరియు t నిజంగా, ఏ S ఉన్నాయి ఈ కార్యక్రమం ప్రకారం, , నేను t రూపొందించినవారు ఎలా ఎందుకంటే ఇది కేవలం రెండు ప్రత్యేక వేరియబుల్స్ వార్తలు మెమరీ అదే భాగం వద్ద గురిపెట్టి. వారు ఎక్కడ మరియు మేము పట్టించుకోను. కాబట్టి మేము వియుక్త దూరంగా ఆ వివరాలు చెయ్యవచ్చు. కాబట్టి నేను ఈ పరిష్కరించాలి? నేను కాపీ యొక్క ఒక వెర్షన్ రాయడానికి మీరు అనుకుంటే కార్యక్రమం నిజానికి కాపీలు స్ట్రింగ్ మరియు మాత్రమే క్యాపిటల్ కాపీ, కేవలం intuitively, ఏమి సంపాదించి ఒక ఉండాలి మా పరిష్కారం పదార్థాలలో? ప్రేక్షకులు: [వినబడని] డేవిడ్ J. మలన్: మేము ఏమి చేయాలి? ప్రేక్షకులు: మెమరీ భాగం. డేవిడ్ J. మలన్: మేము అవసరం మెమరీ మరొక భాగం, కుడి? మేము తెలియదు ఎలా తప్పనిసరిగా, ఇంకా దీన్ని. కానీ నేను రకమైన జరిగే వరకు ఈ అవసరం ఆ తక్కువ కేసులో అసలు తల్లి మెమరీ ఆ అదనపు భాగం లో ముగుస్తుంది. ఆపై నేను కాపీ మారినప్పుడు, నేను ఇక్కడ ఈ కాపీని మార్చడానికి వద్దు. నేను బదులుగా మాత్రమే ఈ మార్చడానికి కావలసిన కాపీని తద్వారా అసలు మారదు. కాబట్టి, యొక్క మేము దీన్ని ఉండవచ్చు ఎలా చూద్దాం. నకలు-1, ఇప్పటికే కలిగి వ్యాఖ్య పగ్గాలు, కానీ ఆన్లైన్ వ్యాఖ్యానిస్తారు. మేము బదులుగా కింది ఈ చేయండి పంక్తులు సమానంగా ఉంటాయి, నాకు స్ట్రింగ్ పొందడానికి మరియు s కాల్. కానీ ఇప్పుడు యొక్క మా అత్యంత ఒకటి చూద్దాం క్లిష్టమైన కానీ సంక్లిష్టత గత అందాకా, లైన్ 16 సరిగ్గా ఈ చేస్తుంది. మీ comfy చేస్తే చిత్రాన్ని మేము కేవలం drew-- నన్ను మెమరీ కొత్త భాగం ఇవ్వాలని అది లోకి ప్రతిదీ కాపీ, యొక్క మేము కోడ్ అనువదిస్తుంది ఎలా చూద్దాం. కాబట్టి లైన్ 16, ఎడమ వైపు, చార్ * t ఇక్కడ పైగా నాకు ఈ బాక్స్ ఇస్తుంది. ఆ అది అంతే. కుడి వైపు, m alloc, లేదా malloc, సూపర్ ఫాన్సీ మెమరీ కేటాయింపు ఉంది కేవలం చెప్పడం ఒక నిగూఢ మార్గం నాకు మెమరీ భాగం ఇవ్వాలని. మేము ఎంత మెమరీ చేయాలి? Well, ఒక పెద్ద వ్యక్తీకరణ యొక్క రకం. కానీ యొక్క అది ఇక్కడ చెప్పే చూద్దాం. కాబట్టి ఈ, కోర్సు యొక్క, అందించగలరు నాకు స్ట్రింగ్ s యొక్క పొడవు. కాబట్టి, Mom ఉండాలి? కాబట్టి కేవలం మూడు, కుడి? తల్లి మూడు అక్షరాలు. మీరు లెక్కించబడవు బాక్ స్లాష్ సున్నా అయినపుడు అది ఒక స్ట్రింగ్ యొక్క పొడవు గురించి మాట్లాడటానికి నిజానికి మానవ కనిపించదు అక్షరాలు. సో mom, కాబట్టి ఈ 3 నాకు ఇస్తుంది. కానీ నేను ఇప్పుడు 1 జోడించడం నేను, ఒక నిమిషం ఆగండి. ఎందుకు నేను నిజానికి అనుకుంటున్నారు 4 బైట్లు మరియు కేవలం 3 కేటాయించాలని? అవును? ప్రేక్షకులు: కాపలాదారుడు విలువ? డేవిడ్ J. మలన్: ఖచ్చితంగా ఆ కాపలాదారుడు విలువ. బాక్ స్లాష్ సున్నా కోసం, నేను 4 బైట్లు మొత్తం అవసరం. నేను పొడవు అవసరం స్ట్రింగ్ ప్లస్ 1. ఆపై కేవలం మంచి measure-- కోసం కూడా ఈ వ్యవస్థ మీద అయితే, ఇది ఎల్లప్పుడూ నేను చెప్పడం నేను 1 కలిగి చేస్తాడు ఒక చార్ యొక్క పరిమాణం ద్వారా ఈ గుణిస్తారు. Sizeof అవుతుంది సి ఒక ఆపరేటర్లు ఆ కేవలం మీరు చెబుతుంది ఆ బైట్లు సంఖ్య ఒక నిర్దిష్ట డేటా రకం అవసరం. ఇది శ్రేణుల కోసం పని లేదు, సాధారణంగా, కొన్నిసార్లు అది. కానీ సాధారణ సందర్భంలో, ఏ. అనేక ఒక బైట్లు ఎలా కానీ అది చెప్పు హాజరవుతారు ఇది చార్, ఎల్లప్పుడూ 1 ఉంది. ఈ 1 గుణించడం వంటి ఉంది. కోడ్ యొక్క కాబట్టి సూపర్ గుప్తమైన చూస్తున్న లైన్. కానీ అది అన్ని ఇస్తుంది నాకు మెమరీ భాగం. కానీ అది కాపీ చేయడానికి అనిపించడం లేదు మెమరీ లోకి ఏదైనా? ఇంకా లేదు. కాబట్టి లైన్ 22 న నేను ఏమి, మరియు 23, 24, 25, బాగా, నేను కేవలం దీన్ని. మరియు ఈ విధమైన ఉంది ఇప్పుడు పాత పాఠశాల stuff. ఈ pset 2, ఎక్కడ వంటిది మీరు విషయాలు కదిలే చేస్తున్నారు చుట్టూ మెమరీ లో, లేదా బదులుగా తీగలను లో. నేను 0 నుండి iterating ఉన్నాను స్ట్రింగ్ s యొక్క పొడవు. నేను i-th పాత్ర అనుకరించటం చేస్తున్నాను t లో i-th పాత్ర లోకి s లో. మరియు నేను ఎందుకంటే, ప్రోగ్రామర్, చేసిన సరిగ్గా అనేక బైట్లు కేటాయించాలని ఖచ్చితంగా నేను అవసరం, అది పరిపూర్ణమైనది ఒకటి నుండి ఒకరికి సంబంధం. అండ్ ఐ Mom కాపీ క్రొత్త చిన్నబడి. మరియు తర్వాత చివరగా, నేను ఈ లైన్. కాబట్టి ప్రభావం మాత్రమే ఉంది ఇక్కడ ఈ t చూపడంలో. కాబట్టి చాలా గ్రహించడం, కానీ మీరు కేవలం పరిగణలోకి నిజంగా ఏమి జరగబోతోంది హుడ్ కింద కేవలం ఈ కదులుతున్న అన్ని ఆ, చుట్టూ బైట్లు ఈ సమస్య పరిష్కారానికి అవసరమైన కేవలం మాకు మెమరీ ఈ భాగం ఇవ్వాలని. ఇప్పుడు ప్రమాదం అధిక, నాకు తెలియజేయండి దాదాపు ఆ మరొక ఉదాహరణ ఈ ఒకదానికి మినహా ఒకేలా కోడ్ లైన్. కాబట్టి ఈ హ్యాకర్ వెర్షన్ ఈ కార్యక్రమం, మీరు రెడీ ఉంటే. కానీ యొక్క కేవలం పరిశుద్ధం వీలు అది జరగబోతోంది ఏమి లోకి. లైన్ 24 ఈ t ఉపయోగపడేది బ్రాకెట్ నేను s బ్రాకెట్ i పొందుతాడు. ఇప్పుడు, నేను ఈ మారుతున్న చేస్తున్నాను మరింత గుప్తమైన స్టార్ t ప్లస్ 1 స్టార్ లు ప్లస్ 1 సమానం. కాబట్టి ఏం ఎందుకు మేము ఒక స్టార్ పాత్ర కలిగి ఉంటాయి? మేము ముందు స్టార్ చూసిన చేసిన, మరియు ఇది భిన్నంగా ఇక్కడ ఉపయోగిస్తారు చేయబడిన. మేము గతంలో ఇప్పుడు నేను చూసిన వెబ్, చార్ * చూసింది ఒక ప్రారంభంలో స్టార్, మరియు ఆ సరే. అది మేము అవుతుంది ఎందుకంటే రకమైన కేవలం ప్రతిపాదించే చేయవచ్చు ఆ మొదటి నుండి సిద్ధాంతాలపై జరగబోతోంది. కాబట్టి కేవలం స్పష్టతను, s ఏమిటి? గత వారం, అది స్ట్రింగ్ ఉంది. ఇకపై తగినంత లేదు. ప్రత్యేకంగా, s ఏమిటి? ప్రేక్షకులు: [వినబడని] డేవిడ్ J. మలన్: ఇది ఒక పాయింటర్ ఉంది. ఇది యొక్క చిరునామా మొదటి పాత్ర మనం టైప్. సరే, t ఏమిటి? ప్రేక్షకులు: [వినబడని] డేవిడ్ J. మలన్: మొదటి బైట్ యొక్క చిరునామా t లో, ఆ భాగం మెమరీ పంపిణీ. కాబట్టి ఆ బయటకు వస్తాడు మేము స్ట్రింగ్ న 0 నుండి iterate పొడవు మొదటి అన్ని యొక్క, నేను ఎందుకంటే, 0 వద్ద మొదలవుతుంది లూప్ విషయం ఈ పాత పాఠశాల. కాబట్టి కేవలం సరళత కోసం, లెట్స్ కోడ్ యొక్క మొదటి లైన్ ఊహించుకోవటం నిజంగా కేవలం ఈ హక్కు. నేను సున్నా జోడించడం సున్నా అయితే ఏదో బహుశా అది ప్రభావం చూపడానికి వెళ్ళడం లేదు. కాబట్టి ఈ నానుడి ఏమిటి? ఇది స్టార్ హాజరవుతారు ఈ సందర్భంలో ఆపరేటర్లు dereference ఉంది కేవలం ఇది ఆపరేటర్లు, వెళ్ళి చెప్పడం ఒక ఫాన్సీ మార్గం క్రింది చిరునామాకు. కాబట్టి s ఉంటే మొదటి యొక్క చిరునామా మెమరీ ఈ భాగం లో పాత్ర, * S అంటే అక్కడ వెళ్ళండి. మరియు మేము డ్రా చేసిన ఎందుకంటే ఈ విధంగా చిత్రాన్ని, మీరు పాటించేలా చేయవచ్చు మానసిక మోడల్ క్రింది. ఈ లు, మరియు మీరు * s, * s చెప్పుకోవాలంటే రకమైన చూట్స్ మరియు నిచ్చెనల వంటి, మీరు చిన్ననాటి నుండి గుర్తు ఉంటే, ఆ బాణం అనుసరించండి మరియు వంటిది చిరునామాకు. * t అదే విషయం. కాబట్టి ఇక్కడ ప్రారంభించండి, దాని భాగం వెళ్ళండి. నేను న డ్రా కాదు ఈ తెర విధంగా. * t ఇక్కడ వెళ్ళడానికి అర్థం. ఆపై, లూప్ కేవలం ఇక్కడ ఈ పాత్ర తరలించడానికి మాట్లాడుతూ ఇక్కడ ఈ పాత్ర తరలించడానికి, ఇక్కడ ఈ పాత్ర తరలించడానికి. కానీ ఎలా నేను incrementation చేస్తారు? నేను కేవలం తొలగించారు ఏమి దిద్దుబాటు రద్దుచెయ్యి అవసరం. ఈ సాధారణంగా అని ఏమిటి అంక గణితానికి ఇది చిరునామాలతో గణిత అర్థం. లేకపోతే, ఈ లూప్, నేను పెంచడం ఉంచడానికి మరియు s ఒక చిరునామా మరియు t ఒక ఉంది చిరునామా, నేను కేవలం 1 జోడించడం ఉంచుకుంటే, కేవలం ముందుకు కదిలే ఉంచేందుకు అర్థం, మరియు ముందుకు, మరియు మెమరీలో ముందుకు. ఇది ఆక్స్ఫోర్డ్ స్ట్రీట్ వంటిది, CS భవనం అని వీధి. CS భవనాలు 33 ఆక్స్ఫోర్డ్ స్ట్రీట్ వద్ద ఉంది. కాబట్టి మీరు 33 ఏమి ఉన్నాయి ఆక్స్ఫోర్డ్ స్ట్రీట్ ప్లస్ 1, 34 ఆక్స్ఫర్డ్ మిమ్మల్ని తెస్తుంది స్ట్రీట్, తరువాత 35 ఆక్స్ఫోర్డ్ స్ట్రీట్, అప్పుడు 36 ఆక్స్ఫోర్డ్ స్ట్రీట్, సంసార ఆ భవనాలు ఉన్నాయి - వారు ఉనికిలో ఉంటే. కాబట్టి, ఆ మేము చేస్తున్న అన్ని వార్తలు ఇక్కడ అంక గణితానికి తో. కనుక ఇది ఒక సూపర్ రహస్య మార్గం యొక్క మేమే వ్యక్తపరిచే. కానీ అన్ని జరుగుతున్నది ఆ హుడ్ కింద కేవలం ఈ చిరునామాలకు అనుసరిస్తున్నారు, ఒక చిహ్నం క్రింది వంటి, మీరు రెడీ ఉంటే, లేదా వంటి బాణాలు తరువాత మేము తెరపై డ్రా చేసిన. సరే, చాలా జీర్ణమై. వాక్యనిర్మాణం ఏ ప్రశ్న, భావనలు గమనికలు, malloc, లేదా ఇష్టపడుతున్నారు. అవును, ఇక్కడ పైగా మొదటి. ప్రేక్షకులు: సో ఆ , * t toupper * t సమానం చెప్పారు పెట్టుబడిగా వెళుతున్నాను అని అన్ని అక్షరాలు లేదా కేవలం డేవిడ్ J. మలన్: Ah, నిజంగా మంచి ప్రశ్న. ఇక్కడ ఈ లైన్ లో, 31, ఈ చూపడంలో అన్నారు మొదటి అక్షరం లేదా అక్షరాల యొక్క అన్ని. కాబట్టి యొక్క వెళ్ళడం ద్వారా ఆ సమాధానం తెలియజేయండి తిరిగి మొదటి సూత్రాలను. మరియు ఇక్కడ మొదటి సూత్రాలు నా ఉద్దేశ్యం కేవలం ప్రాథమిక నిర్వచనాలు వెళ్ళండి ప్రమేయం ఏమి యొక్క. కాబట్టి toupper ఒక ఫంక్షన్ ఒక చార్ క్యాపిటల్. అంతే. * t మొదటి చూసేలా వెళ్ళండి అర్థం t లో చిరునామా వెళ్ళండి. కాబట్టి, చిత్రాన్ని, ఈ భాగం ఉంది మెమరీ మేము malloc తో కేటాయించింది, మరియు ఈ T * t అంటే ఇక్కడకి, ఉంది. ఇంతలో, మీరు ఒక ప్రయాణిస్తున్న చేస్తున్నారు ఆ విలువ, చిన్న m toupper, మీరు తిరిగి పొందడానికి రాజధాని M, మీరు ఎక్కడ అది పెట్టటం ఉంటాయి? మీరు అదే స్థానం లో ఉంచడం చేస్తున్నారు. కాబట్టి ఆ తర్కం ద్వారా ప్రాథమిక నిర్వచనాలు మాత్రమే ఇది మొదటి అక్షరం క్యాపిటల్స్ మీరు i లేదా ఒక తో iterate తప్ప లూప్ లేదా కొంత లూప్, అది మాత్రం కాదు మీరు అడగండి కంటే ఎక్కువ ఏదైనా చేయాలని. మంచి ప్రశ్న. అవును? ప్రేక్షకులు: ఎందుకు మీరు వుపయోగించాలని పద్ధతి కాకుండా dereference అర్రే? డేవిడ్ J. మలన్: Ah, మంచి ప్రశ్న. ఎందుకు మీరు dereference వుపయోగించాలి బదులుగా శ్రేణి పద్ధతి యొక్క పద్ధతి? ఎటువంటి కారణం, నిజాయితీ ఉండాలి. మరియు, నిజానికి, ఈ కోసం ఉదాహరణకు రకం, కుడి, నేను కేవలం మేకింగ్ వాదిస్తూ వెబ్ మరింత క్లిష్టమైన కార్యక్రమం, మరింత కళ్లు, పైగా దిద్దక ఉంటాయి ప్రజలు తనిఖీ చేస్తారు ఈ సూపర్ మర్మమైన కనిపిస్తోంది ఎందుకంటే కూడా అదే విషయం ఏమి అయితే. కాబట్టి, స్పష్టముగా, ఈ ఒక అనవసరంగా దృశ్య క్లిష్టమైన పరిష్కారం సమస్యకు. ఇది ఇప్పటికీ మంచి డిజైన్ ఐదు డిజైన్ కోసం ఐదు నుండి, ఇది బ్రాకెట్ లో అయినా సంజ్ఞామానం లేదా పాయింటర్ నొటేషన్. మేము పొందుటకు ముఖ్యంగా కానీ ఆ తరువాత కోర్సు లో pset 5 లో మేము నిఘంటువులో అమలు చేసినప్పుడు ఆ నేను సార్లు పునరావృతం జంట పేర్కొన్నారు చేసిన మేము నిజానికి పట్టించుకోనట్లు చేస్తాము తక్కువ స్థాయి మెమరీ చిరునామాలను మేము నిజంగా అర్థం ఆ ఏం జరుగుతోంది. కానీ, ఇప్పుడు కోసం, ఈ హాజరవుతారు కోడ్ ఇక్కడ చదరపు బ్రాకెట్లలో లైన్ నిజంగా ఉనికిలో లేదు. వారు అని ఏమి ఉన్నాయి వాక్యనిర్మాణ చక్కెర, ఇది చెప్పడం కేవలం ఒక weirdly చల్లని మార్గం కంపైలర్ చదరపు బ్రాకెట్లలో ఉండాలి మారుస్తుంది గణిత వ్యక్తీకరణ. కనుక ఇది ఒక మానవ కన్వెన్షన్ వార్తలు కేవలం రాయడానికి చేయగలరు ఈ చాలా యూజర్ ఫ్రెండ్లీ బ్రాకెట్లలో. కానీ కంపైలర్, గణగణమని ద్వని చేయు, నిజంగా ఏ సమయంలో చేస్తోంది మీరు లైన్ లో హైలైట్ లో ఏమి రాయడానికి 24, హుడ్ కింద అది నిజంగా ఈ మారుస్తారు. ఇది ఒక మానవ అంతే మరింత ఆహ్లాదకరమైన వార్తలు చదివి లైన్ 24 వంటి కోడ్ రాయడానికి. కానీ చివరికి ఆ శిక్షణ చక్రాలు చాలా జరుగుట ఒకరి స్వంత సౌకర్యం బలమైన గెట్స్ ఉన్నప్పుడు. All right, కాబట్టి ఆ ఈ గుర్తు అతిపెద్ద సమస్య యొక్క విధమైన ఉంది మేము కూరుకుపోయింది. మరియు ఆ, ఈ మొత్తం లేవనెత్తింది ఏమిటి గమనికలు గురించి తిట్టు సంభాషణ, మరియు చిరునామాలు, మరియు కాపీ విషయాలు. మేము జారారు ఎందుకంటే ఇది ఉంది ఈ స్టుపిడ్, తెలివితక్కువదని సమస్య, అనగా నేను లారెన్ తో logically-- అమలు ఇక్కడ డెమో మరియు నారింజ రసం లో milk-- లో ఒక సంపూర్ణ సమస్య పరిష్కారానికి ఉపయోగించే సరైన ఫంక్షన్ రెండు వేరియబుల్స్ 'ఇచ్చిపుచ్చుకోవడం కోసం విలువలు, కానీ తిట్టు విషయం ఏ నిరంతర కలిగి, లేదా లేదు నా కోడ్ శాశ్వత ప్రభావం. ఎందుకు ఉంది? క్లుప్తంగా, ఎందుకు ఈ ఉంది స్వాప్ అమలు తార్కికంగా సరైన, కానీ ఎలాంటి ప్రభావం ఉంది దానికి జారీ ఆ అంశాలపై, ప్రధాన x మరియు y వంటి? సమస్య యొక్క సారాంశం ఏమిటి? అవును? ప్రేక్షకులు: వేరియబుల్ చేసిన కారణంగా పాస్ లో వేరియబుల్ యొక్క కాపీలు ఫంక్షన్ ద్వారా. డేవిడ్ J. మలన్: ఖచ్చితంగా, మీరు అది పాస్ ఒక ఫంక్షన్ వేరియబుల్స్, లేదా వాదనలు ఒక ఫంక్షన్ లో, వారు కాపీని ద్వారా యిచ్చిన మీరు చూస్తున్న ఒక ఏకరూప పొందండి అర్థం x మరియు y రెండు కోసం బిట్స్ నమూనా, a మరియు b ఇక్కడ అని. మరియు మీరు ఏదైనా చేయవచ్చు మీరు ఆ కాపీలు కావలసిన కానీ వారు ఏ చూడాలని కాలింగ్ ఫంక్షన్ ప్రభావితం. మరియు, నిజానికి, మేము ఆ ఆకర్షించింది స్క్రీన్, రీకాల్ న చిత్రాన్ని చివరిసారి, అనగా మీరు ఉంటే నిజంగా ఏమి గురించి ఆలోచించడం ఉంటే hood-- కింద జరగబోతోంది ఈ మీ కంప్యూటర్ యొక్క మెమరీ ఉంది మరియు ఇక్కడ డౌన్ యొక్క భాగం ఉంది జ్ఞాపకశక్తి, ప్రధాన కొరకు వాడబడుతుంది ఈ భాగం ఉంది జ్ఞాపకశక్తి, స్వాప్ కొరకు వాడబడుతుంది అందువలన కూడా ప్రధాన ఉంది రెండు వేరియబుల్స్ x మరియు y, స్వాప్ ఒకేలా చూడటం ఉండవచ్చు 1 మరియు 2 రెండూ విలువలు కానీ వారు పూర్తిగా ఉన్నాము మెమరీ వివిధ భాగాలుగా. కాబట్టి మేము ఈ ఒక పరిష్కారం అవసరం. మరియు స్పష్టముగా, అది ఇప్పుడు మేము ఆ అగుపిస్తుంది కుడి, ఈ సమస్యకు ఒక పరిష్కారం కలిగి. మేము ఇప్పుడు సామర్థ్యం కలిగి ఉంటే చిరునామాల ద్వారా విషయాలు సర్దుబాటు మరియు విధమైన చూట్స్ మరియు నిచ్చెనల శైలి, ఈ బాణాలు అనుసరించండి మరియు మేము మీరు ఎక్కడైనా వెళ్లి మెమరీ లో, మేము చేయలేని ద్వారా ఈ సమస్య పరిష్కారం ప్రధాన నుండి ప్రయాణిస్తున్న మారడానికి కాదు విలువలు మేము కావలసిన స్వాప్, కానీ కేవలం intuitively మనం దానికి బదులుగా మారడానికి మోపుతారు? [వాయిసెస్ INTERPOSING] డేవిడ్ J. మలన్: ఎందుకు మేము కేవలం లేదు కుడి, చిరునామాలు పాస్? ఎందుకు మేము స్వాప్ ఇవ్వాలని లేదు నిధి మ్యాప్, మీరు రెడీ ఉంటే, ఆ దానిని దారితీస్తుంది అసలైన విలువలు x మరియు y. లెట్ యొక్క స్వాప్, నిజానికి మార్చడానికి ఆ అసలు బిట్స్ కాకుండా కేవలం బిట్స్ కాపీలు ప్రయాణిస్తున్న. అందువలన, నిజానికి, ఆ ఏముంది వార్తలు అన్నారు పరిష్కారం. ఈ వెర్షన్ ఇక్కడ ఉంది స్పష్టంగా చెడు మరియు దోషపూరిత. మరియు ఇప్పుడు, మొదటి చూపులో, అది కేవలం కనిపిస్తోంది వంటి మనం యాదృచ్చికంగా నక్షత్రాలు కొంత జోడించారు మరియు మా వేళ్లు దాటింది అది కంపైల్ అని. కానీ, అది ఇప్పుడు కంపైల్. కానీ ఈ విషయాలు అర్థం ఏమి చూద్దాం. మరియు, దురదృష్టవశాత్తు, రచయితలు సి మరొక చిహ్నం ఎంచుకున్న కాలేదు ఈ ఒక చిన్న చేయడానికి స్వచ్చమైన, కానీ స్టార్ ఆపరేటర్లు వివిధ అర్ధాన్ని కలిగి ఉంది రెండు వేర్వేరు సందర్భాలలో. మరియు మేము రెండు చూసిన, కానీ యొక్క విభజన చేసుకుందాం. , అక్కడ టాప్ వద్ద కనుక నేను ఒక అండ్ బి మార్చబడ్డాయి చెడు లో Int యొక్క నుండి వెర్షన్ నక్షత్రాలు, a మరియు b, Int గతంలో, పూర్ణ ఉన్నాయి. ఇప్పుడు ఒక అండ్ బి ఏమిటి మంచి, ఆకుపచ్చ వెర్షన్? వారు చిరునామాలు ఉన్నారు. ఏమి చిరునామాలకు స్పష్టమైన ఉండాలి? పూర్ణాంకాల చిరునామాలు. నేను ఉన్నాను అని నిజానికి చాలా పూర్ణాంకానికి స్టార్ అంటే చెప్పడం ఈ యొక్క చిరునామా పూర్ణాంకం, ప్రత్యేకంగా. కాబట్టి ఇప్పుడు కోడ్ రేఖలు గమనించి, ఏదో చాలా మార్చబడింది. tmp ఎందుకంటే, అదే ఉంటాయి అది కేవలం తాత్కాలిక పూర్ణాంక, అక్కడ ఏ మెమరీ మేజిక్. కానీ ఇప్పుడు ఒక స్టార్ అవసరం. మరియు, నిజానికి, ప్రతి a మరియు b ఇతర ప్రస్తావించి అన్ని గమనిస్తారు ఆకుపచ్చ ఎరుపు నుండి మారుతున్న నేను ముందు చేస్తున్నాను అని నక్షత్రాలు తో ఆ వేరియబుల్స్. నేను ఒక అండ్ బి కాపీ అనుకుంటున్నారా లేదు ఎందుకంటే. ఎందుకంటే నేను కేవలం ఒక అండ్ బి మరియు స్వాప్ కాపీ ఉంటే a మరియు b, నేను నిజానికి ఏమి ఇచ్చిపుచ్చుకోవడంతో am? జస్ట్ చిరునామాలు, నేను మారడానికి కావలసిన ఏమి ఆ చిరునామాలను వద్ద ఉంది. నేను అక్కడ వెళ్లాలనుకుంటే. అందువలన స్టార్ ఆపరేటర్లు నా ఫంక్షన్ యొక్క లోపల, లేదు పారామితి జాబితా లోపల, మీరు ఆ చిరునామాలు వెళ్ళండి అర్థం మరియు నిజానికి ఆ విలువలు మార్చడానికి. సో వాట్ చిత్రాన్ని చేస్తుంది ఇప్పుడు బదులుగా కనిపిస్తుంది. Well, బదులుగా ఉంటే నేను ప్రయాణిస్తున్న నేను ఒక కోసం మరియు కాదు 1 మరియు B 2-- నేను నిజానికి జోడించడానికి అవసరం ఇక్కడ మరొక నిర్వచనం. కాబట్టి ఈ భాగం ఊహించు మెమరీ స్థానాన్ని 10 వద్ద ఉంది. ఈ స్థానం 11 వద్ద ఉంది, కానీ ఈ ఒక సాధారణీకరణ ఒక బిట్, నేను ఇప్పుడు x రెండు ఎంపికలు నేను పాస్ చేయండి మరియు y లేదా నేను వారి చిరునామాలు పాస్ చెయ్యాలి? నేను వారి చిరునామాలు పాస్ ఉంటే ఈ వంటి, నేను ఇప్పుడు అమలు చేయాలి ఆకుపచ్చ కోడ్ శాతం స్వాప్ అది చూసినపుడు కాబట్టి ఒక మరియు అది బి, అది కేవలం ఒక అండ్ బి కాపీ లేదు చూస్తాడు మరియు పాలు మరియు నారింజ రసం తరలించడానికి. పాలు మరియు నారింజ రసం రూపకం ఇప్పుడు విచ్ఛిన్నం ఎందుకంటే ఆ కప్పులు ఉన్నాయి ద్రవ మరియు కాని పటాల. మేము బదులుగా వెళ్లాలి 10 మరియు మేము పరిష్కరించడానికి 11 పరిష్కరించడానికి వెళ్ళడానికి అవసరం, మరియు ఆ ఇచ్చిపుచ్చుకోవడంతో తర్కం నిర్వహించడానికి. కాబట్టి తర్కం అదే కానీ మేము కొంచెం మార్గం అవసరం ఆ వేరియబుల్స్ యాక్సెస్. కాబట్టి చివరికి ఏమి కార్యక్రమం ఈ లాగా ఉంది. Swap.c అక్షరాలా అనుకరించారని మరియు ఆకుపచ్చ వెర్షన్ అతికించారు. కానీ నేను ఒక మార్పు అవసరం. ఇది కేవలం స్వాప్ మార్చడానికి తగినంత కాదు. ఏం కోడ్ ఇతర లైన్ నేను మార్చడానికి అవసరం? అవును? ప్రేక్షకులు: ఇది వాదనలు పడుతుంది ఎక్కడ. డేవిడ్ J. మలన్: ఎక్కడ దాని వాదన పడుతుంది. నేను ప్రధాన వరకు స్క్రోల్ ఉంటే, నేను కేవలం x మరియు y లో పాస్ కాదు మరియు, నేను గత వాగ్దానం కొత్త వాక్యనిర్మాణం యొక్క ముక్క నేడు. నేను x లో పాస్ అవసరం మరియు y, x మరియు y యొక్క చిరునామా. మరియు అది, చిహ్నం అవుతుంది సి రచయితలు యెంచుకొనిన మీరు ఇక్కడ ఒక ఆంపర్సండ్ చిహ్నం ఉపయోగిస్తే లేదు, ఉంది bitwise ఆంపర్సండ్ చిహ్నం తో అయోమయం మీరు ఒక ఆంపర్సండ్ చిహ్నం ఉపయోగిస్తే ఇక్కడ మరియు ఇక్కడ ఒక ఆంపర్సండ్ చిహ్నం, ఈ మీరు కోసం వ్యక్తులుగా x యొక్క చిరునామా ఏమిటి, దీనికి 10, ఏమిటి y యొక్క చిరునామా, దీనికి ఉంది 11, మరియు బదులుగా ఆ వెళుతుంది. కాబట్టి చాలా ఒకేసారి అన్ని శోషించడానికి. కానీ యొక్క త్వరగా చూద్దాము ఇప్పుడు మా మిగిలిన నాలుగు నిమిషాల ఇక్కడ విషయాలు వంకరైన వెళ్ళే. మరియు జనాంతికంగా, నిజానికి నేను ఈ చిత్రాన్ని పట్టింది, TF ఒక సంవత్సరం లేదా రెండు క్రితం ఈ చిత్రాన్ని పట్టింది. కాబట్టి ఈ తిరిగి మూలలో ఉంది ఇలియట్ డైనింగ్ హాల్. గమనికలు బహుశా కష్టతరమైన మేము CS50 లో కవర్ ఆ విషయం. మీరు విధమైన ఆందోళన చేస్తే దీనికి ఉంది వంటి వాలు ఉంది ఒక హాకీ స్టిక్ మరింత ఈ వంటి, తెలుసుకోవటం మేము రకమైన కొన దగ్గరపడింది చేస్తున్నారు సంభావిత సంక్లిష్టత పరంగా. నేను ఈ తీసుకుని ఫోటో, నేను ప్రమాణం ఎందుకంటే పతనం 1996 లో దేవుడు, ఎప్పుడు నేను పట్టింది నా టీచింగ్ తోటి CS50, నిషాత్ మెహతా అతను నన్ను కూర్చుని ఓవర్ లంచ్ ఎలియట్ D. హాల్ మూలలో, లేదా విందు, లేదా ఏదో ప్రయత్నించండి నాకు గమనికలు అర్థం సహాయం. నేను వారాల తర్వాత అక్కడ ఈ ఉంది ఉపన్యాసంలో ఉన్నప్పుడు పరిచయం చేయబడింది నేను చివరకు గమనికలు అర్థం. మరియు నేను ఈ ఆశాభావం ఉన్నాను చాలా త్వరగా మీరు క్లిక్ కనిపిస్తుంది. కానీ ఖచ్చితంగా మధ్య గ్రహించాను మరింత అధునాతన విషయాలు మేము చూసాము చేసిన. కానీ అది చాలా శక్తివంతమైన వాటిలో ఉంది. మీరు పొందుటకు ఉన్నప్పుడు, అది నిజంగా అన్ని వార్తలు కేవలం చివరకు కలిసి వచ్చి వెళ్ళడం. సో మిగిలిన అది కాదు హామీ నేడు అన్ని కాగా అవసరం. సో ఇక్కడ గత కార్యక్రమం మేము చూడండి చూడాలని. మరియు మేము ఒక తో వదులుకోవడానికి వెళుతున్న క్లేమాషన్గా సత్వర మూడు నిమిషాలు మా స్నేహితుడు, నిక్ Parlante చేసిన. ఇక్కడ ఒక కార్యక్రమం పైన రెండు ఆ, పంక్తులు ఒక వేరియబుల్ x మరియు y ప్రకటించాడు. ఇవి రెండూ విలాసాలు పూర్ణాంకాల, AKA గమనికలు. మేము అప్పుడు తగినంత కేటాయించాలని మెమరీ ఒక Int నిల్వ మరియు చిరునామా నిల్వ x లో మెమరీ. కాబట్టి, అది కూడా సరళంగా వార్తలు ముందు ఉదాహరణ కంటే. నన్ను మెమరీ నాలుగు బైట్లు ఇవ్వండి ఒక పూర్ణాంకానికి యొక్క పరిమాణం, మరియు x ఆ చిరునామా చాలు. ఈ లైన్ ఇక్కడ అర్థం x లో చిరునామా వెళ్ళండి మరియు అర్దానైనా జీవితం, అక్కడ సంఖ్య 42. కానీ ఈ లైన్ నాకు ఆందోళనలతోపాటు. Y y లో చిరునామా వెళ్ళండి స్టార్ అర్థం, మరియు అక్కడ దురదృష్ట సంఖ్య 13 చాలు. ఎందుకు ఈ సమయంలో, అది ప్రమాదకరం story-- అయితే వేగంగా చెప్పారు మా క్షీణిస్తుంది నిమిషాల్లో ఇక్కడ ఎందుకు అది చెడ్డ నాకు సే y లో చిరునామా వెళ్ళండి? ప్రేక్షకులు: మీరు లేదు [వినబడని]. డేవిడ్ J. మలన్: నేను చెయ్యలేదు y ఏదైనా చాలు. సో y యొక్క విలువ ఏమిటి, కథ ఈ సమయంలో? మేము ఏ ఆలోచన ఉంది. ఇది కొన్ని చెత్త విలువ మరియు లేదా Binky తెలుసు. మేము ఈ సూచన అంతం కాలేదు. [వీడియో ప్లేబ్యాక్] -Hey, Binky, మేల్కొలపడానికి. ఇది పాయింటర్ వినోదం కోసం సమయం. ఆ -What వార్తలు? గమనికలు గురించి తెలుసుకోండి? ఓహ్, అమ్మ. బాగా ప్రారంభించడానికి, నేను మేము ఉన్నాము అంచనా ఒక జంట గమనికలు అవసరం వెళుతున్న. -అలాగే. ఈ కోడ్ రెండు పాయింటర్లు కేటాయిస్తాడు ఇది పూర్ణాంకాల లను సూచిస్తుంది. -OK, అలాగే నేను చూడండి రెండు పాయింటర్లు, కానీ వారు ఏదైనా సూచించే అనిపించడం లేదు. -ఆ సరియే. మొదట్లో గమనికలు ఏదైనా సూచించడానికి లేదు. వారు పాయింటు విషయాలు pointees అని మరియు వాటిని ఏర్పాటు ఒక ప్రత్యేక అడుగు. కుడి, కుడి, -ఓహ్. నేను తెలుసు. Pointees ప్రత్యేక ఉన్నాయి. సో ఎలా మీరు ఒక pointee కేటాయించుటకు లేదు? -OK, బాగా ఈ కోడ్ కేటాయించుకునే ఒక కొత్త పూర్ణాంక pointee, మరియు ఈ భాగం x అమర్చుతుంది దానికి మార్చాలి. -Hey, ఆ మంచి కనిపిస్తోంది. కనుక ఇది ఏదో తయారు. -OK, నేను చేస్తాము పాయింట్లు x dereference దాని pointee లోకి సంఖ్య 42 నిల్వ. ఈ ట్రిక్ కోసం, నేను చెయ్యాలి నా dereferencing యొక్క మేజిక్ మంత్రదండం. Dereferencing యొక్క -మీ మేజిక్ మంత్రదండం? ఊ, ఆ, ఆ గొప్ప. -ఈ కోడ్ కనిపిస్తుంది ఏమిటి. నేను అనేక ఏర్పాటు చేస్తాము and-- [పాప్ ధ్వని] -Hey, చేజారిపోతుంది అక్కడ చూడండి. కాబట్టి, x ఒక dereference చేయడం అనుసరిస్తుంది బాణం దాని pointee ప్రాప్తి చేయడానికి. ఈ సందర్భంలో, అక్కడ 42 నిల్వ. హే, సంఖ్య నిల్వ దానిని ఉపయోగించి ప్రయత్నించండి ఇతర పాయింటర్ ద్వారా 13, y. -అలాగే. నేను వై ఇక్కడ పైగా వెళ్తారో, సంఖ్య 13 సెట్ అప్ పొందుటకు. ఆపై యొక్క మంత్ర పడుతుంది dereferencing మరియు కేవలం [బజర్ SOUND] -ఓహ్, హే పని చేయలేదు. Binky, ఊ, నాదగ్గర, సే dereferencing అనుకుంటున్నాను సెట్ ఎందుకంటే y ఒక మంచి ఆలోచన pointee అప్ ఒక ప్రత్యేక అడుగు. మరియు మనం ఎప్పుడూ చేసియున్నారు భావించడం లేదు. -Hmm, మంచి పాయింట్. అవును, మేము పాయింటర్, Y కేటాయించింది, కానీ మేము ఒక pointee సూచించడానికి సెట్ ఎప్పుడూ. -Hmm, చాలా గమనించే. -Hey, మీరు అక్కడ మంచి, Binky చూస్తున్నారా. మీరు దాన్ని పరిష్కరించడానికి చేయవచ్చు y పాయింట్లు x అదే pointee కు. -Sure, నేను నా మేజిక్ మంత్రదండం ఉపయోగించడానికి పాయింటర్ అప్పగించిన. ఒక అవతరిస్తుంది గలవాడు సమస్య, ముందు వంటి? -కాదు, ఈ pointees టచ్ లేదు. ఇది కేవలం ఒక పాయింటర్ మారుస్తుంది అదే విషయం సూచించడానికి [ధ్వని పాపింగ్] మరొక --as. -అవునా అలాగా. X అదే స్థానంలో ఇప్పుడు వై పాయింట్లు. కాబట్టి, ఇప్పుడు వై పరిష్కరించబడింది, వేచి. ఇది ఒక pointee ఉంది. కాబట్టి మీరు మంత్రదండం ప్రయత్నించవచ్చు 13 కి పైగా పంపడానికి మళ్ళీ dereferencing. -ఓహ్, OK, ఇక్కడ వెళ్తాడు. -Hey, ఆ చూడండి. ఇప్పుడు వై రచనలతో dereferencing. మరియు గమనికలు భాగస్వామ్యం ఎందుకంటే ఒక pointee, వారు రెండు 13 చూడండి. అవును, భాగస్వామ్యం, ఊ, సంసార. కాబట్టి, మేము ఇప్పుడు ప్రదేశాలు మారడానికి వెళ్తున్నారు? -ఓహ్, మేము సమయం లేదు చూడండి. -But-- మూడు గుర్తు పాయింటర్ నియమాలు -Just. సంఖ్య 1, ప్రాథమిక నిర్మాణాన్ని మీరు ఒక పాయింటర్ కలిగి ఉంది, మరియు అది ఒక pointee కు చూపాడు. కానీ పాయింటర్ మరియు pointee ప్రత్యేక ఉన్నాయి. మరియు సాధారణ లోపం ఒక పాయింటర్ ఏర్పాటు ఉంది కానీ అది ఒక pointee ఇవ్వాలని మర్చిపోతే. సంఖ్య 2, పాయింటర్ dereferencing పాయింటర్ మొదలవుతుంది మరియు క్రింది దాని బాణం దాని pointee యాక్సెస్. మేము అన్ని తెలిసిన, ఈ మాత్రమే అక్కడ ఉంటే పనిచేస్తుంది రకమైన తిరిగి తీసుకుంటున్న ఒక pointee, ఉంది సంఖ్య 1 పాలించారు. సంఖ్య 3, పాయింటర్ అప్పగించిన పడుతుంది ఒక పాయింటర్ మరియు సూచించడానికి మార్చుకుంటారు మరొక పాయింటర్ అదే pointee. అప్పగించిన తర్వాత కాబట్టి, రెండు పాయింటర్లు అదే pointee పాయింటు, కొన్నిసార్లు భాగస్వామ్య అని. మరియు ఆ నిజంగా, ఇది ఉంది అంతే. బై-బై ఇప్పుడు. [END ప్లేబ్యాక్] డేవిడ్ J. మలన్: ఆ CS50 కోసం ఇది. ప్రొఫెసర్ నిక్ Parlante ధన్యవాదాలు. వచ్చే వారం మీరు చూస్తారు. [ఎలక్ట్రానిక్ సంగీతాన్ని]