రాబ్ బౌడెన్: హాయ్, నేను, రాబ్ బౌడెన్ ఉన్నాను మరియు యొక్క quiz0 మాట్లాడటానికి వీలు. కాబట్టి, మొదటి ప్రశ్న. ఈ ప్రశ్న పేరు మీరు సంఖ్య కోడ్ అవసరం బైనరీ గడ్డలు లో 127. మీరు అనుకుంటే, మీరు అనుకొనుట సాధారణ మార్పిడి దశాంశ నుండి బైనరీ, bi-- లేదా నుండి. కానీ బహుశా జరగబోతోంది సమయం చాలా పడుతుంది. నేను మీరు ఆ గుర్తించడానికి కాలేదు, సరే, 1, అక్కడ, 2 అక్కడ ఉంది 4 అక్కడ, 8 లో ఉంది. సులభంగా మార్గం, 127 128 మైనస్ ఒకటి. ఆ ఎడమవైపున కాంతి బల్బ్ 128-బిట్. కాబట్టి 127 అన్ని నిజంగా ఉంది ఇతర కాంతి గడ్డలు, ఆ ఎడమవైపున నుండి కాంతి బల్బ్ మైనస్ 1. అని అడిగాను కోసం అంతే. ప్రశ్న. 3 బిట్స్ తో కాబట్టి మీరు 8 ప్రత్యేక విలువలను సూచిస్తాయి. ఎందుకు, అప్పుడు, అతిపెద్ద కాని ప్రతికూల 7 మీరు సూచిస్తుంది దశాంశ పూర్ణాంక? బాగా, మేము మాత్రమే చెయ్యవచ్చు 8 ప్రత్యేక విలువలు ప్రాతినిధ్యం, అప్పుడు మనం చేయబోతున్నామని పాఠశాల 7 ద్వారా 0. 0 విలువలు ఒకటి తీసుకుంటుంది. ప్రశ్నను రెండు. N బిట్స్ తో, ఎన్ని విభిన్న విలువలు మీరు ప్రాతినిధ్యం? కాబట్టి, n బిట్స్ తో, మీరు 2 కలిగి ప్రతి బిట్ విలువల. కాబట్టి మేము 2 విలువల కోసం కలిగి మొదటి బిట్, 2 విలువల రెండవ కోసం, 2 మూడవ అవకాశం. కాబట్టి ఆ 2 సార్లు 2 సార్లు 2, మరియు చివరికి సమాధానం n కు 2. ప్రశ్న మూడు. బైనరీ లో 0x50 ఏమిటి? కాబట్టి హెక్సాడెసిమల్ చాలా ఉంది గుర్తుంచుకోవాలి బైనరీ సూటిగా మార్పిడి. ఇక్కడ, మేము కేవలం చూడండి అవసరం 5 మరియు స్వతంత్రంగా 0. కాబట్టి బైనరీ లో 5 ఏమిటి? 0101, ఆ 1 బిట్ మరియు 4 బిట్. బైనరీ లో 0 ఏమిటి? గమ్మత్తైన. 0000. కాబట్టి కేవలం వారిని కలిసి, మరియు బైనరీ లో పూర్తి సంఖ్య. 01010000. మీరు కోరుకుంటే మీరు అనుకొనుట ఆ ఎడమవైపున సున్నా టేకాఫ్. ఇది అసంబద్ధం. కాబట్టి ప్రత్యామ్నాయంగా, దశాంశ లో 0x50 ఏమిటి? మీరు అనుకుంటే మీరు, మీరు could-- బైనరీ తో మరింత సౌకర్యవంతమైన, మీరు బైనరీ సమాధానం పడుతుంది మరియు దశాంశ ఆ మార్చేందుకు. లేదా మేము కేవలం గుర్తు ఆ హెక్సాడెసిమల్. 0 కాబట్టి 0 వ స్థానంలో ఉంది, మరియు 5 మొదటి స్థానానికి 16 లో ఉంది. ఇక్కడ, మేము 5 సార్లు 16 కలిగి మొదటి, సున్నా ప్లస్ 0 సార్లు 16, 80. మరియు మీరు చూశారు ఉంటే ప్రశ్న టైటిల్, అది ఒక రకం ఇది CS 80, ఉంది ఈ సమస్య సమాధానం సూచించు. ప్రశ్నను ఐదు. మేము ఇది ఈ స్క్రాచ్ లిపి 4 సార్లు వేరుశెనగ వెన్న జెల్లీ పునరావృత. కాబట్టి మేము సి కోడ్ ఇప్పుడు అలా? బాగా, మేము ఇక్కడ బోల్డ్ లో భాగంగా మీరు అమలు వచ్చింది మాత్రమే భాగం. కాబట్టి మేము 4 మళ్ళీ వెతికినా ఒక 4 లూప్ సార్లు, printf కనుట వేరుశెనగ వెన్న జెల్లీ, కొత్త లైన్ తో సమస్య కోసం అడుగుతుంది. ప్రశ్నను ఆరు, మరొక స్క్రాచ్ సమస్య. మేము ఒక శాశ్వతంగా లూప్ ఉన్నాయి చూడండి. మేము వేరియబుల్ నేను చెబుతున్న ఆపై 1 i పెంచడం. ఇప్పుడు మేము సి లో ఉన్నాయి అనుకుంటే మేము ఈ చేసిన బహుళ మార్గాలు. ఇక్కడ మేము కోడ్ జరిగింది కొంత (నిజమైన) ఎప్పటికీ లూప్. కాబట్టి మేము కేవలం నేను వేరియబుల్ డిక్లేర్ వంటి మేము స్క్రాచ్ లో వేరియబుల్ నేను కలిగి. వేరియబుల్ నేను డిక్లేర్, మరియు ఎప్పటికీ (నిజమైన), మేము వేరియబుల్ నేను చెప్పటానికి. Printf% ఐ కెన్ లేదా మీరు% d ఉపయోగించి కాలేదు కాబట్టి. మేము ఆ వేరియబుల్, మరియు అది పెంచడం, నేను ++. ప్రశ్న ఏడు. ఇప్పుడు మేము సమానమైన ఏదో చేయాలనుకుంటున్నారా మారియో డాట్ సి సమస్య నుండి ఒక సెట్. మేము ఈ hashtags ప్రింట్ మీరు, మేము ఒక ఐదు ప్రింట్ మీరు ఈ hashes మూడు దీర్ఘ చతురస్రం. కాబట్టి ఎలా మేము అలా వెళ్తున్నారు? బాగా, మేము మీరు ఒక మొత్తం ఇవ్వాలని కోడ్ యొక్క బంచ్, మరియు మీరు కేవలం ముద్రణ గ్రిడ్ ఫంక్షన్ వేస్తారు. కాబట్టి ఏమి PrintGrid ఎలా చేస్తుంది? బాగా మీరు గతంలో ఉన్నాము వెడల్పు మరియు ఎత్తు. కాబట్టి మేము ఒక బాహ్య 4 లూప్, ఆ మళ్ళీ వెతికినా యొక్క ఈ అన్ని వరుసలను పైగా మేము ముద్రించాలా కావలసిన గ్రిడ్. అప్పుడు మేము, ఇంటర్ సమూహ 4 లూప్ ప్రతి కాలమ్ పై ముద్రణ. కాబట్టి ప్రతి వరుస కోసం, మేము కోసం ప్రింట్ ప్రతి కాలమ్, ఒకే హాష్. అప్పుడు వరుసగా చివరిలో మేము ప్రింట్ ఒక ఒకే కొత్త లైన్ తదుపరి వరుస వెళ్ళడానికి. మరియు ఆ మొత్తం గ్రిడ్ కోసం అంతే. ప్రశ్నను ఎనిమిది. PrintGrid వంటి ఒక ఫంక్షన్ చెబుతారు తిరిగి ఒక వైపు ప్రభావం, కానీ విలువ. వ్యత్యాసం వివరించండి. కాబట్టి ఈ మీరు గుర్తు ఆధారపడుతుంది ఒక వైపు ప్రభావం ఏమిటి. బాగా, తిరిగి విలువ మేము PrintGrid లేదు తెలుసు నుండి, తిరిగి విలువ కలిగి ఇక్కడే అది తప్ప చెప్పారు. తప్ప తిరిగి కాబట్టి ఏదైనా నిజంగా ఏదైనా తిరిగి లేదు. కాబట్టి వైపు ప్రభావం ఏమిటి? బాగా, ఒక వైపు ప్రభావం విధమైన అలాగే ఏదైనా ఫంక్షన్ ముగుస్తుంది తర్వాత ఆ, కేవలం తిరిగి కాదు మరియు అది కేవలం ఇన్పుట్లను నుండి కాదు. కాబట్టి, ఉదాహరణకు, మేము వాటిని ఒక ప్రపంచ వేరియబుల్ మార్చడానికి. ఒక వైపు ప్రభావం ఉంటుంది. ఈ ప్రత్యేక సందర్భంలో, ఒక చాలా ముఖ్యమైన వైపు ప్రభావం స్క్రీన్ ప్రింటింగ్. కాబట్టి ఒక వైపు ప్రభావం ఆ PrintGrid ఉంది. మేము స్క్రీన్ ఈ విషయాలు ప్రింట్. మరియు మీరు యొక్క ఆలోచించవచ్చు ఆ దుష్ప్రభావాన్ని, ఏదో నుండి ఈ ఫంక్షన్ ముగుస్తుంది తర్వాత కొనసాగితే. ఆ నడవడిక ఏదో ఈ ఫంక్షన్ యొక్క చివరికి మార్చబడింది, స్క్రీన్ విషయాలు. ప్రశ్నను తొమ్మిది. , క్రింద కార్యక్రమం పరిగణించండి లైన్ సంఖ్యలు జతచేయబడెను చర్చ కొరకు. ఈ కార్యక్రమంలో, మేము కేవలం ఉన్నాయి నిల్వ, GetString కాల్ ఈ వేరియబుల్ s లో, మరియు అప్పుడు ఆ వేరియబుల్ s ప్రింటింగ్. సరే. లైన్ ఒక ప్రస్తుతం ఎందుకు వివరించేందుకు. # ఉన్నాయి CS50 డాట్ h. ఎందుకు మేము CS50 డాట్ h # ఉన్నాయి అవసరం లేదు? మనము కాల్ ఫంక్షన్ GetString, మరియు GetString నిర్వచిస్తారు CS50 లైబ్రరీ లో. మేము లేదు ఉంటే # ఉన్నాయి CS50 డాట్ h, మేము ఆ పరిపూర్ణ ప్రకటన పొందుతారు GetString ఫంక్షన్ లోపం కంపైలర్ నుండి. కాబట్టి మేము లైబ్రరీ ఉన్నాయి అవసరం మేము శీర్షిక ఫైలు ఉన్నాయి అవసరం, లేదంటే కంపైలర్ లేదు GetString ఉంది గుర్తించాయి. లైన్ రెండు ప్రస్తుతం ఎందుకు వివరించేందుకు. ప్రామాణిక IO డాట్ h. ఇది ఖచ్చితంగా అదే ఉంది మునుపటి సమస్యగా, బదులుగా వ్యవహరించేందుకు తప్ప GetString, మేము printf గురించి మాట్లాడటం. మేము మేము అవసరం అనలేదు కాబట్టి ప్రామాణిక IO డాట్ h ఉన్నాయి, అప్పుడు మేము చేయలేరు printf ఫంక్షన్ ఉపయోగించడానికి, కంపైలర్ ఎందుకంటే దాని గురించి తెలియదు. Why-- ప్రాముఖ్యత ఏమిటి లైన్ నాలుగు లో రద్దు? ఇక్కడ మేము Int ప్రధాన (తప్ప) కలిగి. కేవలం ఆ మేము మాట్లాడుతూ ఏ కమాండ్ లైన్ పొందడానికి లేదు ప్రధాన వాదనలు. మేము Int చెప్పడానికి అని గుర్తుంచుకో ప్రధాన Int argc స్ట్రింగ్ argv బ్రాకెట్లలో. ఇక్కడ మేము కేవలం మేము చెప్పటానికి తప్ప సే ఆదేశ పంక్తి వాదనలు విస్మరిస్తూ ఉంటాయి. సరిగ్గా, మెమరీ సంబంధించి, వివరించేందుకు లైన్ లో ఏమి GetString ఆరు తిరిగి. GetString ఒక బ్లాక్ తిరిగి మెమరీ, అక్షరాలు యొక్క వ్యూహం. ఇది నిజంగా ఒక తిరిగి మొదటి పాత్ర పాయింటర్. ఒక స్ట్రింగ్ ఒక చార్ స్టార్ అని గుర్తుంచుకోండి. కాబట్టి మొదటి ఒక పాయింటర్ ఉంది పాత్ర సంసార స్ట్రింగ్ యూజర్ కీబోర్డ్ వద్ద ప్రవేశించిన. మరియు ఆ మెమరీ malloced నిర్మాణము, కాబట్టి ఆ మెమరీ కుప్ప ఉంది. ప్రశ్న 13. క్రింద ప్రోగ్రామ్ పరిగణించండి. కాబట్టి అన్ని ఈ కార్యక్రమం చేస్తున్న 10 ద్వారా విభజించబడింది 1 printf కనుట ఉంది. కాబట్టి సంకలనం మరియు అమలు, ఈ కార్యక్రమం ప్రతిఫలాన్ని 0.0, అయినప్పటికీ 10 ద్వారా విభజించబడింది 1 0.1 ఉంది. ఎందుకు 0.0 ఉంది? బాగా, ఈ ఎందుకంటే ఉంది పూర్ణాంక విభజన యొక్క. కాబట్టి 1 పూర్ణాంకం 10 పూర్ణాంకం ఉంది. కాబట్టి 1 10, ప్రతిదీ ద్వారా విభజించబడింది పూర్ణాంకాల పరిగణిస్తారు, మరియు సి లో, మేము పూర్ణాంక విభజన చేసినప్పుడు, మేము ఏ దశాంశ పాయింట్ ఖండించు. కాబట్టి 1 10 ద్వారా విభజించబడింది 0, మరియు అప్పుడు మేము ప్రయత్నిస్తున్న కాబట్టి, ఒక ఫ్లోట్ ఆ ప్రింట్ ఒక ఫ్లోట్ గా ముద్రించిన సున్నా 0.0 ఉంది. మేము 0.0 పొందండి ఎందుకు మరియు ఆ. క్రింద ప్రోగ్రామ్ పరిగణించండి. ఇప్పుడు మేము 0.1 ప్రింటింగ్. అందువలన పూర్ణాంక విభజన, మేము కేవలం, 0.1 ప్రింటింగ్ కానీ మేము అది ప్రింటింగ్ 28 దశాంశ స్థానాల వరకు. మరియు మేము ఈ 0,1000, ఒక మొత్తం బంచ్ పొందండి సున్నాలు, 5 5 5, బ్లా బ్లా బ్లా. అది ఎందుకు ఇక్కడ ప్రశ్న బదులుగా సరిగ్గా 0.1 యొక్క, ఆ ప్రింట్? ఇక్కడ కారణం ఇప్పుడు ఉంది పాయింట్ imprecision తేలియాడే. ఫ్లోట్ మాత్రమే 32 బిట్స్ ఉంది గుర్తుంచుకోండి. కాబట్టి మేము కేవలం పరిమిత సంఖ్య ప్రాతినిధ్యం చేయవచ్చు ఆ 32 తో ఫ్లోటింగ్ పాయింట్ విలువలు బిట్స్. బాగా చివరికి అనంతమైన ఉంది అనేక ఫ్లోటింగ్ పాయింట్ విలువలు, మరియు ఫ్లోటింగ్ అనంతం ఉంది 0 మరియు 1 మధ్య పాయింట్ విలువలు, మరియు మేము ఖచ్చితంగా చూడగలరని ఆ కంటే మరింత విలువలను సూచిస్తాయి. కాబట్టి మేము త్యాగం చేయడానికి కలిగి అత్యంత విలువలు ప్రాతినిధ్యం చెయ్యడానికి. కాబట్టి 0.1 వంటి క్రింది, స్పష్టంగా మేము ఖచ్చితంగా ప్రాతినిధ్యం కాదు. కాబట్టి బదులుగా 0.1 ప్రాతినిధ్యం మేము ఉత్తమ మేము ఈ 0.100000 5 5 సూచిస్తుంది 5. మరియు ఆ, చాలా దగ్గరలో కానీ అప్లికేషన్లు చాలా కోసం మీరు గురించి ఆందోళన పాయింట్ imprecision తేలియాడే, మేము కేవలం ప్రాతినిధ్యం కాదు ఎందుకంటే అన్ని పాయింట్లు ఖచ్చితంగా ఫ్లోటింగ్. ప్రశ్న 15. క్రింద కోడ్ పరిగణించండి. మేము కేవలం 1 ప్లస్ 1 ప్రింటింగ్. ఇక్కడ ఏ ట్రిక్ ఉంది. 1 ప్లస్ 1 2 మదింపు, మరియు అప్పుడు మేము ఆ ప్రింటింగ్. ఈ కేవలం 2 ముద్రిస్తుంది. ప్రశ్న 16. ఇప్పుడు మేము పాత్ర ప్రింటింగ్ 1 ప్లస్ పాత్ర 1. ఎందుకు ఈ లేదు ఇదే ముద్రించడానికి? బాగా పాత్ర 1 ప్లస్ పాత్ర 1, పాత్ర 1 ASCII విలువ 49 ఉంది. కాబట్టి ఈ నిజంగా 49 మాట్లాడుతూ ప్లస్ 49, మరియు ఉంది చివరికి ఈ 98 ప్రింట్ అన్నారు. కాబట్టి ఈ 2 ప్రింట్ లేదు. ప్రశ్న 17. అమలు పూర్తి విధంగా క్రింద బేసి ఫంక్షన్ ఉంటే నిజమైన తిరిగి n కూడా ఉంటే n బేసి మరియు తప్పుగా. ఈ ఒక గొప్ప ప్రయోజనం ఉంది mod ఆపరేటర్లు కోసం. కాబట్టి మేము మా వాదన n తీసుకోవాలని, n mod 2 బాగా 1, సమానం ఆ n విభజించబడింది అర్థం 2 ఒక మిగిలిన కలిగి. N 2 ద్వారా విభజించబడింది ఉంటే, ఒక మిగిలిన ఉందని n బేసి, కాబట్టి మేము నిజమైన తిరిగి అర్థం. ఎల్స్ మేము తప్పుడు తిరిగి. మీరు కూడా 2 సమానం అంటే n చేసి సున్నా, వేరే, తప్పుడు తిరిగి నిజమైన తిరిగి. క్రింద పునరావృత ఫంక్షన్ పరిగణించండి. N ఉంటే కాబట్టి కంటే తక్కువ లేదా 1 తిరిగి, 1 సమానంగా, n మైనస్ 1 యొక్క f వేరే తిరిగి n సార్లు. కాబట్టి ఈ ఫంక్షన్ ఏమిటి? బాగా, ఈ కేవలం ఉంది కారకమైన ఫంక్షన్. ఈ చక్కగా ప్రాతినిధ్యం n కారకమైన వంటి. కాబట్టి ఇప్పుడు 19 ప్రశ్న, మేము కావలసిన ఈ పునరావృత ఫంక్షన్ పడుతుంది. మేము అది పునరుక్తి చేయడానికి కావలసిన. కాబట్టి ఎలా మేము అలా లేదు? బాగా సిబ్బంది కోసం పరిష్కారం, మరియు మళ్ళీ ఉంది మీరు చేసిన బహుళ మార్గాలు , మేము ఈ Int ఉత్పత్తి ప్రారంభం 1 సమానం. మరియు ఈ అంతటా లూప్, మేము వెళుతున్న చివరికి ఉత్పత్తి గుణించడం వుంటుంది పూర్తి కారకమైన తో ముగుస్తుంది. పూర్ణాంకానికి నేను 2 సమానం కాబట్టి, నేను కంటే తక్కువ లేదా n సమానం, నేను ++. నేను 2 సమానం ఎందుకు మీరు wondering కావచ్చు. బాగా, మేము కలిగి ఇక్కడ గుర్తుంచుకోవాలి మా బేస్ కేసు సరైనది నిర్ధారించుకోండి. N కంటే తక్కువ లేదా సమానం చేస్తే 1 కు, మేము కేవలం 1 తిరిగి చేస్తున్నారు. నేను 2 సమానం వద్ద ఇక్కడ కాబట్టి, మేము ప్రారంభం. మరియు నేను 1, ఒకవేళ అప్పుడు వాట్ లేదా n లూప్ అప్పుడు 1, అయితే అన్ని అమలు కాదు. కాబట్టి మేము కేవలం ఆ 1 ఇది తిరిగి ఉత్పత్తి. అదేవిధంగా, ఉంటే n ఉన్నాయి కంటే తక్కువ ఏదైనా 1 ఉంటుంది ఇది 0, అయితే ప్రతికూల 1, సంసార మేము ఇప్పటికీ, 1 తిరిగి లోనవుతాను ఇది సరిగ్గా ఏమిటి పునరావృత వెర్షన్ చేస్తోంది. ఇప్పుడు, n ఎక్కువ ఉంటే 1 కంటే, అప్పుడు మేము చూడాలని కనీసం ఒక చేయడానికి ఈ లూప్ యొక్క పునరుక్తి. కాబట్టి అప్పుడు మేము ఉన్నాము, యొక్క n 5 అని పిలవబడు ఉత్పత్తి సార్లు చేయ 2 సమానం. కాబట్టి ఇప్పుడు ఉత్పత్తి 2. ఇప్పుడు మేము చేయబోతున్నామని ఉత్పత్తి సార్లు 3 సమానం. ఇప్పుడు అది 6. ఉత్పత్తి సార్లు ఇప్పుడు అది 24 ఉంది, 4 సమానం. ఉత్పత్తి సార్లు ఇప్పుడు అది 120 వార్తలు, 5 సమానం. కాబట్టి చివరికి, మేము తిరిగి సరిగ్గా 5 కారకమైన ఇది 120,. ప్రశ్న 20. ఈ మీరు పూరించడానికి ఉన్న ఒకటి ఏ అల్గోరిథం ఈ పట్టికలో, మేము చూసిన ఏదైనా, ఆ ఈ క్రమసూత్ర అమలు సరిపోతుంది సార్లు ఈ asymptotic పరుగుల సార్లు. కాబట్టి ఒక అల్గోరిథం ఏమిటి అని 1 యొక్క ఒమేగా, కానీ n యొక్క పెద్ద O ఉంది? కాబట్టి అనంతమైన ఉండవచ్చు ఇక్కడ అనేక సమాధానాలు. మేము బహుశా చాలా చూసిన ఒక తరచుగా కేవలం సరళ శోధన. ఉత్తమ సందర్భంలో దృష్టాంతంలో, మేము ఉన్నాము అంశం కోసం చూస్తున్న ఉంది జాబితా ప్రారంభం అందువలన 1 దశలను ఒమేగా, మేము తనిఖీ మొదటి విషయం, మేము కేవలం వెంటనే తిరిగి మేము అంశం దొరకలేదు. చెత్త దృష్టాంతంలో, అంశం, చివరిలో ఉంది లేదా అంశం వద్ద అన్ని జాబితాలో. కాబట్టి మేము శోధించడానికి మొత్తం జాబితా, అన్ని n అంశాలు, మరియు అది n యొక్క O వై. కాబట్టి ఇప్పుడు అది రెండు అని ఏదో n లాగ్ n యొక్క ఒమేగా, మరియు n లాగ్ n యొక్క పెద్ద O. బాగా అత్యంత సంబంధిత విషయం మేము ఇక్కడ చూడవచ్చు విధమైన విలీనం చేసిన. కాబట్టి విధమైన, గుర్తు విలీనం, చివరికి తీట తీటా నిర్వచించబడింది n లాగ్ n, యొక్క ఒమేగా మరియు పెద్ద O ఒకే ఉంటే. రెండు n లాగ్. ఒమేగా ఏదో ఏమిటి n యొక్క, మరియు n ఓ స్క్వేర్డ్? బాగా, మళ్ళీ ఉంది బహుళ సాధ్యం సమాధానాలు. ఇక్కడ మేము బబుల్ సార్ట్ చెప్పడానికి జరిగే. చొప్పించడం విధమైన కూడా ఇక్కడ పని. బబుల్ సార్ట్ గుర్తుంచుకో ఆప్టిమైజేషన్ పేరు ఉంది, మీరు పొందవచ్చు ఉంటే మొత్తం జాబితా ద్వారా చేయడానికి అవసరం లేకుండా ఏ మార్పిడులు, అప్పుడు, బాగా, మేము వెంటనే ఆ తిరిగి జాబితా ప్రారంభించడానికి క్రమబద్ధీకరించబడతాయి. , ఉత్తమ దృష్టాంతంలో కాబట్టి అది n యొక్క ఒమేగా ఉంది. అది కేవలం ఒక చక్కగా కాకపోతే , తో ప్రారంభించడానికి జాబితా క్రమబద్ధీకరించబడింది అప్పుడు మేము n యొక్క O మార్పిడులు స్క్వేర్డ్ కలిగి. చివరకు, మేము ఎంపిక విధమైన కలిగి స్క్వేర్డ్ n కోసం, ఒమేగా మరియు పెద్ద ఓ రెండు ప్రశ్న 21. పూర్ణాంక ఓవర్ఫ్లో ఏమిటి? బాగా మళ్ళీ, ముందు పోలి, మేము మాత్రమే పరిమిత పలు బిట్స్ పూర్ణాంకం ప్రాతినిధ్యం, కాబట్టి 32 బిట్స్. యొక్క మేము ఒక సంతకం పూర్ణాంక కలిగి చెప్పారు. అప్పుడు చివరికి అత్యధిక అనుకూల సంఖ్య మేము సూచిస్తుంది 2 కు 31 మైనస్ 1. మేము ప్రయత్నించండి చేస్తే ఏమి జరుగుతుంది ఆ పూర్ణాంక పెంచడం? బాగా, మేము 31 2 నుంచి చూడాలని మైనస్ 1, డౌన్ ప్రతికూల 2 వరకు 31 కు. కాబట్టి ఈ పూర్ణాంక ఓవర్ఫ్లో ఉంది మీరు పెంచడం ఉంచండి ఉన్నప్పుడు, మరియు చివరికి మీరు కాదు ఉన్నత మరియు అది కేవలం తిరిగి అన్ని మార్గం మూటగట్టి ప్రతికూల విలువ చుట్టూ. ఒక బఫర్ ఓవర్ఫ్లో గురించి ఏమిటి? కాబట్టి ఒక బఫర్ overflow-- బఫర్ గుర్తు. ఇది కేవలం మెమరీ భాగం ఉంది. వ్యూహం లాగ బఫర్. కాబట్టి ఒక బఫర్ ఓవర్ఫ్లో ఉన్నప్పుడు ఉంది మీరు మెమరీ యాక్సెస్ ప్రయత్నించండి ఆ శ్రేణి ముగింపు మించి. మీరు ఒక ఉంటే పరిమాణం 5 మరియు మీరు శ్రేణి శ్రేణి బ్రాకెట్ యాక్సెస్ ప్రయత్నించండి 5 లేదా బ్రాకెట్ 6 లేదా బ్రాకెట్ 7, దాటి లేదా ఏదైనా ముగింపు, లేదా ఏదైనా below-- శ్రేణి బ్రాకెట్ ప్రతికూల 1 ఉంటుంది ఆ అన్ని బఫర్ ఓవర్ఫ్లో ఉన్నాయి. మీరు చెడు మార్గాల్లో మెమరీ తాకిన చేస్తున్నారు. ప్రశ్న 23. మీరు అవసరం ఈ ఒక లో కాబట్టి strlen అమలు. మరియు మేము మీరు ఆ మీరు చెప్పండి లు శూన్య ఉండదు ఊహించుకోవటం, కాబట్టి మీరు లేదు శూన్య ఏ చెక్. మరియు బహుళ మార్గాలు ఉన్నాయి మీరు ఈ చేసి. ఇక్కడ మేము కేవలం నేరుగా. మేము n, కౌంటర్ ప్రారంభం. n ఉంది ఎన్ని అక్షరాలు లెక్కింపు. కాబట్టి మేము 0 వద్ద మొదలు, మరియు మొత్తం జాబితా పై iterate. సమానం బ్రాకెట్ 0 శూన్య టెర్మినేటర్ పాత్ర? మేము చూస్తున్న గుర్తుంచుకో శూన్య టెర్మినేటర్ పాత్ర మా స్ట్రింగ్ ఎంత గుర్తించడానికి. ఆ రద్దు అన్నారు ఏ సంబంధిత స్ట్రింగ్. కాబట్టి యొక్క బ్రాకెట్ సమానం 0 శూన్య టెర్మినేటర్ కు? అలా కాకపోతే, అప్పుడు మేము చూడాలని లు బ్రాకెట్ 1, లు బ్రాకెట్ 2 చూడండి. మేము వరకు కొనసాగించడాన్ని శూన్య టెర్మినేటర్ కనుగొనేందుకు. మేము అది అనిపిస్తే, n కలిగి స్ట్రింగ్ యొక్క మొత్తం పొడవు, మరియు మేము ఆ తిరిగి. ప్రశ్న 24. కాబట్టి ఈ ఒక ఇక్కడ మీరు వాణిజ్యం చేసుకోవాలి. కాబట్టి ఒక విషయం ఒక మంచి ఉంది , కానీ ఏ విధంగా మార్గం చెడ్డది? ఇక్కడ, విలీనం విధమైన ఉంటుంది బబుల్ సార్ట్ కంటే వేగంగా. అక్కడ, బాగా ఆ చెప్పాడు అనేక సమాధానాలను ఇక్కడ ఉన్నాయి. కానీ ప్రధాన ఒక బబుల్ సార్ట్ ఉంది ఒక క్రమబద్ధీకరించబడతాయి జాబితా కోసం n యొక్క ఒమేగా ఉంది. మేము ముందుగా చూసిన పట్టిక గుర్తుంచుకో. బబుల్ యొక్క ఒమేగా రకాల n, ఉత్తమ దృష్టాంతంలో అది కేవలం వెళ్ళి వీలు ఉంది జాబితా ఒకసారి, గుర్తించడానికి హే ఈ విషయం ఇప్పటికే ఉంది క్రమబద్ధీకరించిన మరియు తిరిగి. ఉన్నా, విలీనం విధమైన ఏమి మీరు, n లాగ్ n యొక్క ఒమేగా ఉంది. క్రమబద్ధీకరించబడతాయి జాబితా కోసం, బబుల్ కాబట్టి విధమైన వేగంగా చేస్తాడు. ఇప్పుడు జాబితాలు గురించి లింక్? కాబట్టి ఒక లింక్ జాబితా పెరుగుతాయి మరియు కుదించే చేయవచ్చు కావలసినన్ని అంశాలను సరిపోయే. కాబట్టి ఆ చెప్పాడు సాధారణంగా ప్రత్యక్ష పోలిక అనుబంధ అవతరిస్తుంది వ్యూహం తో జాబితా. కాబట్టి కూడా శ్రేణుల అయితే సులభంగా పెరుగుతాయి మరియు కుదించే అనేక అంశాలను సరిపోయే అవసరమైన, ఒక లింక్ జాబితా ఒక శ్రేణి ఒక పోలిస్తే శ్రేణి రాండమ్ యాక్సెస్ ఉంది. మేము ఏ సూచిక దీని శ్రేణి యొక్క మూలకం. కాబట్టి ఒక లింక్ జాబితా కోసం, మేము కాదు కేవలం ఐదవ మూలకం వెళ్ళండి, మేము ప్రారంభం నుండి ప్రయాణించేందుకు కలిగి మేము ఐదవ మూలకం వచ్చేవరకు. మరియు ఆ నుండి మాకు నిరోధించడానికి చేస్తాడు బైనరీ శోధన లాగ చేయడం. బైనరీ శోధన మాట్లాడుతూ, బైనరీ శోధన సరళ శోధన కంటే వేగంగా ఉంటుంది. ఆ చెప్పాడు కాబట్టి, ఒక సాధ్యం విషయం మీరు బైనరీ చెయ్యలేరని ఉంది లింక్ జాబితాలు అన్వేషణ, మీరు మాత్రమే శ్రేణులపై చేయవచ్చు. కానీ బహుశా మరింత ముఖ్యంగా, మీరు బైనరీ శోధన చెయ్యలేరు వర్గీకరించరు వ్యూహం మీద. ముందస్తు మీరు క్రమం అవసరం ఉండవచ్చు శ్రేణి, మరియు అప్పుడు మాత్రమే చెయ్యవచ్చు మీరు బైనరీ శోధన. మీ విషయం కాదు ఉంటే తో ప్రారంభించడానికి క్రమబద్ధీకరించబడతాయి, అప్పుడు సరళ శోధన వేగంగా కావచ్చు. ప్రశ్న 27. కాబట్టి క్రింద కార్యక్రమం పరిగణలోకి, తదుపరి స్లయిడ్ ఉంటుంది. మరియు ఈ మేము ఎక్కడ ఒకటి స్పష్టంగా రాష్ట్ర చేయకూడదని అన్నారు వివిధ వేరియబుల్స్ కోసం విలువలు. కాబట్టి యొక్క ఆ చూద్దాం. కాబట్టి ఒక లైన్. మేము Int x 1 సమానం. ఆ జరిగిందని మాత్రమే విషయం. కాబట్టి లైన్ ఒక వద్ద, మేము చూసే మా పట్టిక, ఆ y, ఒక, బి, మరియు tmp అన్ని ఉన్నాయి బ్లాక్డ్ ఔట్. కాబట్టి x ఏమిటి? మనము దానిని 1 సమానము. ఆపై, బాగా, రెండు లైన్ మేము y 2 సెట్ చూడండి మరియు పట్టిక ఇప్పటికే ఉంది మాకు పూరించిన. కాబట్టి x 1 మరియు y 2. ఇప్పుడు, లైన్ మూడు, మేము ఇప్పుడు ఉన్నాము swap ఫంక్షన్ లోపల. మనం మారడానికి అధిగమించగలిగింది? మేము కోసం ఆంపర్సండ్ చిహ్నం x జారీ బి కోసం ఒక, మరియు ఆంపర్సండ్ చిహ్నం y. ఎక్కడ సమస్య ముందు పేర్కొంది x యొక్క చిరునామా 0x10 ఉంది, మరియు y యొక్క చిరునామా 0x14 ఉంది. కాబట్టి ఒక మరియు బి సమానం వరుసగా 0x10 మరియు 0x14,. ఇప్పుడు మూడు, x మరియు y ఏమిటి? బాగా, ఏమీ మార్చబడింది ఈ సమయంలో x మరియు y గురించి. వారు ఉన్నారని ఒక ప్రధాన స్టాక్ ఫ్రేమ్ లోపల, వారు ఇప్పటికీ అదే కలిగి విలువలు వారు ముందు. మేము ఏ మెమరీ మార్పు లేదు. కాబట్టి x 1, y 2. అన్ని కుడి. కాబట్టి ఇప్పుడు మేము ఒక స్టార్ సమానంగా పూర్ణాంకానికి tmp చెప్పారు. కాబట్టి లైన్ నాలుగు, ప్రతిదీ వద్ద tmp తప్ప అదే. మేము ఏ విలువలు మారలేదు tmp తప్ప ఏదైనా యొక్క. మేము ఒక స్టార్ సమానంగా tmp సెట్. స్టార్ ఏమిటి? బాగా, ఒక పాయింట్లు x కు, కాబట్టి ఒక స్టార్ 1 ఇది సమానంగా x, అన్నారు. కాబట్టి ప్రతిదీ కాపీ డౌన్, మరియు tmp 1 సెట్. ఇప్పుడు తదుపరి లైన్. స్టార్ స్టార్ బి సమానం. కాబట్టి లైన్ ద్వారా five-- బాగా మళ్ళీ, ప్రతిదీ స్టార్ ఏమైనా తప్ప అదే. స్టార్ ఏమిటి? బాగా, మేము కేవలం స్టార్ ఒక x చెప్పారు. కాబట్టి మేము సమాన స్టార్ బి x మారుస్తున్నాము. స్టార్ బి ఏమిటి? y. y బి పాయింట్లు. కాబట్టి స్టార్ బి y ఉంది. కాబట్టి మేము y కు x సమానంగా చేయడం చేస్తున్నారు మరియు మిగతా వాటి ఉంటుంది. X ఇప్పుడు తదుపరి వరుసగా చూడండి 2, మరియు మిగిలిన డౌన్ కాపీ. ఇప్పుడు తదుపరి లైన్ లో, స్టార్ బి tmp సమానం. బాగా, మేము కేవలం స్టార్ బి y ఉంది అన్నారు, కాబట్టి మేము tmp కు y సమానంగా చేయడం చేస్తున్నారు. మిగతావన్ని అదే ఉంది కాబట్టి ప్రతిదీ డౌన్ కాపీ అవుతుంది. మేము ఇది tmp సమానంగా y సెట్ చేస్తున్నాము వేరే ఒక, మరియు వాటి ఉంటుంది. ఇప్పుడు చివరకు, లైన్ ఏడు. మేము తిరిగి ప్రధాన ఫంక్షన్ లో ఉన్నాము. స్వాప్ ముగిసిన తర్వాత మేము. మేము ఒక, బి కోల్పోయింది, మరియు tmp, కానీ మేము చివరికి ఏ విలువలు మారుతున్న లేదు ఈ సమయంలో ఏదైనా, మేము x మరియు y డౌన్ కాపీ. మరియు మేము x మరియు y అని చూడండి ఇప్పుడు 2 మరియు 1 బదులుగా 1 మరియు 2. స్వాప్ విజయవంతంగా అమలు చేసింది. ప్రశ్న 28. మీరు ఎదుర్కొనే అనుకుందాం దోష సందేశాలు ఆఫీసు సమయాల్లో క్రింద ఒక CA లేదా TF వచ్చే ఏడాది. ఈ లోపాలు ప్రతి పరిష్కరించడానికి ఎలా సలహా. GetString కాబట్టి వివరింపబడని సూచన. ఎందుకు మీరు ఈ చూడవచ్చు? బాగా, ఒక విద్యార్థి ఉపయోగిస్తుంటే వారి కోడ్ లో GetString, వారు సరిగా CS50 ఉన్నాయి హాష్ చేశారు డాట్ h CS50 లైబ్రరీ ఉన్నాయి. బాగా, వారు ఏమి ఈ లోపం పరిష్కరించడానికి అవసరం? వారు ఒక డాష్ lcs50 ఏమి అవసరం వారు కంపైల్ చేసినప్పుడు కమాండ్ లైన్. వారు పాస్ చేస్తే గణగణమని ద్వని చేయు డాష్ lcs50, వారు ఉన్నారు అసలు ఏమీ ఉండదని GetString అమలు కోడ్. ప్రశ్న 29. పరిపూర్ణంగా ప్రకటించారు లైబ్రరీ ఫంక్షన్ strlen. బాగా ఈ ఇప్పుడు, వారు కలిగి సరైన హాష్ సాధిస్తారు ఉన్నాయి. ఈ ప్రత్యేక సందర్భంలో, శీర్షిక ఫైలు వారు, స్ట్రింగ్ డాట్ h ఉంది ఉన్నాయి అవసరం మరియు ఇప్పుడు స్ట్రింగ్ డాట్ h, సహా ఇప్పుడు విద్యార్థి కంపైలర్ యాక్సెస్ strlen ప్రకటనలతో, మరియు అది తెలుసు మీ కోడ్ సరిగ్గా strlen ఉపయోగిస్తోంది. ప్రశ్న 30. మరిన్ని శాతం మార్పిడులు డేటా వాదనలు కంటే. కాబట్టి ఈ ఏమి ఉంది? బాగా ఈ శాతం గుర్తుంచుకోవాలి వారు printf సంబంధిత ఉన్నాము ఎలా signs--. కాబట్టి printf మేము percent-- ఉండవచ్చు మేము ఏదో ప్రింట్ ఉండవచ్చు శాతం వంటి n నేను బాక్ స్లాష్. లేదా మేము, శాతం ఐ ప్రింట్ ఉండవచ్చు స్పేస్, శాతం నేను, స్పేస్, శాతం నేను. ఆ ప్రతి కాబట్టి చిహ్నాలు శాతం, మేము అవసరం printf చివరిలో ఒక వేరియబుల్ పాస్. కాబట్టి మేము చెప్పుకోవాలంటే printf బ్రాకెట్ శాతం నేను, n దగ్గరగా బ్రాకెట్ బాక్ స్లాష్ బాగా, మేము అని చెప్పటానికి పూర్ణాంకం ప్రింట్ అన్నారు కానీ అప్పుడు మేము printf అనుమతించబడవు పూర్ణాంకం వాస్తవానికి ప్రింట్. ఇక్కడ మరింత శాతం డేటా వాదనలు కంటే మార్పిడులు? మేము కలిగి మాట్లాడుతూ శాతాలు యొక్క మొత్తం బంచ్, మరియు మేము తగినంత వేరియబుల్స్ లేదు నిజానికి ఆ శాతాలు పూరించడానికి. ఆపై ఖచ్చితంగా, ప్రశ్న 31 కోసం, ఖచ్చితంగా ఒక బ్లాక్స్ లో 40 బైట్లు కోల్పోయారు. కాబట్టి ఈ ఒక Valgrind లోపం ఉంది. ఈ తెలిపాడు ఎక్కడో మీ కోడ్ లో, మీరు 40 అని ఒక కేటాయింపు ఉంది బైట్లు పెద్ద కాబట్టి మీరు, 40 బైట్లు malloced మరియు మీరు అది విడుదల ఎప్పుడూ. మీరు అవసరం ఎక్కువగా కొన్ని మెమరీ లీక్ కనుగొనేందుకు, మరియు మీరు అవసరం ఎక్కడ మెమరీ ఈ బ్లాక్ విముక్తికై. మరియు, 32 ప్రశ్న పరిమాణం 4 యొక్క చెల్లని రాసే. మళ్ళీ ఈ ఒక Valgrind లోపం ఉంది. దీన్ని లేదు ఇప్పుడు మెమరీ లీకేజ్ తో. ఈ నేను అర్థం likely-- చాలా, అది, ఉంది చెల్లని మెమరీ హక్కుల విధమైన. మరియు ఎక్కువగా ఈ ఉంది కొన్ని బఫర్ ఓవర్ఫ్లో యొక్క విధమైన. ఎక్కడ మీరు బహుశా, వ్యూహం పూర్ణాంకం శ్రేణి, మరియు లెట్స్ అది పరిమాణం 5 యొక్క చెప్పాలి, మరియు మీరు శ్రేణి బ్రాకెట్ 5 టచ్ ప్రయత్నించండి. మీరు ఆ వ్రాయడానికి ప్రయత్నించండి చేస్తే విలువ, మెమరీ భాగం కాదు మీరు నిజంగా యాక్సెస్, మరియు ఆ కాబట్టి మీరు ఈ తప్పిదం చూడాలని, పరిమాణం 4 యొక్క చెల్లని రాసే విధంగా. Valgrind మీరు గుర్తించి అన్నారు తగినవిధంగా మెమరీ తాకే ప్రయత్నిస్తున్నారు. మరియు ఆ quiz0 కోసం అంతే. నేను రాబ్ బౌడెన్ ఉన్నాను, మరియు ఈ CS50 ఉంది.