[Powered by Google Translate] ચાલો એરે વિશે વાત કરો.
શા માટે કે જેથી અમે ક્યારેય એરે ઉપયોગ કરવા માંગો છો માંગો છો?
વેલ દો કહો કે તમે એક કાર્યક્રમ છે કે જે 5 વિદ્યાર્થી ID ને સંગ્રહિત કરવાની જરૂર હોય છે.
તે વાજબી જણાય છે માટે 5 અલગ ચલો હોય શકે છે.
કારણો અમે બીટ માં જોશો માટે, અમે 0 થી ગણતરી શરૂ કરી શકશો.
ચલો અમે પડશે પૂર્ણાંક id0, પૂર્ણાંક id1, અને તેથી હશે.
કોઈપણ તર્ક અમે એક વિદ્યાર્થી ID પર કરવા માંગો નકલ અને તે પેસ્ટ કરવાની જરૂર પડશે
આ વિદ્યાર્થી ID ની દરેક માટે.
જો અમે તપાસ જે વિદ્યાર્થીઓને CS50 હોવા થાય માંગો છો,
અમે પ્રથમ તપાસો જો id0 કોર્સ માં વિદ્યાર્થી પ્રતિનિધિત્વ કરવાની જરૂર પડશે.
પછી આગામી વિદ્યાર્થી માટે પણ આવું જ, અમે નકલ અને id0 માટે કોડ પેસ્ટ કરવાની જરૂર પડશે
અને id1 સાથે અને તેથી id2, 3, અને 4 માટે id0 તમામ ઘટનાઓ બદલો.
>> જલદી તમે સાંભળો કે અમે કૉપિ અને પેસ્ટ કરેલો જરૂર છે,
તમે વિચારીને કે ત્યાં એક વધુ સારો ઉકેલ છે શરૂ કરીશું.
હવે જો તમે સમજો છો કે તમને 5 વિદ્યાર્થી ID ને જરૂર નથી પરંતુ તેના બદલે 7?
તમે તમારા સ્રોત કોડમાં પાછા જાઓ અને એક id5 માં ઉમેરવાની જરૂર છે, id6 એક,
અને નકલ કરો અને ચકાસણી માટે તર્કશાસ્ત્ર પેસ્ટ કરો જો ID ને આ 2 નવી ID માટે આ વર્ગના સભ્ય છે.
આ તમામ ID ને એક સાથે જોડાઈ કંઈ નથી, અને તેથી ત્યાં કહેતી કોઈ રીત છે
આ કાર્યક્રમ 6 મારફતે 0 ID માટે આ કરવા માટે.
વેલ હવે તમે સમજો છો કે તમને 100 વિદ્યાર્થી ID હોય છે.
તે આદર્શ કરતાં ઓછી હોવાનું જણાય છે માટે અલગથી આ ID ની દરેક જાહેર કરવાની જરૂર શરૂ છે,
અને નકલ કરો અને તે નવા ID માટે કોઇ લોજીક પેસ્ટ કરો.
પરંતુ કદાચ અમે નક્કી કરવામાં આવે છે, અને અમે તેને તમામ 100 વિદ્યાર્થીઓ માટે નથી.
પરંતુ જો તમને ખબર નહિં હોય કે કેટલી વિદ્યાર્થીઓ ત્યાં ખરેખર શું છે?
ત્યાં માત્ર કેટલાક n વિદ્યાર્થીઓ અને તમારા કાર્યક્રમ વપરાશકર્તા કે કઈ n છે પૂછી છે.
ઓહો. આ ખૂબ જ સારી રીતે કામ નથી જઈ રહ્યા છે.
તમારા કાર્યક્રમ માત્ર અમુક વિદ્યાર્થીઓ સતત નંબર માટે કામ કરે છે.
>> આ સમસ્યાઓ ઉકેલવા તમામ એરે ની સુંદરતા છે.
તેથી ઝાકઝમાળ શું છે?
કેટલાક પ્રોગ્રામિંગ ભાષાઓ એક એરે પ્રકાર માટે થોડી વધુ કરવા સક્ષમ હોઈ શકો છો,
પરંતુ, અહીં આપણે મૂળભૂત એરે માહિતી બંધારણ પર ધ્યાન કેન્દ્રિત જેમ તમે તેને સી માં જોશો પડશે
ઝાકઝમાળ માત્ર મેમરી એક મોટી બ્લોક છે. આ તે છે.
જ્યારે આપણે કહેવું અમે 10 પૂર્ણાંકો ઝાકઝમાળ છે, કે જે હમણાં જ અર્થ એ કે અમે કેટલાક બ્લોક હોય
મેમરી કે તેટલા મોટા 10 અલગ પૂર્ણાંકો પકડી છે.
એમ ધારી રહ્યા છીએ કે પૂર્ણાંક 4 બાઇટ્સ છે, એનો અર્થ એ કે 10 પૂર્ણાંકો ઝાકઝમાળ
મેમરીમાં 40 બાઇટ્સ સતત બ્લોક છે.
ત્યારે પણ તમે બહુપરીમાણીય એરે, જે અમે અહીં ન જાય વાપરવા માટે,
તે હજુ પણ માત્ર મેમરી એક મોટી બ્લોક છે.
આ બહુપરીમાણીય નોટેશનમાં માત્ર એક સગવડ છે.
જો તમે 3 પૂર્ણાંકોના બહુપરીમાણીય એરે દ્વારા 3 એક છે,
પછી તમારા કાર્યક્રમ ખરેખર માત્ર 36 બાઇટ્સ એક મોટી બ્લોક તરીકે આ માનશે.
પૂર્ણાંકો કુલ સંખ્યા 3 3 વખત છે, અને દરેક પૂર્ણાંક અપ 4 બાઇટ્સ લે છે.
>> ચાલો એક ઉદાહરણ મૂળભૂત પર એક નજર.
અમે અહીં જાહેર એરે, 2 અલગ અલગ રીતે જોઈ શકે છે.
અમે 1 તેના માટે કમ્પાઇલ કાર્યક્રમ માટે ટિપ્પણી પડશે
કારણ કે અમે એક્સ બે વખત જાહેર.
અમે એક બીટ માં જાહેરાતો આ 2 પ્રકારો વચ્ચે તફાવત કેટલાક પર એક નજર પડશે.
આ રેખાઓ બંને કદ એન ઝાકઝમાળ જાહેર,
અમે # જ્યાં 10 તરીકે છે એન વ્યાખ્યાયિત કરે છે.
અમે હમણાં જ તરીકે સરળતાથી હકારાત્મક પૂર્ણાંક માટે કરી શકે છે વપરાશકર્તાને પૂછવામાં છે
અને અમારા એરે માં તત્વોના નંબર કે પૂર્ણાંક ઉપયોગ થાય છે.
અમારા વિદ્યાર્થી ID ને ઉદાહરણ પહેલાં જેમ, આ 10 સંપૂર્ણપણે અલગ જાહેર જેવા પ્રકારની છે
કાલ્પનિક ચલો; એકસ 0, x1, x2, અને તેથી xN-1 માટે આ બોલ પર.
લીટીઓ અવગણીને જ્યાં અમે એરે જાહેર, ચોરસ કૌંસ અકબંધ નોટિસ
આંટીઓ માટે અંદર.
જ્યારે અમે એક્સ કંઈક લખી [3], હું હમણાં જ એક્સ 3 કૌંસ તરીકે વાંચી શકશો કે જે,
તમે તેને લાગે કે કાલ્પનિક એકસ 3 માટે પૂછતી પસંદ કરી શકો છો.
કદ એન, કે કૌંસ ની અંદર સંખ્યા, આ અર્થ ઝાકઝમાળ કરતાં નોટિસ
જે અમે ઇન્ડેક્સ કહી શકશો, 0 થી N-1 કંઈપણ હોઈ શકે છે,
જે એન સૂચકાંકોના કુલ છે.
>> કેવી રીતે કામ કરે છે અને આ ખરેખર વિશે વિચારો
યાદ રાખો કે એરે મેમરી મોટા બ્લોક છે.
એમ ધારી રહ્યા છીએ કે પૂર્ણાંક 4 બાઇટ્સ છે, સમગ્ર એરે એક્સ મેમરી એક 40 બાઇટ બ્લોક છે.
તેથી એકસ 0 ખૂબ પ્રથમ બ્લોક નું 4 બાઇટ્સ ઉલ્લેખ કરે છે.
એક્સ [1] પછીના 4 બાઇટ્સ અને તેથી ઉલ્લેખ કરે છે.
આનો અર્થ એ થાય કે x ની શરૂઆતમાં તમામ કાર્યક્રમ ક્યારેય સાચવી રાખે જરૂર છે.
જો તમે x [400] નો ઉપયોગ કરવા માંગો છો, તો પછી કાર્યક્રમ જાણે છે કે આ બરાબર છે
x ની શરૂઆત પછી 1,600 બાઇટ્સ માત્ર છે.
Where'd અમે માંથી 1,600 બાઇટ્સ મળી શકે? તે પૂર્ણાંક દીઠ માત્ર 400 4 વખત બાઇટ્સ છે.
>> પર જતાં પહેલાં, તે ખૂબ જ મહત્વપૂર્ણ છે ખ્યાલ છે કે સી
ત્યાં ઇન્ડેક્સ કે અમે એરે ઉપયોગ કોઈ અમલ છે.
અમારા મોટા બ્લોક માત્ર 10 પૂર્ણાંકો લાંબો છે, પરંતુ કંઇ અમને અંતે કિકિયારી જો આપણે x [20] લખશે
અથવા તો x [-5].
ઇન્ડેક્સ પણ એક સંખ્યા હોવી નથી.
તેને કોઈપણ મનસ્વી અભિવ્યક્તિ હોઈ શકે છે.
કાર્યક્રમ અમે ના એરે માં ઇન્ડેક્સ લૂપ માટે ચલ હું વાપરો.
આ એક ખૂબ જ સામાન્ય પેટર્ન છે, આઇ = 0 થી એરે લંબાઈના રહ્યાં,
અને પછી હું એરે માટે અનુક્રમણિકા તરીકે ઉપયોગ થાય છે.
આ તમે સમગ્ર એરે પર અસરકારક રીતે લૂપ રીતે,
અને તમે ક્યાં તો એરે દરેક સ્પોટ સોંપી શકે છે અથવા તેને કેટલીક ગણતરી માટે ઉપયોગ કરે છે.
>> લૂપ માટે પ્રથમ, આઇ 0 પર શરૂ થાય છે,
અને તેથી તે એરે માં 0 સ્પોટ, કિંમત 2 0 ગણી અસાઇન કરશે.
પછી ઇન્ક્રીમેન્ટ આઇ, અને અમે એરે મૂલ્ય 1 જોવાયા 2 માં પ્રથમ સ્પોટ સોંપો.
પછી પર હું ફરીથી અને તેથી ઇન્ક્રીમેન્ટ સુધી અમે એરે માં એન-1 પોઝિશન સોંપી
મૂલ્ય N-1 2 વખત.
તેથી અમે પ્રથમ 10 બેકી ક્રમાંકો સાથે એરે બનાવી છે.
કદાચ evens એક્સ કરતાં ચલ માટે બીટ વધુ સારી નામ હતું,
પરંતુ તે વસ્તુઓ છે દૂર આપવામાં આવશે.
લૂપ માટે બીજા પછી માત્ર કિંમતો કે અમે પહેલાથી જ એરે ની અંદર સંગ્રહાય છે છાપે છે.
>> ચાલો એરે જાહેરાતો બંને પ્રકારના કાર્યક્રમ ચલાવવાનો પ્રયત્ન
અને કાર્યક્રમ આઉટપુટ પર એક નજર.
જ્યાં સુધી આપણે જોઈ શકે છે, આ કાર્યક્રમ જાહેરાતો બંને પ્રકારના માટે એ જ રીતે વર્તે છે.
ચાલો પણ શું થાય પર એક નજર જો અમે પ્રથમ લૂપ બદલી એન અંતે અટકાવવા માટે નથી
પરંતુ 10,000 કહો.
એરે ઓવરને બહાર વે.
અરે. કદાચ તમે આ જોઇ છે તે પહેલાં.
એક સેગ્મેન્ટેશન ક્ષતિમાં અર્થ છે તમારા કાર્યક્રમ ક્રેશ થયું છે.
તમે આ જોવાનું શરૂ જ્યારે તમે મેમરી વિસ્તારોમાં તમે સ્પર્શ જોઇએ નહિં સ્પર્શ.
અહીં અમે x ની શરૂઆતમાં આગળ 10,000 સ્થળોએ સ્પર્શ કરવામાં આવે છે,
જે દેખીતી રીતે મેમરીમાં સ્થાન અમે સ્પર્શ જોઇએ નહિં છે.
અમને મોટા ભાગના તેથી કદાચ આકસ્મિક 10,000 એન બદલે મૂકી શકે છે,
પરંતુ જો અમે વધુ જેવી ગૂઢ કંઈક લખવા કરતાં ઓછી અથવા એન સમાન કહેવું
માટે લૂપ શરત તરીકે વિરોધ માં એન કરતા ઓછી
યાદ રાખો કે એક એરે માત્ર 0 થી N-1 માટે સૂચકાંકો ધરાવે છે,
જેનો અર્થ છે કે ઇન્ડેક્સ એન એરે ઓવરને બહાર છે.
આ કાર્યક્રમ આ કેસ નથી તૂટી છે, પરંતુ તે હજુ પણ એક ભૂલ છે શકે છે.
હકીકતમાં, આ ભૂલ જેથી સામાન્ય કે તે પોતાના નામ છે,
1 ભૂલ કરીને નહીં.
>> કે તે મૂળભૂત માટે છે.
તેથી એરે જાહેરાતો ના 2 પ્રકારો વચ્ચે મુખ્ય તફાવત શું છે?
એક તફાવત છે જ્યાં મેમરી મોટા બ્લોક જાય છે.
પ્રથમ ઘોષણા, જે હું પ્રકાર કૌંસ-એરે કહી શકશો,
જોકે આ દ્વારા કોઈ એક પરંપરાગત નામ એનો અર્થ એ થાય
તે સ્ટેક પર જાય છે.
બીજી, જે હું પ્રકાર નિર્દેશક-એરે કહી શકશો, જ્યારે તે ઢગલો પર જાય છે.
આનો અર્થ એ થાય કે જ્યારે કાર્ય વળતર, કૌંસ એરે આપોઆપ deallocated આવશે,
જેમ તમે explicitily પોઇન્ટર એરે પર મફત કૉલ કરવો આવશ્યક છે જ્યારે
અથવા તો તમે મેમરી છિદ્ર હોય છે.
વધુમાં, કૌંસ એરે ખરેખર એક ચલ નથી.
આ અગત્યનું છે. તે માત્ર એક પ્રતીક છે.
તમે તેને સતત કે કમ્પાઇલર તમે પસંદ તરીકે વિચાર કરી શકો છો.
આનો અર્થ એ થાય કે અમે એક્સ + + કૌંસ પ્રકાર સાથે કંઈક ન કરી શકો,
જોકે આ સંપૂર્ણપણે પોઇન્ટર પ્રકાર સાથે માન્ય છે.
>> આ નિર્દેશક પ્રકાર ચલ છે.
પોઇન્ટર પ્રકાર માટે, અમે મેમરી 2 અલગ બ્લોક્સ ધરાવે છે.
આ ચલ પોતે એક્સ સ્ટેક માં સંગ્રહાય છે અને માત્ર એક નિર્દેશક છે,
પરંતુ મેમરી મોટા બ્લોક ઢગલો પર સંગ્રહાયેલ છે.
સ્ટેક પર ચલ x ફક્ત સરનામા સંગ્રહ કરે છે
આ ઢગલો પર મેમરી મોટા બ્લોક છે.
આ એક સૂચિતાર્થ ઓપરેટર માપ સાથે છે.
જો તમે કૌંસમાં એરે માપ માટે પૂછો, તો તે તમને મેમરી મોટા બ્લોક માપ આપશે,
40 બાઇટ્સ કંઈક,
પરંતુ જો તમે ઍરેના નિર્દેશક પ્રકારના કદ માટે પૂછો,
તે તમને ચલ x પોતે જ, કે જે ઉપકરણ પર થવાની શક્યતા છે ફક્ત 4 બાઇટ્સ માપ આપશે.
પ્રકાર નિર્દેશક-એરે મદદથી, તે અશક્ય છે સીધી માટે પૂછો
મેમરી મોટા બ્લોક માપ.
આ સામાન્ય રીતે પ્રતિબંધ મોટા થી અમે ખૂબ જ ભાગ્યે જ માપ કરવા માંગો છો નથી
ની મેમરી મોટા બ્લોક, અને અમે સામાન્ય રીતે તે ગણતરી જો અમે તેને જરૂર કરી શકો છો.
>> છેલ્લે, કૌંસ એરે માટે અમને એક એરે પ્રારંભ માટે એક શોર્ટકટ પ્રદાન થાય છે.
ચાલો જોવા અમે કેવી રીતે પ્રથમ 10 પણ શૉર્ટકટ initilization મદદથી પૂર્ણાંકો લખી શકે છે.
પોઇન્ટર એરે સાથે, ત્યાં આ જેવા શોર્ટકટ કરવા રસ્તો નથી.
આ માત્ર તમે શું એરે સાથે કરી શકો પરિચય છે.
તેઓ લગભગ દરેક કાર્યક્રમ તમે લખી માં બતાવે છે.
આસ્થાપૂર્વક તમે હવે વિદ્યાર્થી ID ને ઉદાહરણ કરવાનું સારી રીતે જોઈ શકે છે
વિડિઓ શરૂઆત છે.
>> મારું નામ રોબ બોડેન છે, અને આ CS50 છે.