DAVID MALAN: બધા હક, પાછા સ્વાગત છે. આ CS50 છે. આ સપ્તાહના સાત શરૂઆત છે. તેથી તે જ્યારે આવી છે, જેથી હું અમે કરશો વિચાર્યું છે જ્યાં અમે એક વાવંટોળ મુલાકાત લો બંધ છોડી દીધી અને જ્યાં આપણે હવે જઈ રહ્યાં છો. આ બાબત અહીં પડી શકે છે તેથી પ્રથમ કેટલાક angst થાય છે. પરંતુ આસ્થાપૂર્વક, તમે શરૂ કરી રહ્યા છીએ આ અહીં સૂચવે છે શું acclimate - જે નિર્દેશક પ્રતિનિધિત્વ સ્ટાર વધુ જનસાધારણ ના નિયમો માત્ર શું? તેથી તે એક સરનામું છે. તેથી તે સરનામું છે મેમરી માં કંઈક. અને અમે પાછા છાલ સ્તરો શરૂ થોડા અઠવાડિયા પહેલા, વસ્તુઓ ગમે GetString અને અન્ય જેમ કે કાર્યો આ બધા સમય પરત કરવામાં આવી છે જેવા મેમરી વસ્તુઓ સરનામાં, પ્રથમ પાત્ર સરનામા અમુક શ્રેણી. તેથી આપણે પણ, valgrind રજૂઆત કરી હતી જો તમે આ સમસ્યા માટે ઉપયોગ શરૂ કરશો ખાસ કરીને આગામી માટે સુયોજિત સમસ્યા તેમજ સુયોજિત કરો. અને valgrind અમારા માટે શું કરે છે? તે મેમરી લિક માટે ચકાસે છે, અને તે પણ મેમરી દુરુપયોગ માટે ચકાસે છે. તે કેટલાક સંભાવના સાથે શોધી શકાય છે જો તમારો કોડ મેમરી સ્પર્શ ચાલે છે તે માત્ર ન જોઈએ. જેથી છિદ્ર જરૂરી છે, પરંતુ જો તમે નથી કેટલાક સીમાઓને જાઓ અરે, અને તમે ખરેખર valgrind સ્કોર અને તે વર્તન પ્રેરિત કરતી valgrind છે તમારા કાર્યક્રમ ચાલી રહ્યો છે તે અંદર ચાલી રહ્યું છે, તમે મળશે આ જેમ સંદેશા - "અમાન્ય લખી , એક દંપતિ યાદ જે કદ 4, " અઠવાડિયા પહેલા હું આકસ્મિક હતું કે અર્થ પણ અત્યાર સુધી એક ઈન્ પર ગમે એક એરે ની સીમાઓને. અને તેથી કદ 4 અહીં માપ અર્થ એ થાય ચોક્કસ ઈન્ છે. તેથી હકીકતમાં આશ્ચાસન લઇ valgrind આઉટપુટનું, તે બંધારણ, માત્ર ભયાનક છે. તે વાસણ મારફતે જોવા માટે ખરેખર હાર્ડ આ રસપ્રદ જાણકારી માટે. તેથી શું અમે અહીં કર્યું માત્ર ટૂંકસાર છે વધુ દંપતિ કેટલાક રસપ્રદ રેખાઓ. પરંતુ ખ્યાલ છે કે valgrind ના 80% આઉટપુટ એક એક બીટ હોઈ ચાલે છે વિક્ષેપ. માત્ર આ જેવા પેટર્ન માટે જુઓ - અધિકાર અમાન્ય છે, અમાન્ય, 40 બાઇટ્સ વાંચી અને બ્લોકો કેટલાક નંબર ચોક્કસપણે છે કે જેમ કીવર્ડ્સ, હારી ગયો હતો. અને શું આશા જોશો કેટલાક છે કાર્ય શું ટ્રેસ કાઇન્ડ ભૂલ સાઇન ખરેખર છે અહીં આ કિસ્સામાં, કયા વાક્ય મારી કોડ દેખીતી રીતે ભૂલ હતી? હતી memory.c તરીકે ઓળખાતી ફાઈલ માં 26 અમે સાથે રમતા હતા ઉદાહરણ તે સમયે. તેથી તે malloc માં કદાચ નથી. તે જગ્યાએ મારો કોડ કદાચ હતી. તેથી અમે ફરી આ જોશો અને ફરીથી લાંબા પહેલા. Scanf તેથી, આ એક માં આવ્યા આમ અત્યાર સુધી સ્વરૂપો દંપતિ. અમે થોડા સમય sscanf જોયું. તે કંઈક એક નંબર હતી તમે તમારી માં વિભાજિત dived ક્વિઝ માટે તૈયારીઓ. અને scanf ખરેખર શું CS50 પુસ્તકાલયમાં નીચે ઉપયોગ કરી રહ્યો છે ક્રમમાં અમુક સમય માટે શાંત હૂડ વપરાશકર્તા ઇનપુટ વિચાર. હમણાં પૂરતું, હું CS50 પર ખસેડો જો સાધન, અહીં એક મને ખોલો દો scanf-0.c કહેવાય છે કે ઉદાહરણ આજે અને તે સુપર સરળ છે. તે માત્ર કોડ થોડા લીટીઓ છે. પરંતુ તે દર્શાવે ખરેખર કેવી રીતે getInt આ સમયે બધા કામ કરવામાં આવ્યું છે. રેખા 16 માં અહીં આ કાર્યક્રમ છે, , હું એક ઈન્ જાહેર કે નોટિસ. તેથી કોઈ પોઇન્ટર, જાદુઈ કંઇ ત્યાં માત્ર એક ઈન્. પછી વાક્ય 17, હું તમને પૂછવા એક નંબર માટે વપરાશકર્તા, કૃપા કરીને. પછી અંતમાં 18 માં, હું અહીં scanf વાપરો. અને હું ઉલ્લેખ પ્રકારની જેમ printf છે, હું કંપની અપેક્ષા છું કે ટકા હું અવતરણ ચિહ્નો પૂરાં કરવાં. ટકા એટલે, અલબત્ત, એક ઈન્ સૂચવે છે. પરંતુ નોટિસ શું બીજા scanf દલીલ છે. તમે કેવી રીતે બીજા વર્ણન કરશે અલ્પવિરામથી પછી દલીલ? કે શું? તે X ની સરનામું. તેથી આ કારણ આપીને ઉપયોગી છે X ની સરનામા સાથે scanf, શું કરે છે તે કરવા માટે કે જે કાર્ય સમર્થ? માત્ર ત્યાં જાઓ, પણ શું? તે ફેરફાર કરો. તમે ત્યાં જઈ શકે છે, કારણ કે તે પ્રકારની છે મેમરીમાં પાંચ આંકડાના US સ્થાન માટે નકશો છે. અને તેથી લાંબા તમે પૂરી પાડે scanf, અથવા જેમ કે એક નકશો, કે જે કોઈપણ કાર્ય કાર્ય ત્યાં જાઓ અને કરી શકે છે માત્ર મૂલ્ય જોવા છે, પરંતુ તે પણ કરી શકો છો ઉપયોગી છે જો કે જે મૂલ્ય, ફેરફાર scanf જીવન માં હેતુ માટે છે ખાસ કરીને, વપરાશકર્તા ઇનપુટ સ્કૅન કીબોર્ડ છે. અને એફ જેમ, ફોર્મેટ સૂચવે printf, એફ એક ફોર્મેટ સૂચવે તમે છાપવાનો કરવા માંગો છો તે સ્ટ્રિંગ. તેથી ટૂંકા, આ રેખા 18 ખાલી કહે છે, વપરાશકર્તાની એક ઈન્ વાંચવાનો પ્રયત્ન કરો કીબોર્ડ અને અંતે X ની અંદર તે સ્ટોર X ખાતે રહેવા માટે થાય છે ગમે સરનામું. અને પછી છેલ્લે, લાઇન 19 માત્ર કહે છે, આ કિસ્સામાં ઈન્ માટે આભાર. તેથી મને આગળ વધો અને આ બનાવવા દો. તેથી scanf 0 બનાવે છે. મને આગળ વધો અને સાઇન ઝૂમ દો હું સાથે જઇ અને આ સ્કોર પડશે બિંદુઓ scanf 0 સ્લેશ. નંબર છે, કૃપા કરીને? 50. 50 માટે આભાર. તેથી તે ખૂબ સરળ છે. તે હવે શું કરી નથી? જો તે સમગ્ર ટોળું કરી નથી ભૂલ ચકાસણી છે. હમણાં પૂરતું, હું સહકાર ન હોય તો, અને હું એક નંબર લખી નથી, પરંતુ તેના બદલે હું "હેલો," કંઈક લખવા એ વિચિત્ર માત્ર પ્રકારની છે. આ વસ્તુઓ CS50 અને તેથી એક લાઇબ્રેરી કેટલીક અમને માટે કરી દેવામાં આવી છે સમય કે reprompting છે અને reprompting. આ ફરી પ્રયાસ શબ્દસમૂહ બોલાવવાનો, cs50.c હતી અને કે getInt માં કારણ છે જો CS50 પુસ્તકાલય ખરેખર સમગ્ર છે લાંબા લીટીઓ ટોળું, અમે કરશો કારણ કે આ જેમ મૂર્ખ સામગ્રી માટે તપાસ. વપરાશકર્તા આપી ન હતી અમને, હકીકતમાં, એક ઈન્? તે અથવા તેણી અમને કંઈક આપી હતી એક મૂળાક્ષર અક્ષર જેવા? જો એમ હોય તો, અમે શોધી કરવા માંગો છો કે અને તેમને કિકિયારી. પરંતુ બધી વસ્તુઓ વધુ રસપ્રદ વિચાર આ આગામી ઉદાહરણ છે. હું scanf-1.c પર જાઓ નહિં, તો શું એક છે મૂળભૂત બદલાયેલ છે કે વસ્તુ આ આગામી ઉદાહરણ? હું, અલબત્ત, ચાર * મદદથી છું તેના બદલે ઈન્ છે. કારણ કે ચાર * તેથી આ,, રસપ્રદ છે યાદ, માત્ર ખરેખર છે શબ્દમાળા તરીકે જ વાત. તેથી તે કદાચ જેવી આ સુપર છે લાગે છે GetString સરળ અમલીકરણ. પરંતુ હું સ્તર પાછા peeled કર્યું જો CS50 ગ્રંથાલયનો, હું તેથી હવે આ ચાર * ફોન. તેથી માતાનો જોવા દો, જ્યાં ગમે તો, અમે ખોટું જાઓ. રેખા 17 - હું ફરી મારા કંઈક આપવા, કૃપા કરીને કહે છે આ કિસ્સામાં, એક સ્ટ્રિંગ. અને પછી આગળના વાક્ય, હું scanf કૉલ ફરીથી, જો તે બંધારણમાં કોડ આપ્યા, પરંતુ આ સમય ટકા ઓ. અને પછી આ સમય, હું છું તે બફર આપવી. હવે હું ઉપયોગ ન છું, નોટિસ આ & "અને" નું ચિહ્ન. પરંતુ શા માટે અહીં કદાચ ઠીક છે? પહેલેથી જ બફર શું છે કારણ? જો તે પહેલાથી જ નિર્દેશક છે. તે પહેલાથી જ એક સરનામું છે. અને દો આ શબ્દ મને દો ", સ્વાંગ" છે માત્ર માટે, ઉદાહરણ તરીકે, તે ઓ કૉલ સરળતા. પરંતુ હું તે બફર કહેવાય કર્યું કારણ કે સામાન્ય રીતે, પ્રોગ્રામિંગ, તમે એક હોય તો મેમરી ચંકને છે, કે જે શબ્દમાળા ખરેખર , ફક્ત તમે તે બફર કૉલ શકે છે. તે જાણકારી સંગ્રહવા માટે એક સ્થળ છે. જ્યારે YouTube, જેવી વસ્તુઓ માટે સરખી તેઓ, તેથી વાત કરવા માટે, તટસ્થ રહ્યા છો માત્ર તે બીટ્સ ડાઉનલોડ રહ્યું અર્થ એ થાય ઇન્ટરનેટ અને તેમને સ્ટોર સ્થાનિક અરે, જેથી મેમરી એક સ્થાનિક ચંકને તમે વિના પાછળથી તેને જોઈ શકો છો કે જે તે છોડવામાં આવી રહ્યા છે અથવા અટકી તમે પાછા રમે છે. તેથી સમસ્યા, છતાં અહીં છે હું scanf જણાવું છું, કારણ કે એક અપેક્ષા વપરાશકર્તા માંથી શબ્દમાળા. અહીં ની સરનામા ચોક્કો મેમરીની ચંકને. ત્યાં કે શબ્દમાળા મૂકો. શા માટે છે કે જે બાઉન્ડ આપી છે જોકે અમને મુશ્કેલી? કે શું? હું ઍક્સેસ કરવાની મંજૂરી છું મેમરી કે ભાગ? તમે જાણો છો, મને ખબર નથી. બફર આરંભ કરવામાં આવ્યો છે કારણ કે ખાવા માટે? નથી ખરેખર. અને તેથી તે અમે ફોન કરવામાં આવ્યાં છે શું એક કચરો કિંમત છે, કે જે એક સામાન્ય શબ્દ નથી. તે માત્ર અમે શું બીટ્સ કોઈ વિચાર હોય છે એનો અર્થ એ થાય કે ચાર બાઇટ્સ ની અંદર છે હું બફર તરીકે ફાળવવામાં આવ્યા છે. હું malloc કહેવાય નથી. હું ચોક્કસપણે GetString કહેવાય નથી કર્યું. તેથી જે ખરેખર શું છે તે જાણે છે બફર ની અંદર? અને હજુ સુધી scanf કહેવાની અકારણ, ત્યાં જાઓ અને વપરાશકર્તા ટાઇપ ગમે મૂકો. તેથી કારણ તેવી શક્યતા છે અમારા કોડ અમે ચલાવવા તો શું? કદાચ segfault. કદાચ નથી, પરંતુ કદાચ segfault. અને હું કહી કદાચ નથી કારણ કે ક્યારેક તમે ક્યારેક, તો જો તમે segfault વિચાર નથી. ક્યારેક તમે માત્ર નસીબદાર વિચાર છે, પરંતુ તે છતાં જશે અમારા કાર્યક્રમ માં ભૂલ. તેથી મને આગળ વધો અને આ કમ્પાઇલ દો. હું તે જૂની શાળા માર્ગ કરવા જઇ રહ્યો છું. તેથી રણકાર આડંબર 0, scanf 1, scanf-1.c દાખલ કરો. અરે, ખૂબ જ જૂની સ્કૂલ. માતાનો જોવા દો. હું ક્યાં ગયા હતા? ઓહ, ચાર * બફર. ઓહ, તમે આભાર - બરાબર, સેવ - ખૂબ જૂના સ્કૂલ. બધા હક, તે જ્યારે કરવામાં આવી છે. તેથી હું માત્ર ફાઈલ પછી સાચવી લીધો છે કે કામચલાઉ બનાવવા એક ક્ષણ પહેલા બદલો. અને હવે હું તેને કમ્પાઈલ થયેલ છે જાતે રણકાર સાથે. અને હવે હું આગળ જવા માટે જઇ રહ્યો છું અને દાખલ કરો, scanf 1 રન બનાવ્યો. શબ્દમાળા કરો. હું લખો પડશે "હેલ્લો." અને હવે, અહીં printf, પ્રમાણિકપણે, જ્યાં ચોક્કો થોડી હેરાન કરે છે શકે છે. તે ખરેખર જવા નથી આ કિસ્સામાં segfault. Printf થોડી ખાસ છે કારણ કે તે સામાન્ય રીતે વપરાય છે જેથી સુપર કે અનિવાર્યપણે printf કરી છે અમને તરફેણમાં અને અનુભૂતિની, કે એક માન્ય નિર્દેશક નથી. મારી માત્ર પ્રિન્ટ પર મને લેવા દો કૌંસ નલ બહાર, પણ તે જરૂરી નથી છતાં શું આપણે આપણી જાતને અપેક્ષા. તેથી આપણે ખરેખર સરળતાથી પ્રેરિત કરી શકતા નથી આ સ્પષ્ટ રીતે આ સાથે segfault, પરંતુ હું ઈચ્છતો વર્તન નથી. તેથી સરળ ઉકેલ શું છે? વેલ, scanf-2 માં, મને પ્રસ્તાવ દો કે બદલે ખરેખર માત્ર એક ફાળવણી ચાર *, મને થોડી સ્માર્ટ વિશે હોઈ દો આ, અને મને બફર ફાળવી દો 16 અક્ષરો એક ક્રમ છે. તેથી હું માર્ગો એક દંપતિ માં કરી શકો છો. હું સંપૂર્ણપણે malloc ઉપયોગ કરી શકે છે. પરંતુ હું અઠવાડિયામાં બે પાછા જઈ શકે છે જ્યારે હું માત્ર એક સમગ્ર ટોળું જરૂરી અક્ષરો. માત્ર એક એરે છે. તેથી મને બદલે બફર ફરી નિર્ધારિત દો 16 અક્ષરો એક એરે છે. અને હવે, જ્યારે હું બફર પાસ - અને આપણે ન કંઈક છે સપ્તાહ બે વિશે વાત - પણ તમે એક એરે તરીકે સારવાર કરી શકે છે તે એક સરનામું છતાં. અમે જોઈ કર્યું તરીકે ટેક્નિકલ,, તેઓ કરશો થોડુંક અલગ. તમે તેને પસાર પરંતુ જો scanf દિમાગમાં નહીં એક એરે નામ, કારણ કે શું અમને આવશ્યક છે રણકાર કરશે જો કે એરે નામ સારવાર 16 બાઇટ્સ ની ચંકને ઓફ સરનામું. તેથી આ વધુ સારું છે. આ હવે હું આશા કરી શકે છે એનો અર્થ એ થાય નીચેની નથી. મને એક ક્ષણ માટે બહાર ઝૂમ કરીએ અને ઠીક સંકલિત scanf 2, બનાવવા થાય છે. હવે મને સ્લેશ scanf-2 મળી નથી દો. શબ્દમાળા કરો. "હેલો." અને તે આ સમય કામ લાગતું. પરંતુ કોઈને દૃશ્ય પ્રસ્તાવ કરી શકો છો જેમાં તે હજુ પણ કામ ન શકે? યાહ? 16 અક્ષરો કરતાં લાંબા સમય સુધી કંઈક. અને ખરેખર, અમે હોઈ શકે છે થોડી વધુ ચોક્કસ. લાંબા સમય સુધી પછી 15 અક્ષરો કંઈક, ખરેખર અમે ધ્યાનમાં રાખવા જરૂર છે, કારણ કે અમે તે બેકસ્લેશ શૂન્ય જરૂર છે સર્વથા શબ્દમાળા ઓવરને અંતે જે એક કોરે scanf સામાન્ય રીતે ચાલશે છે અમને કાળજી લેવા. તેથી મને કંઈક કરવા દો - ક્યારેક આપણે આ કરી શકો છો કે જેમ તે છોડી દો. ઠીક છે, તેથી હવે અમે પ્રેરિત કર્યા છે અમારા સેગ્મેન્ટેશન ક્ષતિમાં. શા માટે? હું 15 થી વધુ માટે લખ્યો છે કારણ કે અક્ષરો, અને તેથી અમે ખરેખર કર્યું સ્પર્શ મેમરી કે હું ખરેખર ન જોઈએ. તેથી શું ખરેખર અહીં ઉકેલ છે? વેલ, અમે લાંબા સમય સુધી શબ્દમાળા શું જરૂર હોય તો? ઠીક છે, આપણે કદાચ તે 32 બાઇટ્સ બનાવે છે. ઠીક છે, તે શું છે તે લાંબા સમય સુધી પૂરતી નથી તો શું? કેવી રીતે 64 બાઇટ્સ? શું છે કે જે લાંબા સમય સુધી પૂરતી નથી તો શું? કેટલો 128 વિશે અથવા 200 બાઇટ્સ? શું ખરેખર અહીં ઉકેલ છે સામાન્ય કિસ્સામાં, અમે ખબર નથી તો વપરાશકર્તા લખો જવા છે તે આગળ? તે મૂર્ખ માં એક મોટી પીડા માત્ર પ્રકારની છે પ્રમાણિક હોઇ શકે છે, જે છે શા માટે CS50 પુસ્તકાલય થોડા ડઝન રેખાઓ હોય છે સામૂહિક અમલ કે કોડ કે જે અમે નથી કે જે રીતે શબ્દમાળા GetString અગાઉથી ખબર હોય શું વપરાશકર્તા લખવાનું ચાલુ છે. ખાસ કરીને, જો તમે પાછળ જુઓ cs50.c બે અઠવાડિયા પહેલા થી, તમે જોશો કે GetString વાસ્તવમાં કરે છે આ રીતે scanf વાપરે નહિં. તેના બદલે, તે એક અક્ષર વાંચે એક સમયે. કારણ કે લગભગ એક સરસ વસ્તુ એક અક્ષર વાંચવા અમે છે હંમેશા જાતને ખાતરી ઓછામાં ઓછા એક ચાર હોય છે. હું માત્ર લેવા પછી ચાર જાહેર કરી શકો છો અને માત્ર આ સાચી બાળક પગલાંઓ એક પર એક અક્ષર વાંચી કીબોર્ડ સમય. અને પછી, શું તમે GetString જોશો કરે છે, તે બહાર બનાવ્યા દરેક સમય છે , મેમરી 16 બાઇટ્સ કહે છે, તે ઉપયોગ કરે છે malloc, અથવા એક પિતરાઇ તેના માટે જૂના નકલ, વધુ મેમરી ફાળવણી પછી નવું, અને ક્રોલ માં મેમરી સાથે એક સમયે એક અક્ષર મેળવવામાં અને તે બહાર ચાલે છે ત્યારે મેમરી ચંકને, કબજામાં લેવાની દૂર ફેંકી દે છે મેમરી મોટી ચંકને, જૂની નકલ નવું, અને પુનરાવર્તન નહીં. અને તે ખરેખર સાચી પીડા છે સરળ કંઈક અમલ વપરાશકર્તા ઇનપુટ મેળવવામાં. તેથી તમે scanf ઉપયોગ કરી શકો છો. તમે અન્ય જેવું જ કામ કરી શકો છો. અને એક પાઠ્યપુસ્તક ઘણો અને ઓનલાઇન ઉદાહરણો નથી, પરંતુ તેઓ બધા છો આ જેવી સમસ્યાનો ભોગ. અને છેવટે, એક segfault રહેલી પ્રકારની હેરાન છે. તે વપરાશકર્તા માટે સારી નથી. પરંતુ ખરાબ કિસ્સામાં, શું કરે છે તેને મૂળભૂત રીતે તમારા મૂકી જોખમ કોડ? હુમલો કેટલાક પ્રકારની છે, સંભવિતપણે. અમે એક જેમ કે હુમલો વિશે વાત - સ્ટેક વહેતું. પરંતુ સામાન્ય રીતે, તમે કરવા માટે માન્ય રહ્યાં છો, તો ઓવરફ્લો બફર, જેમ આપણે કર્યું માત્ર લેખિત સાથે પહેલા અઠવાડિયા દંપતિ વધુ સ્ટેક પર "હેલો" કરતાં, તમે ખરેખર એક, સંભવિત, ઉપર લઇ જઇ શકો છો કોમ્પ્યુટર, અથવા ઓછામાં ઓછા માહિતી અંતે વિચાર કે તમે ને અનુલક્ષતું નથી. અમે શા માટે છે, જેથી ટૂંકા માં, આ છે તે તાલીમ વ્હીલ્સ. પરંતુ હવે, અમે તેમને બોલ લેવા શરૂ અમારા કાર્યક્રમો લાંબા સમય સુધી જરૂર છે, વપરાશકર્તા માંથી જરૂરી ઇનપુટ. પરંતુ સમસ્યા કિસ્સામાં, છ સેટ તમારી ઇનપુટ એક વિશાળ માંથી આવશે 150 સાથે શબ્દકોશ ફાઈલ કેટલાક વિચિત્ર હજાર શબ્દો. તેથી તમે ચિંતા કરવાની રહેશે નહીં વપરાશકર્તાની મનસ્વી ઇનપુટ. અમે તમને કેટલીક ધારણા આપશે તે ફાઈલ વિશે. પોઇન્ટર અથવા scanf પર કોઈપણ પ્રશ્નો અથવા સામાન્ય રીતે વપરાશકર્તા ઈનપુટ? બધા હક, જેથી એક ખાતે પછી ઝડપી દેખાવ બે અઠવાડિયા પહેલા થી વિષય પાછળનો. અને તે એક સ્ટ્રક્ટ આ ખ્યાલ હતો. નથી - એક આ વિચારને શું હતું, જે સ્ટ્રક્ટ? સ્ટ્રક્ટ અમારા માટે શું કર્યું? નિર્ધારિત - માફ? એક ચલ પ્રકાર વ્યાખ્યાયિત કરે છે. તેથી સૉર્ટ છે. અમે ખરેખર બે વિષયો સંયોજન કરી રહ્યા છીએ. Typedef સાથે જેથી અમે યાદ એક જેવી, આપણા પોતાના એક પ્રકાર જાહેર ચાર * માટે શબ્દમાળા જેવા સમાનાર્થી. પરંતુ typedef અને સ્ટ્રક્ટ ઉપયોગ કરીને, આપણે આ કરી શકો છો સાચી આપણા પોતાના માહિતી માળખાં બનાવો. હમણાં પૂરતું, હું પાછા જાઓ તો gedit માં અહીં માત્ર એક ક્ષણ માટે છે, અને હું આગળ જાઓ અને કંઈક જેમ કામ કરે છે, મને સાચવવા દો આ તરીકે, structs.c, માતાનો કહે દો અસ્થાયી, હું હમણાં જ જઈ રહ્યો છું આગળ વધો અને શામેલ કરવા standardio.h, Int મુખ્ય રદબાતલ. અને પછી અહીં, હું માંગો છો તે ધારવું સંગ્રહ કરે છે કે એક પ્રોગ્રામ લખવા માટે બહુવિધ ઘણા વિદ્યાર્થીઓ ઘરો, દાખલા તરીકે. તેથી તે registrarial જેવી છે અમુક પ્રકારના ડેટાબેઝ. હું નામ એક વિદ્યાર્થી જરૂર, તેથી જો હું , ચાર * નામ જેવું કંઈક શકે છે અને હું કંઈક કરીશ - ખરેખર, આ CS50 લાઇબ્રેરી ઉપયોગ કરવા દેવા માત્ર એક ક્ષણ માટે તો આ એક બનાવવા માટે થોડી સરળ, તેથી અમે ઉધાર શકે છે કોડ ઓફ લીટીઓ તે ડઝનેક. અને દો માત્ર તેને સરળ રાખવા છે. અમે તે સ્ટ્રિંગ રાખીશું અને હવે GetString. તેથી હું નામ સ્ટોર કરી છે કે હવે દાવો કેટલાક વિદ્યાર્થી, અને હાઉસ ઓફ ખાલી ચલો મદદથી કેટલાક વિદ્યાર્થી, અમે હતી અને સપ્તાહ એક છે. જેમ પરંતુ હવે હું ટેકો કરવા માંગો છો ધારવું બહુવિધ વિદ્યાર્થીઓ. બધા હક, જેથી મારી વૃત્તિ કરવું છે સ્ટ્રિંગ NAME2, GetString, શબ્દમાળા નહીં house2 GetString નોંધાયો નહીં. અને પછી અમારા ત્રીજા વિદ્યાર્થી, NAME3 GetString શું કરીએ. બધા હક, તેથી આ આસ્થાપૂર્વક સ્ટ્રાઇકિંગ છે મૂર્ખ કાઇન્ડ તરીકે તમે, આ પ્રક્રિયા ખરેખર ક્યારેય છે કારણ કે અંત જવા, અને તે માત્ર બનશે મારી કોડ ખરાબ દેખાવ અને ખરાબ અને ખરાબ. પરંતુ અમે સપ્તાહ બે પણ આ હલ. અમારા પ્રમાણમાં સ્વચ્છ ઉકેલ શું હતું અમે બહુવિધ ચલો હતી જ માહિતી તમામ સંબંધિત છે તે પ્રકારના છે, પરંતુ અમે આ ભયાનક વાસણ નહિં માંગો હતી એ જ રીતે નામ આપવામાં આવ્યું વેરિયેબલ્સ? અમે તેના બદલે શું કર્યું? તેથી હું થોડા સ્થળો સાંભળ્યું છે. અમે એક એરે હતી. તમે અનેક ઉદાહરણો માંગો છો કંઈક, શા માટે આપણે આ બધા સાફ નથી અપ અને માત્ર મને આપી કહે છે, અરે નામો કહેવાય? અને હવે, હાર્ડ કોડ 3 દો. અને પછી મને બીજા એરે આપે છે ઘરો કહેવાય છે, અને માટે મને દો હવે હાર્ડ કોડ 3. અને હું મોટા પાયે ઉપર સાફ કર્યું હું હમણાં બનાવેલ છે કે ગડબડ. હવે, હું હજુ પણ હાર્ડ 3 કોડેડ છે, પરંતુ કર્યું પણ 3 ગતિશીલ માંથી આવે છે શકે છે વપરાશકર્તા, અથવા argv, અથવા જેમ. તેથી આ પહેલેથી જ ક્લીનર છે. પરંતુ શું આ વિશે નકામી છે કે છે હવે, છતાં પણ એક નામ અચાનક છે મૂળભૂત કડી એક વિદ્યાર્થી ઘર - તે કે હું ખરેખર એક વિદ્યાર્થી છે પ્રતિનિધિત્વ કરવા માંગો છો - હવે હું સમાંતર છે કે બે એરે છે તેઓ છો કે અર્થમાં સમાન કદ અને નામો કૌંસ 0 ઘરો કૌંસ 0 અનુમાન નકશા, અને નામો કૌંસ 1 નકશા ઘરો કૌંસ 1. અન્ય શબ્દોમાં, કે જે વિદ્યાર્થી જીવન કે ઘર છે, અને તે અન્ય વિદ્યાર્થી કે અન્ય ઘરમાં રહે છે. પરંતુ ચોક્કસ આ હોઈ શકે પણ વધુ સ્વચ્છ પૂર્ણ થઈ. વેલ, તે કરી શકે છે, હકીકતમાં. અને મને આગળ વધો અને ખોલવા દો structs.h અપ, અને તમે પડશે અહીં આ વિચાર જુઓ. તમે, હું typedef ઉપયોગ કર્યા કે નોટિસ પહેલાં જાહેર કરવા માટે એક ક્ષણ જશ આપ્યો હતો અમારી પોતાના માહિતી પ્રકાર. પરંતુ હું પણ આ અન્ય શબ્દ વાપરવાની છું સ્ટ્રક્ટ કહેવાય જે મને એક નવી આપે છે માહિતી બંધારણ. અને હું દાવો આ માહિતી માળખું ચાલે છે ની અંદર બે વસ્તુઓ હોય છે તે - નામ કહેવાય શબ્દમાળા, અને ઘર કહેવાય શબ્દમાળા. અને હું જાઉં છું તે નામ આપવા આ માહિતી માળખું ચાલે છે વિદ્યાર્થી કહેવામાં આવે છે. હું, હું માંગો કંઈપણ કૉલ કરી શકે છે પરંતુ આ અર્થનિર્ધારણ બનાવવા મારા મન મને સુઝ. તેથી હવે, હું એક વધુ સારું આવૃત્તિ ખોલો તો કાર્યક્રમના હું લખવાનું શરૂ કર્યું ત્યાં મને ટોચ પર સ્ક્રોલ દો. અને કોડ ઓફ કેટલાક વધુ રેખાઓ હોય અહીં, પરંતુ મને ધ્યાન કેન્દ્રિત દો એક ક્ષણ. હું સતત કહેવાતા વિદ્યાર્થીઓ જાહેર કર્યું અને હાર્ડ હવે 3 કોડેડ. પરંતુ હવે, નોટિસ કેવી રીતે સ્વચ્છ મારી કોડ મેળવવા માટે શરૂ થાય છે. રેખા 22 માં, હું જાહેર વિદ્યાર્થીઓ એરે. અને વિદ્યાર્થી દેખીતી રીતે કે નોટિસ હવે માહિતી પ્રકાર. આ ફાઇલ ટોચ પર, કારણ કે નોટિસ હું હેડર ફાઈલ સમાવેશ કર્યા છે હું માત્ર એક ક્ષણ પહેલા અપ ખેંચાય છે. અને તે હેડર ફાઈલ તદ્દન ખાલી હતી એક વિદ્યાર્થી આ વ્યાખ્યા. તેથી હવે, હું મારા પોતાના વૈવિધ્યપૂર્ણ માહિતી બનાવેલ પ્રકાર કે સી વર્ષ લેખકો પહેલાં અગાઉથી વિચાર ન હતી. પરંતુ કોઈ સમસ્યા નથી. હું તેને મારી કરી શકો છો. તેથી આ વિદ્યાર્થીઓ નામની એક એરે છે જેના સભ્યો દરેક એક વિદ્યાર્થી માળખું છે. અને હું તે ત્રણ માંગો છો એરેમાં. અને હવે, બાકીના શું કરે છે આ કાર્યક્રમ છે? હું થોડી મનસ્વી કંઈક જરૂર છે. તેથી ઑનલાઇન 24 થી હું 0 થી 3 ફરી વળવું. હું પછી માટે વપરાશકર્તા પૂછો વિદ્યાર્થી માતાનો નામ. અને પછી હું પહેલાં તરીકે GetString ઉપયોગ કરો. પછી હું, વિદ્યાર્થી ઘર માટે પૂછો અને હું પહેલાં તરીકે GetString વાપરો. પરંતુ નોટિસ - સહેજ નવા વાક્યરચના ભાગ - હું, આઇ મી વિદ્યાર્થી હજુ ઇન્ડેક્સ કરી શકો છો પરંતુ હું ચોક્કસ માહિતી અંતે કેવી રીતે મેળવી શકું જો સ્ટ્રક્ટ ક્ષેત્રમાં અંદર? ઠીક છે, દેખીતી રીતે આ શું છે નવી વાક્યરચના ભાગ? તે માત્ર પર કોઈ ઓપરેટર છે. અમે ખરેખર આ પહેલાં જોઇ ન કર્યા છે. તમે કરેલા જો તમે pset પાંચ તેને જોઈ કર્યું બીટમેપ ફાઇલો સાથે પહેલાથી જ માં dived. પરંતુ કોઈ ફક્ત આ અંદર એનો અર્થ એ થાય સ્ટ્રક્ટ અથવા બહુવિધ ક્ષેત્રો, ડોટ આપી નામ અથવા મને કોઈ ઘર આપે છે. જો સ્ટ્રક્ટ ની અંદર જાઓ અર્થ એ છે કે અને તે ખાસ કરીને ક્ષેત્રો વિચાર. આ કાર્યક્રમ બાકીના શું કરે છે? તે બધા કે સેક્સી નથી. હું ફરીથી 0 થી 3 ફરી વળવું નોટિસ કે, અને હું માત્ર એક ઇંગલિશ બનાવો જેથી અને તેથી જેવા શબ્દસમૂહ જેમ કે છે માંથી કોઈ નામ પસાર જેમ કે ઘર, આઇ મી વિદ્યાર્થી અને તેમના ઘર તેમજ. અને પછી છેલ્લે, હવે અમે વિચાર શરૂ કરી શકશો અમે છીએ હવે તે આ વિશે ગુદા, શું malloc અને સાથે પરિચિત અન્ય કાર્યો કરવામાં આવી છે આ બધા સમય કરી. શા માટે હું બંને નામ મુક્ત હોય અને ઘર, છતાં પણ હું malloc કૉલ કરી હતી? GetString હતી. અને તે માટે ગંદા ઓછી ગુપ્ત હતી કેટલાક અઠવાડિયા, પરંતુ GetString છે તમામ વધારે મેમરી લીક કરવામાં આવી આમ અત્યાર સુધી બધા સત્ર મૂકો. અને છેલ્લે valgrand ચાલશે અમને આ ઉઘાડી. મને ખબર છે કારણ કે પરંતુ તે એક મોટી સોદો નથી હું માત્ર નામ મુક્ત કરી શકો છો કે જે અને ઘર, જોકે ટેકનિકલી માટે સુપર, સુપર સુરક્ષિત હોઇ શકે છે, હું પ્રયત્ન કરીશું કેટલાક ભૂલ કરી અહીં ચકાસીને. તમારી વૃત્તિ તમે શું કહી રહ્યા છો? હું શું તપાસ થવી જોઈએ હું શું છે મુક્ત પહેલાં સ્ટ્રિંગ, ઉર્ફ જે ચાર *? હું ખરેખર તપાસ થવી જોઈએ વિદ્યાર્થીઓ, જો કૌંસ હું કોઈ નામ નથી સમાન નલ. પછી તે આગળ અને મફત જવા માટે OK હશો કે નિર્દેશક, અને સમાન અથવા અન્ય એક તેમજ. વિદ્યાર્થીઓ કૌંસ હું કોઈ ઘર ન હોય તો નલ બરાબર છે, આ હવે રક્ષણ કરશે ખૂણે કેસ સામે જેમાં GetString નલ કંઈક આપે છે. અને અમે printf કરશે, એક ક્ષણ પહેલા જોયું માત્ર કહીને દ્વારા અમને અહીં અપ રક્ષણ નલ છે, કે જે અલૌકિક જોવા જવાનું છે. પરંતુ ઓછામાં ઓછા તે segfault નહીં આપણે જોયું તેમ. ઠીક છે, મને અહીં એક અન્ય વસ્તુ કરવા દો. સ્ટ્ર્ક્ટ્સ -0 એક મૂર્ખ કાર્યક્રમ પ્રકારની છે હું પછી બધા આ માહિતી દાખલ કરો, અને કારણ કે કાર્યક્રમ સમાપ્ત થાય છે એક વખત તે ગુમાવી છે. પરંતુ મને આગળ વધો અને આ કરવા દો. મને ટર્મિનલ બનાવવા દો એ બીટ મોટી વિંડો. , મને સ્ટ્ર્ક્ટ્સ 1 બનાવવા દો જે આ એક નવી આવૃત્તિ છે. હું થોડી ઝૂમ પડશે. અને હવે મને કોઈ રન દો સ્ટ્ર્ક્ટ્સ 1 સ્લેશ. વિદ્યાર્થીના નામ - ડેવિડ માથેર, રોબ કિર્કલૅંડ શું કરીએ લોરેન Leverett શું કરીએ. શું રસપ્રદ છે હવે નોટિસ છે - અને હું માત્ર આ કારણ ખબર હું પ્રોગ્રામ લખ્યો - ફાઇલ મારા વર્તમાન હવે છે ડિરેક્ટરી students.csv કહેવાય છે. તમે કેટલાક જોઇ હશે વાસ્તવિક દુનિયામાં આ. CSV ફાઈલ શું છે? મૂલ્યો અલ્પવિરામથી અલગ થયેલ છે. જો તે ગરીબ માણસ જેવા પ્રકારની છે એક એક્સેલ ફાઈલ આવૃત્તિ. તે પંક્તિઓ અને કૉલમ્સ એક ટેબલ કે તમે, એક્સેલ જેવા પ્રોગ્રામમાં ખોલી શકે છે એક મેક પર અથવા Numbers. અને હું gedit અહીં આ ફાઇલ ખોલવા જો, સૂચના - અને નંબરો નથી. માત્ર કહેવાની gedit છે મને લીટી નંબરો. આ પ્રથમ વાક્ય પર નોટિસ ફાઈલ ડેવિડ અને માથેર છે. આગામી વાક્ય રોબ અલ્પવિરામ કિર્કલૅંડ છે. અને ત્રીજી લાઇન લોરેન છે અલ્પવિરામ Leverett. તેથી હું શું બનાવ્યું છે? હવે હું એક સી કાર્યક્રમ લખેલા કરેલા અસરકારક રીતે સ્પ્રેડશીટ્સ પેદા કરી શકે છે માં ખોલી શકાય છે એક્સેલ જેવા કાર્યક્રમ. બધા કે જે અનિવાર્ય ડેટા સેટ, પરંતુ તમે ખૂબ મોટા હિસ્સામાં હોય તો તમે ખરેખર કરવા માંગો છો કે જે માહિતી ચાલાકી અને ગ્રાફ અને બનાવવા જેમ, આ કદાચ એક છે કે માહિતી બનાવવા માટે માર્ગ. વધુમાં, CSVs સામાન્ય વાસ્તવમાં સુપર છે માત્ર સરળ માહિતી સ્ટોર કરવા માટે - યાહૂ ફાઇનાન્સ, દાખલા તરીકે, તમે વિચાર તો તેમના કહેવાતા મારફતે સ્ટોક ક્વોટ્સ API, તમે કરી શકો છો કે જે નિઃશુલ્ક સેવા વર્તમાન અપ ટુ ધ તારીખ સ્ટોક વિચાર કંપનીઓ માટે ટાંકે છે, તેઓ પાછા ડેટા આપી સુપર સરળ CSV ફોર્મેટ. તેથી આપણે કેવી રીતે તે કરવા છે? વેલ, આ પ્રોગ્રામ ની સૌથી નોટિસ લગભગ સમાન. પરંતુ અહીં નીચે નોટિસ બદલે પ્રિન્ટ રેખા 35 પર આઉટ વિદ્યાર્થીઓ, આગળ, હું બચત છું કે દાવો ડિસ્કમાં વિદ્યાર્થીઓ, તેથી ફાઇલ બચત છે. તેથી હું એક ફાઇલ * જાહેર છું નોટિસ - હવે, આ સી માં અનિયમિતતા પ્રકારની છે ગમે તે કારણોસર, ફાઇલ, બધા કેપ્સ છે જે મોટા ભાગના અન્ય ડેટા પ્રકારો જેવા નથી સી માં પણ આ એક આંતરિક માહિતી પ્રકાર, ફાઈલ *. અને હું, ફાઇલ માટે નિર્દેશક જાહેર છું તમે તે વિચાર કરી શકો છો કેવી રીતે છે. fopen ખુલ્લી ફાઇલ થાય છે. તમે શું ફાઈલ ખોલવા માંગો છો? હું એક ફાઇલ ખોલવા માંગો ચાલશે કે આપખુદ students.csv કૉલ કરો. હું માંગો છો તે કંઈપણ કૉલ કરી શકે છે. અને પછી એક અનુમાન લે છે. બીજી દલીલ શું કરે છે fopen કદાચ અર્થ? અધિકાર લખવા માટે વાઈડ કરી શકતો વાંચવા માટે r છે. જો ઉમેરો માટે છે તમે પંક્તિઓ નથી અને ઍડ કરવા માંગો છો સમગ્ર બાબત પર ફરીથી લખી. પરંતુ હું ફક્ત આ ફાઇલ બનાવવા માંગો છો એક વાર, તેથી હું ભાવ અવતરણ ચિહ્નો પૂરાં કરવાં વાઇડ ઉપયોગ કરશો. અને હું વાંચી કર્યા કે માત્ર ખબર દસ્તાવેજીકરણ, અથવા મદદ પાનું. ફાઈલ નલ ન હોય તો - બીજા શબ્દોમાં, કંઈ ત્યાં ખોટું થયું હોય તો - મને પર ફરી વળવું દો 0 થી 3 વિદ્યાર્થીઓ. અને હવે કંઈક ત્યાં નોટિસ ક્યારેય જેથી થોડો અલગ અહીં લગભગ રેખા 41. તે printf નથી. તે printf ફાઇલ માટે fprintf છે. તેથી તે ફાઇલ લખી બનશે. જે ફાઈલ? જેના નિર્દેશક તમે સ્પષ્ટ એક પ્રથમ દલીલ તરીકે. પછી અમે એક ફોર્મેટ સ્ટ્રિંગ સ્પષ્ટ કરો. પછી આપણે માટે શું કરવા માંગો છો શબ્દમાળા સ્પષ્ટ પ્રથમ ટકા ઓ માટે પ્લગ, અને પછી બીજા ચલ અથવા બીજા ટકા ઓ. પછી અમે fclose સાથે બંધ થાય છે. હું છતાં, પહેલાં તરીકે મેમરી મુક્ત કરતાં હું પાછા જાઓ અને ઉમેરવા જોઈએ નલ માટે અમુક ચકાસે છે. અને તે છે. fopen, fprintf, fclose મને આપે છે લખાણ ફાઈલો બનાવવા માટે ક્ષમતા છે. હવે, તમે સમસ્યા સેટ પાંચ જુઓ પડશે છબીઓ સમાવેશ થાય છે, જે તમે ઉપયોગ કરી શકશો બાઈનરી ફાઈલો બદલે. પરંતુ મૂળભૂત છે, એ વિચાર, એ જ છે છતાં પણ તમે કરશો કામગીરી થોડુંક અલગ છે જુઓ. વાવંટોળ પ્રવાસ તેથી, પરંતુ તમે વિચાર કરશે ફાઇલ સાથે બધા ખૂબ પરિચિત I/O-- ઇનપુટ અને આઉટપુટ - pset પાંચ સાથે. અને વિશે કોઇ પ્રશ્નો અહીં પ્રારંભિક બેઝિક્સ? યાહ? શું તમે નલ કિંમત મુક્ત કરવાનો પ્રયાસ કરો તો? મુક્ત મેળવેલ છે જ્યાં સુધી હું માને છે થોડી વધુ વપરાશકર્તા મૈત્રીપૂર્ણ, તમે આ કરી શકો છો સંભવિત segfault. હું નથી કારણ કે તે રીતે પસાર ખરાબ છે મફત માને, તો તમે ચકાસવા માટે ત્રાસ તે સંભવિત કચરો હશે કારણ કે તે માટે પોતે શું કરવા માટે સમય વિશ્વમાં દરેક. ગુડ પ્રશ્ન છે, જોકે. બધા હક, આ પ્રકારની નહીં, તેથી અમને એક રસપ્રદ વિષય છે. સમસ્યા સમૂહ ની થીમ પાંચ વિદેશી છે. ઓછામાં ઓછા તે એક ભાગ છે સમસ્યા સમૂહ છે. વિદેશી સામાન્ય રીતે સંદર્ભ લે છે કે કરી શકે છે અથવા માહિતી વસૂલાત કાઢી નાખવામાં આવ્યા છે શકે નહિં ઇરાદાપૂર્વક. અને તેથી હું તમને ઝડપી આપી કરશો વિચાર્યું શું સ્વાદ ખરેખર બધા પર ચાલે છે હેઠળના આ સમય તમારા કમ્પ્યુટરની હૂડ. હમણાં પૂરતું, તમે અંદર હોય, તો તમારા લેપટોપ અથવા તમારા ડેસ્કટોપ કમ્પ્યુટર હાર્ડ ડ્રાઈવ, તે ક્યાં તો એક યાંત્રિક છે વાસ્તવમાં ચક્રીય કે ઉપકરણ - platters કહેવાય પરિપત્ર વસ્તુઓ તદ્દન કે જેવા દેખાય છે તે હું માત્ર જોકે, અહીં સ્ક્રીન પર હતી આ વધુને વધુ જૂની શાળા છે. આ ત્રણ અને-a-અડધા ઇંચ છે હાર્ડ ડ્રાઈવ. અને ત્રણ અને અડધા ઇંચ ઉલ્લેખ કરે છે તમે તેને સ્થાપિત જ્યારે વસ્તુ સાથે કમ્પ્યુટર માં. હવે તમારા લેપટોપ તમે ઘણા ગાય્ઝ , નક્કર સ્થિતિમાં ડ્રાઈવો, અથવા SSDs છે જે ભાગો ખસેડવાની છે નં. તેઓ RAM જેવા વધુ અને ઓછો જેવા છો આ યાંત્રિક ઉપકરણો. પરંતુ વિચારો, પણ આ જ છે ચોક્કસપણે તેઓ સંબંધ તરીકે સમસ્યા પાંચ સુયોજિત કરવા માટે. અને જો તમે હાર્ડ ડ્રાઈવ હવે વિશે વિચારો તો જે વર્તુળ, છે પ્રતિનિધિત્વ હું અહીં આ જેમ ડ્રો કરીશું. તમે, તમારા કમ્પ્યુટર પર એક ફાઈલ બનાવી રહ્યા હોય ત્યારે તે SSD છે, અથવા કે શું આ કિસ્સામાં, એક જૂની શાળા હાર્ડ ડ્રાઈવ, તે ફાઈલ બહુવિધ બીટ્સ સમાવેશ થાય છે. માતાનો આ 0 અને 1 ચોક્કો કહે છે કે દો, 0 સે અને 1 સે એક સમગ્ર ટોળું. તેથી આ મારા સમગ્ર હાર્ડ ડ્રાઈવ છે. આ દેખીતી રીતે ખૂબ મોટી ફાઇલ છે. અને તે સમયે 0 સે અને 1 સે અપ ઉપયોગ કરી રહ્યા છે ભૌતિક platter ભાગ. ઠીક છે, કે જે ભૌતિક ભાગ શું છે? વેલ, તે હાર્ડ ડ્રાઇવ પર કે બહાર વળે આ પ્રકારના ઓછામાં ઓછા છે, આ નાના ઓછી ચુંબકીય કણો. અને તેઓ અનિવાર્યપણે ઉત્તર હોય છે અને તેમને દક્ષિણ ધ્રુવની, જેથી જો તમે તે ચુંબકીય કણો એક બંધ આ રીતે, તમે તે કે જે કહી શકે છે 1 પ્રતિનિધિત્વ કરે છે. અને તે ઊલટું દક્ષિણ તો ઉત્તર, તમે તે કે જે કહી શકે છે 0 પ્રતિનિધિત્વ કરે છે. તેથી વાસ્તવિક ભૌતિક વિશ્વમાં, કે તમે કંઈક પ્રતિનિધિત્વ કરી શકે છે કેવી રીતે દ્વિસંગી 0 રાજ્ય અને 1. કે જેથી બધા ફાઈલ છે છે. ચુંબકીય એક સમગ્ર ટોળું છે તેમના આ રીતે અથવા છે કે કણો આ રીતે, બનાવવા દાખલાની ના 0 સે અને 1 સે. પરંતુ તે, તમે ફાઈલ સંગ્રહો ત્યારે બહાર વળે કેટલીક માહિતી અલગ સચવાય છે. તેથી આ એક ઓછી ટેબલ છે ડિરેક્ટરી, તેથી વાત કરવા માટે. અને હું આ સ્તંભ નામ પર ફોન કરો, અને પડશે હું આ સ્તંભ પાંચ આંકડાના US સ્થાન કૉલ કરશો. અને હું ધારવું, કહે જઇ રહ્યો છું આ મારા રેઝ્યૂમે છે. મારી resume.doc પર સંગ્રહાયેલ છે પાંચ આંકડાના US સ્થાન, 123 કહે છે ચાલો. હું હંમેશા કે જે નંબર માટે જાઓ. પરંતુ માત્ર ગમે કહે છે કે તે પૂરતા RAM માં, તમે હાર્ડ ડ્રાઈવ લઈ શકે છે કે gigabyte અથવા 200 ગીગાબાઇટ્સ છે અથવા ટેરાબાઈટ, અને તમે આ કરી શકો છો નંબર બાઇટ્સ બધા. તમે 8 બીટ્સ બધા હિસ્સામાં નંબર કરી શકો છો. તેથી અમે તે આ કહે છે પડશે પાંચ આંકડાના US સ્થાન 123 છે. તેથી મારા ઓપરેટિંગ આ ડિરેક્ટરી અંદર સિસ્ટમ યાદ છે કે મારા રેઝ્યૂમે પાંચ આંકડાના US સ્થાન 123 પર છે. પરંતુ તે જ્યારે રસપ્રદ નહીં તમે ફાઈલ કાઢી નાંખો. દાખલા તરીકે, જેથી - અને thankfully, વિશ્વના સૌથી વધુ છે આ પર પડેલા - શું ત્યારે થાય છે તમે તમારા મેક ઓએસ ટ્રૅશ માટે એક ફાઇલ ખેંચો અથવા તમારા Windows રીસાયકલ બિન? કે કરી ના હેતુ શું છે? તે ફાઈલ છુટકારો મેળવવા માટે દેખીતી રીતે ચોક્કો પરંતુ શું ખેંચીને ના અધિનિયમ કરે છે અને તમારા ટ્રૅશ કે માં ડ્રોપ તમારા રીસાઇકલ બિન કમ્પ્યુટર પર શું? ખરેખર એકદમ કંઈ. તે માત્ર એક ફોલ્ડર જેવી છે. તે ખાતરી કરવા માટે ખાસ ફોલ્ડર છે. પરંતુ તે વાસ્તવમાં ફાઈલ કાઢી નથી? ના, ઠીક છે, કારણ કે તમે કદાચ અમુક જેવી કરવામાં આવી છે, ખરેખર ઓહ, તમે ન હતી તે કરવા માટે થાય છે. તેથી જો તમે ડબલ ક્લિક કરો ટ્રૅશ કે રિસાયકલ બિન. તમે આસપાસ poked કરી છે અને તમે પ્રાપ્ત કર્યા છે માત્ર તેને ખેંચીને ફાઇલ ત્યાં બહાર. તેથી સ્પષ્ટ છે, તે જરૂરી નથી તેને કાઢી નાંખવા. ઠીક, તો તમે સ્માર્ટ કરતા નથી. તમે જાણો છો કે માત્ર તેને ખેંચીને ટ્રૅશ કે રિસાયકલ બિન અર્થ એ નથી તમે ટ્રૅશને ખાલી કરવાથી રહ્યાં છો. તેથી તમે અપ મેનૂ પર જાઓ અને તમે કહી કચરાપેટી અથવા ખાલી રીસાયકલ બિન. પછી શું થાય? અરે વાહ, તેથી તે વધુ જેથી કાઢી નાખવામાં આવે છે. પરંતુ શું થાય છે કે આ બધા છે. કમ્પ્યુટર જ્યાં forgets resume.doc હતી. પરંતુ શું દેખીતી રીતે બદલાઈ નથી ચિત્રમાં? આ બીટ્સ, હું દાવો છે કે 0 સે અને 1 સે છે કેટલાક ભૌતિક પાસા સાઇટ પર હાર્ડવેર. તેઓ હજુ પણ છો. તે માત્ર કમ્પ્યુટર છે ચોક્કો ભૂલી શું તેઓ છે. તેથી તે અનિવાર્યપણે મુક્ત આ ફાઈલની તેઓ ફરીથી ઉપયોગ કરી શકાય બીટ્સ કે જેથી. પરંતુ તમે વધુ ફાઈલો બનાવશો નહિં ત્યાં સુધી અને વધુ ફાઇલો, અને વધારે ફાઇલો ચાલશે સંભવતઃ તે 0 સે અને 1 સે, તે ચુંબકીય કણો, ફરીથી મળે છે, માટે ઊલટું અથવા જમણી બાજુ ઉપર, અન્ય ફાઇલો, 0 સે અને 1 સે. તેથી તમે સમય આ વિંડો છે. અને તે ધારી ન ચોક્કો લંબાઈ, ખરેખર. તે તમારી હાર્ડ માપ પર આધાર રાખે છે ડ્રાઇવ અને કેટલી ફાઈલો તમારી પાસે અને કેવી રીતે ઝડપથી તમે નવા બનાવે છે. પરંતુ સમય ના આ વિંડો દરમિયાન ત્યાં છે તે ફાઈલ સંપૂર્ણપણે હજુ પણ છે જે વસૂલ. તમે ક્યારેય મેકાફી જેવા કાર્યક્રમો વાપરે છે તેથી જો અથવા નોર્ટન પુનઃપ્રાપ્ત કરવાનો પ્રયાસ ડેટા, તેઓ કરી રહ્યાં છો બધા માટે પ્રયાસ કરી રહ્યા છે આ કહેવાતા ડિરેક્ટરીમાં પુનઃપ્રાપ્ત તમારી ફાઈલ હતી, જ્યાં બહાર આકૃતિ. અને ક્યારેક નોર્ટન અને કહે છે, રહેશે ફાઈલ 93% વસૂલ છે. ઠીક છે, કે શું અર્થ છે? માત્ર અર્થ એ થાય કે કોઇ અન્ય ફાઇલ સાંયોગિક રીતે જ કહે છે, મદદથી અંત તમારા મૂળ ફાઇલ બહાર તે બીટ્સ. તેથી ખરેખર શું સામેલ છે માહિતી પુનઃસ્થાપન છે? વેલ, તમે કંઈક ન હોય તો નોર્ટન, તમારા કમ્પ્યુટર પર પહેલેથી સ્થાપિત થયેલ છે તમે ક્યારેક કરી શકો છો શ્રેષ્ઠ જોવા છે સમગ્ર હાર્ડ ડ્રાઈવ શોધી ખાતે બીટ્સ ઓફ પેટર્ન. અને સમસ્યા સેટ થીમ્સ એક પાંચ તમે શોધી કરશે કે જે છે હાર્ડ ડ્રાઈવ સમકક્ષ છે, એક ફોરેન્સિક એક એક કોમ્પેક્ટ ફ્લેશ કાર્ડ છબી જો 0 સે માટે શોધ ડિજિટલ કૅમેરા, ઉચ્ચ સાથે સામાન્ય રીતે 1 સે, સંભાવના છે, એ પ્રતિનિધિત્વ કોઈ JPEG છબી શરૂ કરો. અને તમે ગાય્ઝ દ્વારા તે છબીઓ પુનઃપ્રાપ્ત કરી શકાય છે હું આ પેટર્ન જુઓ તો, એમ ધારી રહ્યા છીએ જો ફોરેન્સિક છબી પર બિટ્સ સાથે ચિહ્નિત કરે છે કે જે ઉચ્ચ સંભાવના, કોઈ JPEG શરૂઆત. અને હું ફરીથી આ જ પેટર્ન જુઓ તો, કે કદાચ શરૂઆતમાં ચિહ્નિત કરે છે અન્ય JPEG, અને અન્ય JPEG, અને અન્ય JPEG. અને આ ખાસ કરીને કેવી રીતે માહિતી પુનઃપ્રાપ્તિ કામ કરશે. શું JPEGs વિશે સરસ છે પણ તેમ છતાં છે ફાઇલ ફોર્મેટ પોતે કંઈક છે દરેક જેમ કે જટીલ, શરૂઆત ફાઈલ ખરેખર એકદમ ઓળખી છે , તમે જોશો તરીકે, અને સરળ જો તમે પહેલાથી જ નથી કર્યું તો. તેથી માતાનો નીચે નજીકથી નજર નાંખો કરવામાં આવી બરાબર શું તરીકે હૂડ ચાલુ છે, અને આ 0 સે અને 1 સે શું જો તમે એક બીટ વધુ આપવા માટે છે, આ ચોક્કસ પડકાર માટે સંદર્ભ. [વિડિઓ પ્લેબેક] તમારા પીસી સૌથી ભંડાર ક્યાં તેના કાયમી માહિતી છે. કે આમ કરવા માટે, માહિતી RAM ના પ્રવાસ કહેવું છે કે જે સોફ્ટવેર સંકેતો સાથે કેવી રીતે કે ડેટા સ્ટોર કરવા માટે હાર્ડ ડ્રાઈવ. હાર્ડ ડ્રાઈવ સર્કિટ અનુવાદ વોલ્ટેજ માં તે સંકેતો વધઘટ. આ વળાંક, હાર્ડ ડ્રાઈવ માતાનો નિયંત્રિત ખસેડવાની ભાગોમાં, થોડા કેટલાક જો બાકી મૂવિંગ પાર્ટ્સ આધુનિક કોમ્પ્યુટર. આ સંકેતો કેટલાક મોટર નિયંત્રણ જે મેટલ સ્તરીય platters ચક્રીય. તમારો ડેટા ખરેખર સંગ્રહાયેલ છે આ platters પર. અન્ય સંકેતો વાંચો / લખો ખસેડવા વાંચી અથવા હેડ જો platters પર માહિતી લખો. આ મશીનરી જેથી ચોક્કસ માનવ કે વાળ પણ વચ્ચે પસાર કરી શક્યું નથી હેડ અને સ્પિનિંગ platters. હજુ સુધી, તે બધા જબરદસ્ત ઝડપે કામ કરે છે. [END વિડિઓ પ્લેબેક] DAVID MALAN: થોડું ઝૂમ વધારો ઊંડા હવે શું વાસ્તવમાં તે platters પર. [વિડિઓ પ્લેબેક] માતાનો જુઓ-ચાલો આપણે માત્ર પર ધીમી ગતિએ થયો હતો. વીજળી સંક્ષિપ્ત પલ્સ હોય છે ત્યારે flips, તો વાંચવા / લખવા વડા મોકલવામાં માટે એક નાના ઇલેક્ટ્રોમેગ્નેટિક પર બીજા એક અપૂર્ણાંક. આ ચુંબક જે ક્ષેત્ર બનાવે છે ફેરફારો નાના નાના ના વલણ મેટલ કણો ભાગ જે કોટ દરેક platter સપાટી. આ નાના એક પેટર્ન શ્રેણી, ડિસ્ક પર ચાર્જ અપ વિસ્તારોમાં એક બીટ રજૂ બાઈનરી સંખ્યામાં માહિતી કમ્પ્યુટર્સ દ્વારા ઉપયોગમાં સિસ્ટમ. હવે, વર્તમાન મોકલવામાં આવે છે જો એક રસ્તો રીડ દ્વારા / વિસ્તાર વડા લખી એક દિશામાં ધ્રુવીકરણ થાય છે. વર્તમાન માં મોકલવામાં આવે છે તો વિરુદ્ધ દિશામાં, જો ધ્રુવીકરણ વિપરીત છે. તમે હાર્ડ ડિસ્ક બોલ માહિતી વિચાર કેટલો? જસ્ટ પ્રક્રિયા ઉલટાવી. તેથી તે ડિસ્ક પર કણો છે કે માં વર્તમાન વિચાર વડા ખસેડવાની વાંચવા / લખવા. આ લાખો મળીને મૂકો ચુંબકીય સેગમેન્ટો, અને તમે એક ફાઇલ મળી છે. હવે, એક ફાઈલ ટુકડાઓ કરી શકે છે બધા ડ્રાઇવ માતાનો ફેલાયેલ કરી આ વાસણ જેવા પ્રકારની platters, તમારા ડેસ્ક પર કાગળો. તેથી ખાસ વધારાની ફાઇલ ટ્રેક રાખે છે બધું છે કે જ્યાં છે. શું તમે હતા ઈચ્છો નહિં, કે કંઈક? [END વિડિઓ પ્લેબેક] DAVID MALAN: બરાબર, કદાચ નથી. તેથી તમે કેવી રીતે ઘણા ગાય્ઝ આ સાથે થયો હતો? ઠીક છે, તેથી તેને ઓછા અને ઓછા છે હાથ દર વર્ષે. પરંતુ હું તમને ઓછામાં ઓછા પરિચિત કરશો સંતુષ્ટ છું તેમની સાથે, આ કારણ કે આપણા પોતાના પુસ્તક ડેમો, દુર્ભાગ્યે, ખૂબ જ મૃત્યુ થાય છે પારિવારિકતા અહીં મૃત્યુ ધીમું. પરંતુ આ, ઓછામાં પાછળ, હું છે હાઇ સ્કુલ, બેકઅપ માટે વપરાય ઉપયોગ. અને તે અમેઝિંગ હતો, કારણ કે તમે પર 1.4 મેગાબાઇટ્સ સ્ટોર કરી શકે છે આ ચોક્કસ ડિસ્ક. અને આ ઉચ્ચ ઘનતા વર્ઝન હતું ધરાવે છે જે એચડી, દ્વારા દર્શાવવામાં આજના HD વિડિઓઝ પહેલાં થાય છે. ધોરણ ઘનતા 800 કિલોબાઇટ હતી. અને તે પહેલાં, ત્યાં હતા 400 કિલોબાઈટ ડિસ્ક. અને તે પહેલાં, 5 અને 1/4 હતી સાચી ફ્લોપી હતા, જે ઇંચ ડિસ્ક,, અને થોડી વિશાળ અને ઊંચી અહીં આ વસ્તુઓ કરતાં. પરંતુ તમે ખરેખર કહેવાતા જોઈ શકો છો આ ડિસ્કનો ફ્લોપી પાસા. અને વિધેયાત્મક રીતે, તેઓ ખરેખર છો અંતે ઓફ હાર્ડ ડ્રાઈવો માટે ખૂબ સમાન ઓછામાં આ પ્રકાર. નવી કમ્પ્યુટર્સ ફરી, SSDs અલગ થોડી કામ કરે છે. પરંતુ જો તમે તે થોડી મેટલ ટેબ ખસેડવા તો, તમે ખરેખર, થોડું કૂકી જોઈ શકો છો અથવા platter. આ એક જેવી મેટલ નથી. આ એક ખરેખર કેટલાક સસ્તા છે સામગ્રી પ્લાસ્ટિક. અને તમે વારંવાર હાલવું તે પ્રકારની કરી શકો છો. અને તમે trully માત્ર કેટલાક બંધ લૂછી કર્યું બિટ્સ અથવા ચુંબકીય કણો નંબર આ ડિસ્કમાંથી. તેથી thankfully, તે કંઇ નથી. કે વસ્તુ રીતે તો - અને આવરી તમારી આંખો અને તમારા પાડોશી તે - માત્ર પ્રકારની આ ખેંચવાનો તમે કરી શકો છો કે જેમ સમગ્ર આવરણ બોલ. પરંતુ થોડી વસંત ત્યાં છે, તેથી તમારી આંખો સાથે પરિચિત. તેથી હવે તમે સાચી ફ્લોપી ડિસ્ક છે. અને આ શું છે તે વિશે નોંધપાત્ર છે આ છે કે જે ઘણી છે એક મોટા નાના પાયે પ્રતિનિધિત્વ હાર્ડ ડ્રાઈવ, આ વસ્તુઓ, સુપર છે સુપર સરળ. તમે હવે તેને તળિયે ચૂંટવું કે જો કે મેટલ વસ્તુ બંધ છે, અને છાલ તેમને ખોલવા છે, બધા બે ટુકડાઓ છે લાગ્યું અને કહેવાતા ફ્લોપી ડિસ્ક અંદરની પર મેટલ એક ભાગ સાથે. અને અડધા ત્યાં જાય છે મારા ડિસ્ક સમાવિષ્ટો. તેમને અન્ય અડધા ત્યાં જાય છે. પરંતુ તે અંદર ફરતો હતો તે બધા છે યસ્ટરયર્સ માં તમારા કમ્પ્યુટરની. અને ફરી, પરિપ્રેક્ષ્ય માં આ મૂકવા માટે કેવી રીતે મોટું છે તમારા મોટા ભાગના હાર્ડ આ દિવસ નહીં? 500 ગીગાબાઇટ્સ, એક ટેરાબાઈટ, કદાચ માં ડેસ્કટોપ કોમ્પ્યુટર, 2 terabytes, 3 terabytes 4 terabytes, બરાબર ને? આ એક મેગાબાઇટ છે, આપવા અથવા લેવા પણ એક લાક્ષણિક MP3 ફિટ કરી શકતા નથી કે જે હવે આ દિવસોમાં, અથવા અમુક સમાન પ્રકારની સંગીત ફાઇલ. તેથી થોડું તમારા માટે સંભારણું આજે, અને પણ શું contextualize મદદ કરવા માટે અમે મંજૂર માટે લઈ આવશે હવે સમસ્યા પાંચ સુયોજિત કરો. તેથી તે રાખવા તમારામાં છે. તેથી હશે જ્યાં મને સંક્રમણ દો આગામી pset ખર્ચમાં તેમજ. તેથી અમે હવે આ પાનું માટે સુયોજિત કર્યા છે - ઓહ, ઝડપથી જાહેરાત એક દંપતિ. આ શુક્રવાર, તમે ઈચ્છો તો CS50 જોડાવા લંચ માટે, સામાન્ય સ્થળ પર જાઓ cs50.net/rsvp. અને અંતિમ પ્રોજેક્ટ - જેથી અભ્યાસક્રમ અનુસાર, અમે પોસ્ટ કરેલા પહેલાથી જ અંતિમ પ્રોજેક્ટ સ્પષ્ટીકરણ. એનો અર્થ એ નથી કે ખ્યાલ તે ખાસ કરીને તરત કારણે છે. તે માત્ર વિચાર, ખરેખર, પોસ્ટ કરી રહ્યું છે તમે ગાય્ઝ તે વિશે વિચારવાનો. અને ખરેખર, એક સુપર નોંધપાત્ર તમે ટકાવારી હાથ ધરવા આવશે સામગ્રી પર અંતિમ પ્રોજેક્ટ છે કે અમે પણ વર્ગ માટે મેળવેલ નથી, પરંતુ શરૂઆતમાં આગામી સપ્તાહ તરીકે ચાલશે. સૂચના, જોકે, ઉલ્લેખનું માટે કહે છે કે જો થોડા વિવિધ ઘટકો અંતિમ પ્રોજેક્ટ. પ્રથમ, થોડા અઠવાડિયામાં, એક પૂર્વ દરખાસ્ત માટે એક સુંદર કેઝ્યુઅલ ઇમેઇલ તમારા તેમને કહેવું ટીએફ અથવા શું તમે છો સાથે, તમારા પ્રોજેક્ટ માટે વિશે વિચારવાનો આ બોલ પર કોઈ પ્રતિબદ્ધતા. દરખાસ્ત તમારા ચોક્કસ હશે પ્રતિબદ્ધતા, એમ કહીને, અહીં, આ શું છે હું મારા પ્રોજેક્ટ માટે કરવા માંગો છો. તમે શું વિચારો છો? ખૂબ મોટી? ખૂબ નાની? તે વ્યવસ્થા છે? અને તમે વધુ વિગતો માટે ઉલ્લેખનું જુઓ. અઠવાડિયા દંપતિ કે પછી સ્થિતિ છે સમાન છે, જે અહેવાલ, માત્ર કેવી રીતે કહે છે તમારી ટીએફ માટે કેઝ્યુઅલ ઇમેઇલ તમે તમારી અંતિમ છે અત્યાર સુધી પાછળ અનુસરતા પ્રોજેક્ટના અમલીકરણ, જો CS50 Hackathon કે જે દરેક આમંત્રિત કર્યા છે, એક ઘટના હશે જે 7:00 સુધી એક સાંજે 8:00 PM પર પોસ્ટેડ આગામી સવારે પોસ્ટેડ. હું અઠવાડિયામાં ઉલ્લેખ કર્યો છે શકે પિઝા, શૂન્ય, વિલ, 9:00 PM પર પોસ્ટેડ ખાતે સેવા અપાયેલ 1:00 ખાતે ચિની ખોરાક પોસ્ટેડ. અને તમે 5:00 ખાતે હજુ પણ જાગતું કરશો તો પોસ્ટેડ, અમે નાસ્તો માટે IHOP લઈ શકશો. તેથી Hackathon વધુ એક છે વર્ગ માં યાદગાર અનુભવો. પછી અમલીકરણ કારણે છે, અને પછી લક્ષણયુક્ત CS50 ફેર. આ બધી પર વધુ વિગતો આ અઠવાડિયામાં આવે છે. પરંતુ માતાનો કંઈક પાછા જવા દો જૂના શાળા - ફરીથી, એક એરે. તે નિવારે છે કારણ કે તેથી ઝાકઝમાળ, સરસ હતી અમે જેવી સમસ્યાનો માત્ર એક જોયું વિદ્યાર્થી માળખાં સાથે પહેલા ક્ષણ નિયંત્રણ થોડી બહાર મેળવવામાં જો આપણે વિદ્યાર્થી એક વિદ્યાર્થી બે, હોય માંગો છો વિદ્યાર્થી ત્રણ, વિદ્યાર્થી પર કોઈ ટપકું ટપકું, અમુક વિદ્યાર્થીઓ મનસ્વી સંખ્યા. એરેને તેથી, થોડા અઠવાડિયા પહેલા માં પડયું અને હલ અમારી સમસ્યાઓ નથી બધા અગાઉથી જાણીને કેવી રીતે ઘણી વસ્તુઓ અમુક પ્રકારની અમે છો. અને અમે સ્ટ્ર્ક્ટ્સ અમને મદદ કરી શકો છો કે જે જોઈ કર્યું વધુ અમારી કોડ આયોજન અને રાખવા જેમ કલ્પનાત્મક સમાન ચલો, નામ અને ઘર, મળીને, કે જેથી અમે અંદર એક એન્ટિટી તરીકે, તેમને સારવાર કરી શકે છે જે નાના ટુકડાઓ છે. પરંતુ કેટલાક ગેરફાયદા એરે છે. આ ગેરલાભ કેટલાક શું છે અમે આવી સંગ્રહ સાથે આમ અત્યાર સુધી? કે શું? ચોક્કસ માપ - તેથી પણ તમે કદાચ છતાં એક માટે મેમરીને ફાળવવા સમક્ષ રજુ કરવાનો પ્રયત્ન અરે, એક વાર તમે જાણતા કેવી રીતે ઘણા વિદ્યાર્થીઓ તમે તમારી પાસે કેટલા અક્ષરો ધરાવે છે, વપરાશકર્તા માંથી, એક વાર તમે ફાળવવામાં કર્યું એરે, તમે પ્રકારની દોરવામાં કર્યું એક ખૂણામાં માં જાતે. તમે નવા તત્વો સામેલ કરી શકતા નથી કારણ કે એક એરે મધ્યમાં માં. તમે વધુ તત્વો સામેલ કરી શકતા નથી એક એરે ઓવરને અંતે. ખરેખર, તમે બનાવવા માટે આશરો છે અમે ચર્ચા કરી છે તેમ સમગ્ર નવી એરે, નવા માં જૂની નકલ. અને ફરી, કે માથાનો દુખાવો છે કે તમે માટે સાથે સોદા GetString. પરંતુ ફરીથી, તમે પણ સામેલ કરી શકતા નથી એરે મધ્યમાં માં કંઈક દર સંપૂર્ણપણે ભરવામાં ન હોય તો. હમણાં પૂરતું, આ એરે જો અહીં કદ છ જ, તે પાંચ વસ્તુઓ છે વેલ, તમે માત્ર ખીલી શકે ઓવરને પર કંઈક. પરંતુ તમે કંઈક દાખલ કરવા શું માંગો છો, તો ના મધ્યમ માં અરે, તે હોઈ શકે છે, તેમ છતાં તે છ વસ્તુઓ પાંચ બહાર? ઠીક છે, આપણે બધા હતી જ્યારે શું કર્યું અમારા માનવ સ્વયંસેવકો સ્ટેજ માં અઠવાડિયા છેલ્લા? અમે અહીં કોઈને મૂકી કરવા ઈચ્છતો હોય તો, ક્યાંતો આ ખસેડવા માટે કેવી રીતે આ લોકો માર્ગ, અથવા આ ખસેડવા માટે કેવી રીતે આ લોકો માર્ગ છે, અને તે ખર્ચાળ બની ગઇ હતી. આ એક અંદર લોકો સ્થળાંતર અરે ઉમેરો અને પડતર અંત અમને સમય, તેથી ઘણો અમારા એ સ્ક્વેર્ડ ઓફ માટે, નિવેશ સોર્ટ જેવા વખત ચાલી હમણાં પૂરતું, સૌથી ખરાબ કિસ્સામાં. તેથી એરેને મહાન હોય છે, પરંતુ તમને હોય તમે તેમને માંગો છો કેવી રીતે મોટા અગાઉથી ખબર. તેથી બરાબર, અહીં ઉકેલ છે. હું અગાઉથી ખબર ન હોય તો કેટલા વિદ્યાર્થીઓ હું હોઈ શકે છે, અને હું એક વાર ખબર હું નક્કી, છતાં, હું સાથે અટવાઇ છું , શા માટે હું માત્ર હંમેશા ઘણા વિદ્યાર્થીઓ નથી બે વખત તેટલી જગ્યા ફાળવો મને લાગે છે તેમ હું જરૂર છે? કે વાજબી ઉકેલ નથી? વાસ્તવિકતાથી, હું અમે છો લાગતું નથી 50 થી વધુ સ્લોટ્સ જરૂર જવા મધ્યમ કદ વર્ગ માટે એક એરે માં, જેથી માતાનો માત્ર ગિરફતારી દો. હું ફક્ત મારા એરે 100 સ્લોટ્સ બનાવવા પડશે જેથી અમે ચોક્કસપણે વિચાર કરી શકો છો હું અપેક્ષા વિદ્યાર્થીઓ સંખ્યા કેટલાક મધ્યમ કદના વર્ગ છે. તેથી શા માટે માત્ર ગિરફતારી અને ફાળવી નથી એક એરે માટે વધુ મેમરી, ખાસ કરીને, તમે પણ જરૂર પડી શકે છે લાગે કરતાં? આ સરળ pushback શું છે આ વિચાર માટે? તમે માત્ર મેમરી બગાડ કરી રહ્યા છીએ. પછી તમે લખવા શાબ્દિક દરેક કાર્યક્રમ કદાચ બમણી બધી મેમરીનો ઉપયોગ કરે છે તરીકે તમે ખરેખર જરૂર છે. અને માત્ર એક જેવા લાગે છે નથી કે ખાસ કરીને ભવ્ય ઉકેલ. વધુમાં, તે માત્ર ઘટે સમસ્યા સંભાવના. જો તમે લોકપ્રિય કોર્સ હોય થાય છે એક સત્ર અને તમે 101 છે વિદ્યાર્થીઓ, તમારા કાર્યક્રમ હજુ પણ છે મૂળભૂત એ જ મુદ્દો સામનો. તેથી thankfully માટે ઉકેલ છે સ્વરૂપમાં આ જાહેરાત બધા અમારી સમસ્યાઓ છે કે જે માહિતી માળખાં રાશિઓ કરતાં વધુ જટિલ અમે આમ અત્યાર સુધી જોઇ છે. આ, હું દાવો, લિંક કરેલા યાદી છે. આ નંબરોની યાદી છે - 9, 17, 22, 26, અને 34 - માર્ગ દ્વારા એકસાથે કડી થયેલ હોય છે કે જે શું હું તીર તરીકે દોરેલા કર્યું છે. અન્ય શબ્દોમાં, જો હું રજૂ કરવા માગતા હતા એક અરે, હું શું કરી શકે છે આ કંઈક. અને હું ઓવરહેડ પર આ મૂકીશું માત્ર એક ક્ષણ. હું શું કરી શકે છે - હેલ્લો, બધા અધિકાર. દ્વારા ઊભા. અહીં નવા કમ્પ્યુટર, સ્પષ્ટ - બધા અધિકાર. તેથી હું એરે આ નંબરો હોય તો - 9, 17, 22, 26, 24 - માપવાના જરૂરી નથી. બધા હક, તેથી અહીં મારા એરે છે - દેવ ઓહ. બધા હક, તેથી અહીં મારા એરે છે. દેવ મારા ઓહ. [હાસ્ય] DAVID MALAN: ડોળ કરવો. તે પાછળ જવા માટે ખૂબ પ્રયત્ન છે અને તેથી ત્યાં, કે જે ઠીક - 26. તેથી અમે આ ઍરેની છે 9, 17, 22, 26, અને 34. તમે તે જોઈ શકે છે માટે મૂંઝવતી ભૂલ હું માત્ર બનાવવામાં આવે છે, ત્યાં તે છે. તેથી હું આ દાવો છે કે એક ખૂબ જ કાર્યક્ષમ ઉકેલ. હું ઘણા ints તરીકે ફાળવવામાં કર્યું હું જરૂર પડશે - એક, બે, ત્રણ, ચાર, પાંચ, છ - અને હું પછી નંબરો સ્ટોર કરી છે આ ઍરેની પર આધારિત છે. પરંતુ ધારવું, તો પછી, હું સામેલ કરવા માંગો છો નંબર 8 જેવા કિંમત? ઠીક છે, તે જ્યાં જાઓ નથી? હું સામેલ કરવા માંગો છો ધારવું 20 જેવો સંખ્યા. ઠીક છે, તે જ્યાં જાઓ નથી? ક્યાંક ત્યાં મધ્યમાં, અથવા નંબર 35 પર જવા માટે છે ક્યાંક ઓવરને અંતે. પરંતુ હું જગ્યા બહાર છું. અને તેથી આ મૂળભૂત પડકાર છે ઉકેલ છે નથી કે એરે છે. હું GetString, એક ક્ષણ પહેલા એવો દાવો કર્યો હતો આ સમસ્યા નિવારે છે. જો તમે છઠ્ઠા નંબર દાખલ કરવા માંગો છો આ એરે માં, ઓછામાં ઓછા એક શું છે ઉકેલ તમે ખાતરી માટે પર પાછા પડી શકે માત્ર અમે GetString સાથે આવું જેવી? કે શું? ઠીક છે, તે મોટી છે તેની ખાતરી સરળ થાય કરતાં જણાવ્યું હતું કે,. અમે જરૂરી એરે બનાવી શકતા નથી મોટા છે, પરંતુ આપણે શું કરી શકીએ? કદ મોટી છે કે નવી અરે, બનાવો 6, અથવા કદાચ કદ 10, અમે માંગતા હોય તો આગળ વસ્તુઓ વિચાર કરો અને પછી કૉપિ માટે જૂના નવા માં અરે, અને પછી જૂના એરે મુક્ત. પરંતુ ચાલી સમય શું છે હવે તે પ્રક્રિયાના? તે એ છે કે મોટા ગુમાવનારા કારણ કે કોપી તમે કેટલાક એકમો ખર્ચ ચાલે છે અમે પાસે સમય છે, તેથી તેથી આદર્શ ન હોય તો ચાલે છે, જે નવા અરે, ફાળવો બે વખત તરીકે ખૂબ ઉપયોગ કરવા માટે અસ્થાયી મેમરી. નવી માં જૂની નકલ કરો - હું તેનો અર્થ છે, તે માત્ર એક માથાનો દુખાવો છે, જે ફરીથી, શા માટે અમે લખ્યું છે જો તમે GetString. અમે બદલે તેથી શું શકે? ઠીક છે, શું અમારી માહિતી બંધારણ વાસ્તવમાં તે gaps છે? હું કર્યા મારા ધ્યેય આરામ કે ધારવું મેમરી સંલગ્ન હિસ્સામાં, જ્યાં 9 છે, જે 17, અધિકાર આગામી છે જમણી 22 આગામી, અને તેથી પર. અને 9 અહીં પર હોઇ શકે છે કે જે ધારવું RAM, અને 17, RAM માં અહીં કરી શકો છો અને 22 RAM માં અહીં કરી શકો છો. અન્ય શબ્દોમાં, હું તેમને જરૂર નથી પણ હવે પાછળ પાછળ. હું માત્ર અચાનક એક સોય થ્રેડ છે આ નંબરો દરેક, અથવા દરેક મારફતે આ ગાંઠો છે, અમે ફોન કરો પડશે હું તેમને દોરેલા છે તેમ લંબચોરસ માટે જો છેલ્લા મેળવવા માટે કેવી રીતે યાદ પ્રથમ આવા નોડ. તેથી પ્રોગ્રામિંગ રચવું શું છે અમે ખૂબ તાજેતરમાં જોયેલા કે જેની સાથે હું કે થ્રેડ અમલીકરણ, અથવા શકો છો અહીં દોરેલા હું કરી શકો છો, જે સાથે તે તીર અમલ? તેથી પોઇન્ટર, અધિકાર? હું માત્ર નથી ફાળવી તો Int, પરંતુ નોડ - અને દ્વારા નોડ, હું હમણાં જ કન્ટેનર અર્થ. અને દૃષ્ટિની, હું એક લંબચોરસ અર્થ. નોડ દેખીતી રીતે જરૂર તેથી બે કિંમતો સમાવી માટે - જો ઈન્ પોતે, અને પછી, તરીકે દ્વારા સૂચિત લંબચોરસમાં તળિયે અડધા, એક ઈન્ માટે પૂરતી જગ્યા નથી. તેથી, ફક્ત અહીં આગળ વિચારી આ નોડ આ રીતે મોટી છે પ્રશ્ન માં કન્ટેનર? જો ઈન્ માટે કેટલા બાઇટ્સ? અનુમાન 4, તે તો હંમેશની જેમ જ. અને પછી કેટલા બાઇટ્સ પોઇન્ટર માટે? 4. તેથી આ કન્ટેનર, અથવા આ નોડ છે, 8 બાઇટ માળખું હશે. ઓહ, અને તે ખુશ સંયોગ છે કે આપણે આ વિચારને રજૂ કરવામાં એક સ્ટ્રક્ટ, અથવા એક સી માળખું. તેથી હું એક પગલું લેવા માંગો છો કે દાવો આ વધુ આધુનિક તરફ નંબરોની યાદી, એક અમલીકરણ નંબરો યાદીની લિંક, હું શું કરવાની જરૂર થોડી વધુ ફ્રન્ટ અપ વિચાર અને માત્ર એક Int, પરંતુ સ્ટ્રક્ટ જાહેર હું કૉલ કરીશ કે, પરંપરાગત અહીં, નોડ. અમે તે અમે માંગો કંઈપણ કૉલ, પરંતુ શકે છે નોડ ઘણો માં વિષયવાર હોઈ ચાલે છે આ વસ્તુઓ આપણે હવે જોઈ શરૂ કરો. કે ગાંઠની અંદર એક ઈન્ એ છે. અને તે પછી આ વાક્યરચના, થોડું પ્રથમ નજરમાં અલૌકિક - સ્ટ્રક્ટ નોડ * આગલા. વેલ pictorially કે, શું છે? કે તળિયે અડધા છે, આપણે જોયું કે લંબચોરસ માત્ર એક ક્ષણ પહેલાં. પરંતુ શા માટે હું * સ્ટ્રક્ટ નોડ કહીને છું તરીકે માત્ર નોડ * વિરોધ? કે નિર્દેશક પોઇન્ટ હોય તો કારણ કે અન્ય નોડ પર, તે માત્ર છે નોડ ઓફ સરનામું. અમે કર્યું છે તે સાથે સુસંગત છે કે આમ અત્યાર સુધી પોઇન્ટર વિશે ચર્ચા કરી છે. હું દાવો પરંતુ જો શા માટે, આ માળખું છે નોડ કહે છે, હું સ્ટ્રક્ટ કહે છે નથી અહીં અંદર નોડ? બરાબર. તે સી એક મૂર્ખ વાસ્તવિકતાના સોર્ટ છે આ typedef, તેથી વાત કરવા, બિન છે હજી સુધી થયું છે. સી શાબ્દિક સુપર છે. તે તમારો કોડ ટોચ પર વાંચો તળિયે, ડાબેથી. અને ત્યાં સુધી તે પર કે અર્ધવિરામ સ્કોર નીચે લીટી નથી શું ધારી ડેટા પ્રકાર તરીકે અસ્તિત્વ ધરાવે છે? નોડ, કંપની અવતરણ ચિહ્નો પૂરાં કરવાં નોડ. પરંતુ કારણ કે વધુ વર્બોઝ ઓફ જાહેરાત હું પ્રથમ વાક્ય પર હતી - typedef સ્ટ્રક્ટ નોડ - કે પહેલાં, પ્રથમ આવી કારણ કે સર્પાકાર કૌંસ જેવા પ્રકારની છે કે પૂર્વ શિક્ષણ રણકાર કે, તમે શું ખબર છે, મને એક સ્ટ્રક્ટ આપી સ્ટ્રક્ટ નોડ કહે છે. પ્રમાણિકપણે, હું ફોન વસ્તુઓ ન ગમે સ્ટ્રક્ટ નોડ, સ્ટ્રક્ટ નોડ બધા મારી કોડ દરમ્યાન. પરંતુ હું માત્ર, માત્ર અંદર એક વખત તેનો ઉપયોગ કરીશું જેથી હું અસરકારક રીતે કરી શકે છે , ગોળ સંદર્ભ એક પ્રકારના નથી બનાવવા એક સે દીઠ મને નિર્દેશક, પરંતુ અન્ય માટે નિર્દેશક એક સમાન પ્રકાર. તેથી તે બહાર વળે કે એ માહિતી બંધારણ પર આ જેમ, થોડા છે હોઈ શકે કે જે કામગીરી અમને રસ છે. અમે સામેલ કરવા માંગો છો શકે છે આ જેમ એક યાદી માં. અમે કાઢી શકો છો આ જેમ યાદીમાંથી. અમે માટે યાદી શોધ કરવા માંગો છો શકે છે કિંમત, અથવા વધુ સામાન્ય રીતે પસાર થાય છે. અને આડી રેખા માત્ર એક ફેન્સી માર્ગ છે ડાબે પ્રારંભ કહીને અને બધા ખસેડવા જમણી માર્ગ. પણ આ થોડું વધારે સૂચના, આધુનિક માહિતી માળખું, દો મને અમે કેટલાક ઉધાર શકે છે પ્રસ્તાવ જો છેલ્લા બે અઠવાડિયા વિચારો અને કહેવાય છે એક કાર્ય અમલ આ જેમ શોધો. તે અથવા સાચી પાછા જવા છે , ખોટી સૂચવે છે, હા અથવા ના, એ યાદીમાં છે. તેના બીજા દલીલ એક નિર્દેશક છે યાદીમાં પોતે, જેથી નોડ માટે પોઇન્ટર. હું પછી કરવા જઇ રહ્યો છું બધા જાહેર છે કામચલાઉ ચલ. અમે સંમેલન દ્વારા તે ptr કૉલ પડશે નિર્દેશક છે. અને હું તેને બરાબર સોંપી યાદીની શરૂઆત. અને હવે જ્યારે લૂપ નોટિસ. તેથી લાંબા નિર્દેશક સમાન નથી તરીકે null માં, હું ચેક કરવા જઇ રહ્યો છું. છે નિર્દેશક તીર એ બરાબર માં પસાર કરવામાં આવ્યો કે એ? - નવા અને એક મિનિટ રાહ જુઓ વાક્યરચના ભાગ. તીર અચાનક બધા શું છે? યાહ? બરાબર. તેથી, જ્યારે મેટલ એક થોડા મિનિટ પહેલા, અમે ઉપયોગ કંઈક ઍક્સેસ કરવા માટે કોઈ સંકેત એક સ્ટ્રક્ટ ની અંદર, જો ચલ જો તમે સ્ટ્રક્ટ નથી છે પોતે, પરંતુ સ્ટ્રક્ટ માટે નિર્દેશક, thankfully, વાક્યરચના એક ભાગ છે કે જે છેલ્લે સાહજિક અર્થમાં બનાવે છે. તીર, પોઇન્ટર અનુસરો અર્થ અમારા તીર સામાન્ય રીતે અર્થ જેવા pictorially, અને જાઓ માહિતી ક્ષેત્ર પર આધારિત છે. તેથી તીર પર કોઈ તરીકે જ વસ્તુ છે, પરંતુ જો તમે નિર્દેશક હોય ત્યારે તમે તે વાપરો. તેથી, ફક્ત પછી રીકેપ માટે તો એ ક્ષેત્ર જો સ્ટ્રક્ટ ની અંદર નિર્દેશક તરીકે ઓળખાય છે બરાબર એ બરાબર, સાચા આવો. નહિંતર, અહીં આ વાક્ય - નિર્દેશક આગામી નિર્દેશક બરાબર. તેથી આ કરવાનું છે શું, સૂચના, તો હું હાલમાં સ્ટ્રક્ટ તરફ સંકેત છું 9, અને 9 સમાવતી નંબર નથી હું શોધી રહ્યો છું - હું જોઈ રહ્યો છું ધારવું માટે એ 50 બરાબર - હું મારા કામચલાઉ નિર્દેશક અપડેટ કરવા માટે જઇ રહ્યો છું આ ગાંઠ પર નિર્દેશ નથી હવે, પરંતુ નિર્દેશક તીર આગળ, જે અહીં મને મૂકવામાં ચાલુ છે. હવે, હું એક વાવંટોળ છે સમજાયું પરિચય. બુધવાર પર, અમે ખરેખર આ કરવા પડશે કેટલાક માણસો સાથે અને કેટલાક વધુ ધીમી ગતિએ કોડ. પરંતુ ખ્યાલ, આપણે હવે અમારી માહિતી કરી રહ્યા છીએ માળખાં વધુ જટિલ છે કે જેથી અમારી ગણતરીના વધુ કાર્યક્ષમ વિચાર કરી શકો છો કે જે માટે જરૂરી હોઈ ચાલે છે pset છ, આપણે ફરીથી માં લોડ કરે છે, ત્યારે તે 150,000 શબ્દો છે, પરંતુ આવું કરવાની જરૂર અસરકારક રીતે, અને આદર્શ રીતે, એક બનાવો અમારા વપરાશકર્તાઓને ન માટે બનાવ્યા છે કે જે કાર્યક્રમ રેખીય, બિન સ્ક્વેર્ડ n માં, પરંતુ આદર્શ સતત સમય. અમે બુધવારે તમે જોશો. સ્પીકર: આગામી CS50, ડેવિડ મુ તેના આધાર કેસ forgets. DAVID MALAN: અને છે કે જે તમે મોકલી કેવી રીતે સાથે ટેક્સ્ટ મેસેજીસ સી શું - [વિવિધ ટેક્સ્ટ સંદેશ NOTIFICATION અવાજો]