[Powered by Google Translate] యొక్క శ్రేణుల గురించి మాట్లాడేందుకు లెట్.
ఎందుకు మనం శ్రేణుల ఉపయోగించడానికి కావాలో?
Well మీరు 5 విద్యార్థి ID నిల్వ అవసరం ఒక ప్రోగ్రామ్ను చెప్పారు.
ఇది 5 ప్రత్యేక వేరియబుల్స్ కలిగి సహేతుకమైన కనిపిస్తుంది ఉండవచ్చు.
మేము ఒక బిట్ లో చూస్తారు కారణాల కోసం, మేము 0 నుండి లెక్కింపు ప్రారంభించగలరు.
మేము చేస్తాము వేరియబుల్స్ Int id0, Int id1, అందువలన ఉంటుంది.
మేము ఒక విద్యార్థి ID ప్రదర్శనకు కావలసిన తర్కం కాపీ అతికించినది ఉంటుంది
ఈ విద్యార్థి ID ప్రతి.
మేము, విద్యార్థులు CS50 ఉండాలి జరిగే తనిఖీ చేయాలనుకుంటే
మేము మొదటి id0 కోర్సులో విద్యార్థి సూచిస్తుంది తనిఖీ చెయ్యాలి.
తరువాతి విద్యార్థి కోసం ఇదే విధంగా, మేము id0 కోసం కోడ్ కాపీ చేసి అతికించిన చేయాలి
మరియు id2, 3, మరియు 4 కోసం id1 మరియు మొదలైనవి id0 అన్ని సార్లు భర్తీ.
>> వెంటనే మీకు, మేము కాపీ మరియు పేస్టు చేయవలసి మాకు వంటి
మీరు ఒక మంచి పరిష్కారం లేదు అని ఆలోచిస్తూ ప్రారంభం కావాలి.
ఇప్పుడు నువ్వు 5 విద్యార్థి ID అవసరం అయితే 7 లేదు తెలుసుకుంటారు ఉంటే?
మీరు, మీ సోర్స్ కోడ్ తిరిగి వెళ్ళి ఒక id5 లో జోడించడానికి id6, అవసరం
ID లు ఈ 2 కొత్త ID లు కోసం తరగతి చెందిన ఉంటే మరియు తనిఖీ కోసం తర్కం కాపీ మరియు పేస్ట్ చెయ్యండి.
కలిసి ఈ ఐడిలను కనెక్ట్ ఏమీ లేదు, అందువలన అడగడం యొక్క మార్గం లేదు
కార్యక్రమం 6 ద్వారా ID లు 0 ఇలా.
Well ఇప్పుడు మీరు 100 విద్యార్థి ID కలిగి తెలుసుకుంటారు.
ఇది ప్రత్యేకంగా ఈ ID ల ప్రతి ప్రకటించాలని అవసరం ఉండవలసిన దానికన్నా తక్కువగా కనిపిస్తుంది ప్రారంభం యొక్క
మరియు ఆ కొత్త ID లు కోసం ఏదైనా తర్కం కాపీ మరియు పేస్ట్ చెయ్యండి.
కాని మేము గుర్తించాము, మరియు మేము అన్ని 100 విద్యార్థులకు దీనిని ఉంటాయి.
మీకు తెలియని అయితే వాస్తవానికి ఎన్ని విద్యార్థులు ఏ ఉన్నాయి?
అక్కడ కొన్ని n విద్యార్థులు మాత్రమే మరియు మీ ప్రోగ్రామ్ n అని ఏ యూజర్ తీసుకోవాల్సి ఉంటుంది.
అయ్యో. ఈ బాగా పని లేదు.
మీ ప్రోగ్రామ్ మాత్రమే కొంతమంది విద్యార్ధులు స్థిరమైన సంఖ్య పనిచేస్తుంది.
>> ఇలాంటి అన్ని సమస్యలకు పరిష్కార శ్రేణుల యొక్క అందం ఉంది.
కాబట్టి వ్యూహం ఏమిటి?
కొన్ని ప్రోగ్రామింగ్ భాషల్లో వ్యూహం రకం, ఒక బిట్ మరింత చేయగలరు
మీరు C. లో చూస్తారు కేవలం కానీ ఇక్కడ మేము ప్రాథమిక శ్రేణి డేటా నిర్మాణంపై దృష్టి చేస్తాము
ఒక అమరిక మెమరీ ఒక పెద్ద బ్లాక్ ఉంది. అంతే.
మేము మేము కొన్ని బ్లాక్ కలిగి అనగా, 10 పూర్ణాంకాల యొక్క వ్యూహం కలిగి చెప్పినప్పుడు
మెమరీ ఆ 10 ప్రత్యేక పూర్ణాంకాల కలిగి తగినంత పెద్దది.
ఒక ఇంటీజర్ 4 బైట్లు ఊహిస్తే, అంటే 10 పూర్ణాంకాల యొక్క వ్యూహం
మెమరీలో 40 బైట్లు నిరంతర బ్లాక్ ఉంది.
మీరు ఇక్కడ మేము కు కాదు ఇది బహుమితీయ శ్రేణులను, ఉపయోగించడానికి కూడా
అది ఇప్పటికీ మెమరీ ఒక పెద్ద బ్లాక్.
బహుమితీయ సంజ్ఞామానం ఒక సౌలభ్యం ఉంది.
మీరు పూర్ణాంకాల 3 బహుమితీయ శ్రేణి, ఒక 3 ఉంటే
అప్పుడు మీ ప్రోగ్రామ్ నిజంగా కేవలం 36 బైట్లు పెద్ద బ్లాక్ గా ఈ భావిస్తుంది.
పూర్ణాంకాల మొత్తం 3 సార్లు 3, మరియు ప్రతి ఇంటీజర్ 4 బైట్లు తీసుకుంటుంది.
>> యొక్క ప్రాధమిక ఉదాహరణ పరిశీలించి చూద్దాం.
మేము ఇక్కడ ప్రకటించారు శ్రేణుల యొక్క 2 వివిధ మార్గాల్లో చూడవచ్చు.
మేము కంపైల్ ప్రోగ్రామ్ కోసం వాటిలో 1 వ్యాఖ్య ఉంటుంది
మేము రెండుసార్లు x డిక్లేర్ నుండి.
మేము ఒక బిట్ లో ప్రకటనల ఈ 2 రకాల మధ్య తేడాలు కొన్ని వద్ద టేక్ ఎ లుక్ వస్తుంది.
ఈ లైన్లు రెండు పరిమాణం N యొక్క వ్యూహం డిక్లేర్
అక్కడ # 10 N నిర్వచించే చేశారు.
మేము సులభంగా ఒక సానుకూల పూర్ణాంక యూజర్ కోరారు కాలేదు
మరియు మా యెరే నందలి అంశాలు అనేక ఆ పూర్ణాంక ఉపయోగిస్తారు.
ముందు మా విద్యార్థి ID ఉదాహరణ వలె, ఈ పూర్తిగా ప్రత్యేక 10 ప్రకటించి వంటి రకమైన ఉంది
ఊహాత్మక వేరియబుల్స్; x0, x1, x2, అందువలన xN-1 వరకు న.
మేము శ్రేణి డిక్లేర్ పేరు పంక్తులు పట్టించుకోకుండా, చదరపు బ్రాకెట్లలో చెక్కుచెదరకుండా గమనించి
ఉచ్చులు కోసం లోపల.
మేము x లాగ వ్రాస్తున్నప్పుడు [3], ఇది నేను, x బ్రాకెట్ 3 వంటి చదివెదను
మీరు ఊహాత్మక X3 కోరుతూ ఇష్టం అది కూడా ఆలోచించవచ్చు.
ఆ పరిధుల లోపల సంఖ్య, పరిమాణం N, ఈ సాధనాలు వ్యూహం తో కంటే గమనించండి
మేము ఇండెక్స్ కాల్ చేస్తాము, ఇది 0 నుండి N-1 వరకు పట్టవచ్చు
ఇది N సూచీలు మొత్తం ఉంది.
>> ఈ వాస్తవంగా ఎలా పనిచేస్తుంది గురించి ఆలోచించటం
అర్రే మెమరీ బిగ్ బ్లాక్ అని గుర్తుంచుకోండి.
ఒక ఇంటీజర్ 4 బైట్లు ఊహిస్తే, మొత్త x మెమరీ 40 బైట్ బ్లాక్ ఉంది.
కాబట్టి x0 బ్లాక్ యొక్క మొట్టమొదటి 4 బైట్లు సూచిస్తుంది.
X [1] తరువాతి 4 బైట్లు మరియు ఆ విధంగా సూచిస్తుంది.
ఈ x యొక్క ప్రారంభ ఎప్పుడూ ట్రాక్ అవసరం అన్ని కార్యక్రమం ఉంటుంది.
మీరు x [400] ను ఉపయోగించడానికి, ఆపై ప్రోగ్రామ్ ఈ సమానం తెలుసు
x యొక్క ప్రారంభం తర్వాత కేవలం 1,600 బైట్లు.
మేము నుండి 1,600 బైట్లు పొందండి Where'd? ఇది ఇంటీజర్ శాతం కేవలం 400 సార్లు 4 బైట్లు ఉంది.
>> మారడానికి ముందు, ఇది గుర్తించడం చాలా ముఖ్యం అని సి లో
మేము శ్రేణి లో ఉపయోగించే సూచిక సంఖ్య అమలు ఉంది.
మా పెద్ద బ్లాక్ మాత్రమే 10 పూర్ణాంకాల పొడవుగా ఉంది, కానీ మేము x [20] వ్రాస్తే ఏమీ మాకు వద్ద అరచి చెప్పు కనిపిస్తుంది
లేదా x [-5].
ఇండెక్స్ కూడా ఒక సంఖ్య లేదు.
ఇది ఏ అనియత వ్యక్తీకరణ ఉంటుంది.
కార్యక్రమంలో మేము శ్రేణి లోకి ఇండెక్స్ కు లూప్ నుండి వేరియబుల్ నేను ఉపయోగించండి.
ఈ, i = 0 నుండి శ్రేణి యొక్క పొడవు మళ్ళీ వెతికినా, ఒక సాధారణ నమూనా
తరువాత శ్రేణి కోసం సూచిక నేను ఉపయోగించి.
మొత్త మీద మీరు సమర్థవంతంగా లూప్ ఈ విధంగా,
మరియు మీరు యెరే నందలి ప్రతి స్పాట్ కేటాయించగల లేదా కొన్ని లెక్కింపు దానిని ఉపయోగించవచ్చు.
>> లూప్ మొదటి లో, i, 0 మొదలవుతుంది
మరియు కనుక ఇది అర్రే లో 0 స్పాట్, విలువ 0 సార్లు 2 కేటాయిస్తుంది.
అప్పుడు నేను ఇంక్రిమెంట్, మరియు మేము విలువ 1 సార్లు 2 శ్రేణిలో మొదటి స్థానాన్ని కేటాయిస్తారు.
అప్పుడు మేము యెరే నందలి N-1 స్థానాన్ని వరకు మళ్లీ కాబట్టి నేను ఇంక్రిమెంట్ కేటాయించి వరకు
విలువ N-1 సార్లు 2.
కాబట్టి మేము మొదటి 10 సరి సంఖ్యలను ఒక అమరికను సృష్టించారు.
బహుశా evens x కంటే వేరియబుల్ కోసం bit మంచి పేరు ఉండేది,
కానీ ఆ ఏదీ ను ఇచ్చింది.
లూప్ రెండవ అప్పుడు మేము ఇప్పటికే శ్రేణి యొక్క లోపల నిల్వ చేసిన విలువలు ముద్రిస్తుంది.
>> అర్రే ప్రకటనల రెండు రకాల ప్రోగ్రామ్ను అమలు ప్రయత్నించండి లెట్ యొక్క
మరియు ప్రోగ్రామ్ యొక్క ఉత్పత్తి వద్ద టేక్ ఎ లుక్.
చాలా మేము గమనిస్తే, ప్రోగ్రామ్ ప్రకటనలు రెండు రకాల అదే విధంగా ప్రవర్తిస్తుంది.
మేము N వద్ద ఆగదు మొదటి లూప్ మార్చుకున్నట్లయితే కూడా ఏమి పరిశీలించి లెట్
కానీ 10,000 చెప్పారు.
అర్రే ముగింపు మించి వే.
అయ్యో. బహుశా మీరు ముందు ఈ చూసిన.
విభజన లోపంగా మీ ప్రోగ్రామ్ క్రాష్ అయ్యింది అంటే.
మీరు తాకడం లేదు మెమరీ ప్రాంతాల్లో టచ్ మీరు ఈ చూడటం ప్రారంభించండి.
ఇక్కడ మేము, x యొక్క ప్రారంభ మించి 10,000 స్థలాలను తాకడం ఉంటాయి
ఇది స్పష్టంగా మేము తాకడం లేదు మెమరీ స్థానం ఉంది.
మాకు చాలా కాబట్టి బహుశా అనుకోకుండా, బదులుగా N యొక్క 10,000 పెట్టి లేదు
మేము వంటి మరింత సూక్ష్మ ఏదో ఒకటి అయితే రాసే కంటే తక్కువ లేదా N సమానంగా ఏమి చెప్పాలి
వ్యతిరేకంగా కోసం లూప్ స్థితిలో N. కంటే తక్కువ
వ్యూహం మాత్రమే 0 నుండి N-1 కు సూచీలు కలిగి గుర్తుంచుకోండి
ఇది ఇండెక్స్ N శ్రేణి ముగింపు మించి ఉంటుంది.
కార్యక్రమం ఈ సందర్భంలో క్రాష్ కాదు, అయితే ఇది ఇప్పటికీ ఒక లోపం.
నిజానికి, ఈ లోపం, ఇది సొంత పేరు ఉంది కాబట్టి సాధారణం
1 లోపం ఒక ఆఫ్.
>> బేసిక్స్ కోసం పేర్కొంది.
కాబట్టి శ్రేణి ప్రకటనలు 2 రకాల మధ్య ఉన్న ముఖ్య తేడాలు ఏవి?
మెమరీ బిగ్ బ్లాక్ వెళతాడు, అక్కడ తేడా ఉంది.
మొదటి ప్రకటనను, నేను, బ్రాకెట్-శ్రేణి రకం ఇది పిలుస్తాను
ఈ ద్వారా అయినప్పటికీ లేదు, ఒక సాంప్రదాయిక పేరు అర్థం
ఇది స్టాక్ కొనసాగుతుంది.
నేను పాయింటర్-శ్రేణి రకం పిలుస్తాను ఇది రెండవది, అయితే అది కుప్ప మీద వెళ్తుంది.
ఇది ఉన్నప్పుడు తిరిగి వచ్చే చర్యలు, బ్రాకెట్ శ్రేణి స్వయంచాలకంగా deallocated ఉంటుందని అర్థం
మీరు explicitily పాయింటర్ శ్రేణి ఉచిత కాల్ చేయాలి వంటి అయితే
లేదంటే మీరు మెమొరీ లీక్ ఉన్నాయి.
అదనంగా, బ్రాకెట్ శ్రేణి అసలైన వేరియబుల్ కాదు.
ఈ ముఖ్యం. ఇది కేవలం ఒక గుర్తు మాత్రమే.
మీరు కంపైలర్ మీరు ఎంచుకున్న స్థిరమైన దానిని ఆలోచించవచ్చు.
ఇది మేము x + + బ్రాకెట్ రకం వంటి ఏదో ఒకటి కాదు అర్థం
ఈ పాయింటర్ రకం ఖచ్చితంగా చెల్లుబాటు అయ్యే ఉంటుంది.
>> పాయింటర్ రకం మారుతూ ఉంటుంది.
పాయింటర్ రకం కోసం, మేము మెమరీ 2 ప్రత్యేక బ్లాక్స్ ఉన్నాయి.
చరరాశి X కూడా స్టాక్ నిల్వ మరియు కేవలం ఒక పాయింటర్ ఉంది
కానీ మెమరీ బిగ్ బ్లాక్ కుప్ప నిల్వ ఉంది.
స్టాక్ న వేరియబుల్ x కేవలం చిరునామా నిల్వ
కుప్ప మీద మెమరీ బిగ్ బ్లాక్ యొక్క.
ఈ ఒక సూత్రప్రాయంగా ఆపరేటర్లు పరిమాణం ఉంటుంది.
మీరు బ్రాకెట్ శ్రేణి యొక్క పరిమాణానికి అడిగితే, అది, మీరు మెమరీ బిగ్ బ్లాక్ పరిమాణం ఇస్తుంది
40 బైట్లు లాగ,
కానీ మీరు శ్రేణి యొక్క పాయింటర్ రకం పరిమాణానికి అడిగితే,
మీరు ఉపకరణం కేవలం 4 బైట్లు అవకాశం ఉంది వేరియబుల్ x స్వయంగా యొక్క పరిమాణం ఇస్తుంది.
పాయింటర్-శ్రేణి రకం ఉపయోగించి, ఇది నేరుగా ఎంటర్టైన్ అసాధ్యం
మెమరీ బిగ్ బ్లాక్ పరిమాణం.
మేము చాలా అరుదుగా పరిమాణం కావలసిన నుండి ఈ సాధారణంగా చాలా పరిమితి యొక్క కాదు
యొక్క పెద్ద మెమొరీ బ్లాక్, మరియు మేము ఇది అవసరం ఉంటే మేము సాధారణంగా లెక్కించవచ్చు.
>> చివరగా, బ్రాకెట్ శ్రేణి వ్యూహం ప్రారంభించడం కోసం ఒక షార్ట్కట్ మాకు అందించడానికి జరుగుతుంది.
మేము సత్వరమార్గం initilization ఉపయోగించి మొదటి 10 కూడా పూర్ణ వ్రాయండి ఎలా చూద్దాం.
పాయింటర్ శ్రేణి, ఈ వంటి సత్వరమార్గం ఏదో ఒక దారి లేదు.
ఇది మీరు శ్రేణుల చెయ్యగలరు ఒక పరిచయం ఉంది.
వారు మీరు వ్రాసే ప్రతి కార్యక్రమంలో కనిపిస్తాయి.
ఆశాజనక మీరు ఇప్పుడు విద్యార్థి ID ఉదాహరణ చేయడం ఒక మంచి మార్గం చూడగలరు
వీడియో ప్రారంభం నుండి.
>> నా పేరు రాబ్ బౌడెన్, మరియు ఈ CS50 ఉంది.