[Powered by Google Translate] [4 અઠવાડિયું]
[ડેવિડ જે Malan] [હાર્વર્ડ યુનિવર્સિટી]
[આ CS50 છે.] [CS50.TV]
>> બધા હક, આ CS50 છે, અને આ 4 સપ્તાહ શરૂઆત છે,
અને આ એક સૌથી ધીમી શક્ય સોર્ટિંગ એલ્ગોરિધમ્સ છે.
જે એક હતું કે અમે માત્ર ત્યાં જોયેલી?
તે બબલના સૉર્ટ હતો, જેથી મોટા ઓ (n ^ 2) રકમ +
અને ખરેખર અમે આ વિશ્વમાં માત્ર ચામાં જાણવા લાગે છે નથી
બબલ સૉર્ટ શું છે અથવા તેના ચાલી સમય.
ખરેખર, આ Google એરિક શ્મિટ એક મુલાકાતમાં હતી
અને સેનેટર બરાક ઓબામા ભૂતપૂર્વ પહેલાં થોડા વર્ષો.
>> હવે, સેનેટર, તમે Google પર અહીં છો,
અને હું નોકરી ઇન્ટરવ્યૂ તરીકે રાષ્ટ્રપતિના લાગે ગમે છે.
હવે, તે મુશ્કેલ પ્રમુખ તરીકે નોકરી મળી છે, અને તમે જીવનની મુશ્કેલીઓ મારફતે જઈ રહ્યાં છો હવે.
તે પણ હાર્ડ Google પર નોકરી મેળવી.
અમે પ્રશ્નો હોય, અને અમે અમારી ઉમેદવારો પ્રશ્નો પૂછી,
અને આ એક લેરી Schwimmer છે.
તમે ગાય્સ લાગે છે કે મેં મજાક કરું છું છું? તે અહીં છે.
સૌથી વધુ અસરકારક મિલિયન 32-bit પૂર્ણાંકો સૉર્ટ રસ્તો શું છે?
[અટ્ટહાસ્ય]
સારી રીતે
હું દિલગીર >> છું. ના, ના, ના, ના.
મને લાગે છે કે આ પરપોટો સૉર્ટ ખોટી પર જાઓ રીત હોઈ શકે.
>> પર આવે છે, જે તેમને આ કહ્યું?
છેલ્લા અઠવાડિયે યાદ અમે એક દિવસ માટે ઓછામાં ઓછી કોડ માંથી વિરામ લીધો,,
અને કેટલાક ઉચ્ચ સ્તર વિચારો અને સમસ્યા વધુ સામાન્ય ઉકેલ પર ધ્યાન કેન્દ્રિત કરવાનું શરૂ કર્યું
શોધ અને સૉર્ટ સંદર્ભમાં,
અને અમે કંઈક કે અમે છેલ્લા અઠવાડિયે પર આ નામ slap નહોતી રજૂઆત કરી હતી,
પરંતુ ઉપગીય સંકેતલિપિ, બિગ ઓ, મોટા ઓમેગા,
અને ક્યારેક મોટા થીટા નોટેશનમાં છે, અને આ ખાલી હતા રીતે
અલગોરિથમ્સ ચાલી રહેલ સમય વર્ણન,
કેટલો સમય તે માટે એલ્ગોરિધમ માટે લઈ જાય છે.
>> અને તમે કે તમે ચાલી સમય વિશે વાત કરી કદ દ્રષ્ટિએ યાદ કરી શકે છે
ઇનપુટ, જે અમે સામાન્ય રીતે n કૉલ, ગમે તે સમસ્યા હોઈ શકે છે,
n એ રૂમ માં લોકોની સંખ્યા જ્યાં છે,
એક ફોન પુસ્તક માં પૃષ્ઠો સંખ્યા, અને અમે વસ્તુઓ લખી બહાર શરૂ
ઓ, જેમ કે (n ^ 2) અથવા (n O) અથવા ઓ (n લોગ એન)
અને પણ જ્યારે ગણિતના તદ્દન ન હતું જેથી સંપૂર્ણપણે
અને તે n એ હતી ચોરસ - એન / 2 અથવા કે કંઈક
અમે તેના બદલે માત્ર દૂર નીચલા ક્રમમાં શરતો કેટલાક ફેંકવું હો,
અને પ્રેરણા છે કે અમે ખરેખર એક માંગો છો
મૂલ્યાંકન ઓફ ઉદ્દેશ માર્ગ જેવું
કાર્યક્રમોની પ્રભાવ અથવા એલ્ગોરિધમ્સ કામગીરી
કે દિવસ ઓવરને અંતે ઉદાહરણ માટે કરવા જેવું કશું છે,
તમારા કમ્પ્યુટર ની ઝડપ આજે.
>> હમણાં પૂરતું, જો તમે બબલ સૉર્ટ અમલમાં મૂકવા માટે,
અથવા તમે આજના કમ્પ્યૂટર પર સૉર્ટ કરો અથવા પસંદ સૉર્ટ મર્જ અમલમાં મૂકવા માટે,
એક 2 જીએચઝેડ કોમ્પ્યુટર, અને તમે તેને ચલાવવા માટે,
અને તે સેકન્ડોમાં કેટલાક નંબર લે છે, આગામી વર્ષે ત્યાં 3 જીએચઝેડ છે
અથવા 4 જીએચઝેડ કોમ્પ્યુટર, તમે અને પછી તે "વાહ, મારી અલ્ગોરિધમનો દાવો કરી શકે છે
હવે ઝડપથી બે વાર છે, "જ્યારે હકીકત છે કે જે દેખીતી રીતે જ કેસ નથી.
તે ફક્ત હાર્ડવેર ઝડપી મેળવેલ છે, પરંતુ તમારા કમ્પ્યુટર
છે અને તેથી, અમે ખરેખર દૂર જેવી વસ્તુઓ કાઢી નાખવા માંગો છો
2 ના ગુણાંકમાં અથવા 3 ગુણાંકમાં જ્યારે તે વર્ણન આવે છે
ઝડપી કેવી રીતે કેવી રીતે ધીમી એક એલ્ગોરિધમ છે અને ખરેખર માત્ર ધ્યાન કેન્દ્રિત
n અથવા અમુક તેના પરિબળ પર,
કેટલીક સત્તા તેના તરીકે છેલ્લા અઠવાડિયે ના પ્રકારની કિસ્સામાં.
અને મર્જ પ્રકારની મદદ સાથે યાદ
અમે ખૂબ જ બબલ વર્ગીકરણ અને સમાવેશ પસંદગી સૉર્ટ કરતાં વધુ સારું કરવા સક્ષમ હતા
અને પણ દાખલ સૉર્ટ કરો.
>> અમે n એ લોગ n નોંધાયો હતો, ફરીથી અને,
જણાવ્યું હતું કે લોગ n એ સામાન્ય રીતે કંઈક કે ઊગે સંદર્ભ લે છે
ધીમે ધીમે તે પછી n એ, જેથી n લોગ n આમ અત્યાર સુધી સારી હતી
કારણ કે તે n ચોરસ કરતાં ઓછી હતી.
પરંતુ પ્રાપ્ત ન મર્જ સૉર્ટ સાથે n લૉગ
એક વિચાર મૂળ સૂક્ષ્મજીવ કે અમે લાભ માટે હતી શું હતું
કે અમે પણ 0 સપ્તાહમાં ફરી લિવરેજ?
અમે સૉર્ટ સમસ્યા કેવી રીતે હલ ન હતી ચાલાકીપૂર્વક મર્જ સૉર્ટ સાથે?
શું કી સૂઝ કદાચ?
કોઈપણ અંતે તમામ.
ઠીક છે, ચાલો એક પગલું પાછળ લઈ લો.
તમારા પોતાના શબ્દોમાં સૉર્ટ મર્જ વર્ણવે છે.
તે કેવી રીતે કામ કરી?
ઠીક છે, અમે પાછા સપ્તાહ 0 થી પંક્તિ પડશે.
ઠીક છે, હા.
[અશ્રાવ્ય વિદ્યાર્થીઓ]
ઠીક છે, સારુ, તેથી અમે 2 ટુકડાઓમાં સંખ્યાની એરે વહેંચાયેલી છે.
અમે તે ટુકડાઓ દરેક છટણી, અને પછી અમે તેમને ભેળવી
અને અમે આ વિચાર જોયેલા પહેલાં એક સમસ્યા છે કે આ મોટી છે લેતી
અને તે એક સમસ્યા છે કે આ મોટું અથવા આ મોટું છે માં અપ કકડો.
>> ફોન બુકમાં ઉદાહરણ યાદ અપાવે છે.
અઠવાડિયા પહેલા ના અલ્ગોરિધમનો સ્વ ગણતરી યાદ,
જેથી મર્જ સૉર્ટ કરો આ અહીં સ્યુડોકોડનો દ્વારા સારાંશ હતી.
જ્યારે તમે n તત્વોના આપેલા કરી રહ્યાં છો, તો પ્રથમ તે સેનીટી તપાસો.
જો n <2 પછી કંઈપણ બધા અંતે નથી
જો n <2 પછી n એ 0 અથવા 1 ચોક્કસપણે છે કારણ કે,
અને તેથી જો તે ક્યાં છે 0 અથવા 1 ત્યાં સૉર્ટ કરવા માટે કશું જ નથી.
તમે કરી રહ્યાં છો.
તમારા યાદી પહેલાથી જ સામાન્ય અને છૂટાં પાડવામાં આવે છે.
પરંતુ અન્યથા જો તમે 2 અથવા વધુ તત્વો મળી છે આગળ જાઓ અને તેઓને વિભાજીત
2 છિદ્ર હોય છે, જે ડાબા અને જમણા.
તે છિદ્ર દરેક સૉર્ટ કરો, અને પછી છટણી અર્ધભાગ મર્જ.
પરંતુ અહીં સમસ્યા એ છે કે પ્રથમ નજરમાં આ અનુભૂતિ જેવી અમે punting કરી રહ્યાં છો.
આ કે એક પરિપત્ર વ્યાખ્યા છે જો હું તમને પૂછ્યું છે આ n તત્વોના સૉર્ટ
અને તમે મને કહેતાં રહ્યાં છો "બધા અધિકાર, દંડ, અમે તે n / 2 અને તે એન / 2 તત્વો સૉર્ટ પડશે,"
પછી મારી આગામી પ્રશ્ન હોય રહ્યું છે "ફાઇન, તો તમે એન / 2 તત્વો કેવી રીતે સૉર્ટ કરો છો?"
>> પરંતુ કારણ કે આ કાર્યક્રમની માળખું,
કારણ કે ત્યાં આ બેઝ કેસ છે, તેથી બોલે છે,
આ ખાસ કેસ કહે છે કે જો n 2 વળતર જેવા કેટલાક નિશ્ચિત કિંમત <છે તરત.
તે જ ગોળ જવાબ સાથે પ્રતિસાદ નથી.
આ પ્રક્રિયા, આ cyclicity આખરે સમાપ્ત થશે.
જો હું તમે "સૉર્ટ કરો આ n તત્વોના," પૂછો અને તમે કહી, "ફાઇન, આ એન / 2 સૉર્ટ"
પછી તમે કહે છે, "ફાઇન, સૉર્ટ આ n એ / 4, 8 / n એ, n/16,"
આખરે તમે એક મોટી પર્યાપ્ત સંખ્યા દ્વારા વિભાજીત પડશે
કે તમે ફક્ત 1 તત્વ ડાબી છે જે બિંદુએ તમે કહી શકો છો, પડશે,
"અહીં, અહીં એક સોર્ટ એક તત્વ છે."
તો પછી આ અલ્ગોરિધમનો ના દીપ્તિ અહીં એ હકીકત પરથી લેવામાં છે
કે એકવાર તમે આ વ્યક્તિગત રીતે છટણી યાદીઓ બધી,
જે તમામ 1 કદ, છે કે જે નકામી લાગે છે,
એક વાર તમે તેમને મર્જ અને તેમને મર્જ શરૂ
તમે છેલ્લે બિલ્ડ તરીકે રોબ વિડિઓ છેવટે છટણી યાદી કર્યું હતું.
>> પરંતુ આ વિચાર સોર્ટિંગ બહાર સુધી લંબાય છે.
ત્યાં આ રિકર્ઝન તરીકે ઓળખાય કાર્યક્રમ માં એમ્બેડેડ વિચાર છે,
આ વિચાર જેમાં તમે એક કાર્યક્રમ છે,
અને કેટલાક સમસ્યા તમે પોતે કહી ઉકેલ
અથવા પ્રોગ્રામિંગ ભાષાઓ તમે એક કાર્ય છે સંદર્ભમાં મૂકી,
અને ક્રમમાં સમસ્યા ઉકેલવા માટે, તમે કાર્ય જાતે કૉલ
ફરીથી અને ફરીથી અને ફરીથી, પણ તમે કાર્ય
અનંત ઘણી વખત કહી ન જાતે કરી શકો છો.
આખરે તો તમે નીચે હોય છે તેથી વાત કરવા માટે,
અને કેટલાક આધાર હાર્ડ કોડેડ શરત કહે છે
આ બિંદુએ જાતે જેથી ફોન રોકવા કે સમગ્ર પ્રક્રિયા
છેવટે હકીકતમાં બંધ ન થાય.
આ શું ખરેખર નથી recurse અર્થ?
>> ચાલો જોવા માટે, જો આપણે સાથે સરળ, તુચ્છ ઉદાહરણ કરવા કહેવું, કરી શકો છો,
અપ સ્ટેજ પર અહીં 3 મારી સાથે લોકો, જો કોઇ આરામદાયક છે.
2 અપ, અને 3 પર 1, આવે છે.
જો તમે 3 થી અહીં આવવા માંગો છો.
જો તમે મને અધિકાર આગામી એક વાક્ય અહીં ઊભા કરવા માંગો છો ધારવું, હાથમાં જે સમસ્યા
છે ખૂબ જ સામાન્ય અને લોકો અહીં છે સંખ્યા ગણતરી.
પરંતુ પ્રમાણિકપણે, હું આ તમામ ગણતરી ઉદાહરણો થાકેલું છું.
આ થોડો સમય, 1, 2, અને ડોટ, કોઈ, કોઈ લઇ રહ્યું છે.
તે કાયમ માટે લઇ રહ્યું છે.
હું બદલે માત્ર મદદ સાથે આ સમસ્યા સંપૂર્ણપણે વાંસડા વડે એવી હોડી ચલાવવી ઓફ શું તમારું નામ શું છે? છો
સારા. >> સારા, બધા અધિકાર.
કેલી. >> કેલી અને?
>> વિલી >> વિલી, સારા, કેલી, અને વિલી..
હમણાં હું કોઇને દ્વારા કરવામાં આવી છે પ્રશ્ન પૂછવામાં
કેટલા લોકો આ મંચ પર હોય છે, અને હું કોઈ વિચાર હોય છે.
આ એક ખરેખર લાંબી યાદી છે, અને તેથી તેના બદલે હું આ યુક્તિ કરવા જાઉં છું.
હું મને આગળ વ્યક્તિ માટે કામ મોટા ભાગના કરવા પૂછો જાઉં છું,
અને એકવાર તેમણે કામ સૌથી કરવાથી થાય છે
હું કામ કરવાની ઓછામાં ઓછી રકમ શક્ય કરવા જાઉં છું અને ફક્ત 1 ઉમેરવા
તેના જવાબ ગમે છે, તેથી છે અહીં અમે જાઓ.
હું પૂછવામાં થઈ કેટલા લોકો સ્ટેજ પર હોય છે.
કેટલા લોકો સ્ટેજ પર તમે ડાબી છે?
મને ઓફ >> ડાબી? ઠીક છે, પરંતુ ઠગ નથી.
કે સારા છે, કે જે સાચું છે, પરંતુ જો અમે આ તર્ક ચાલુ રાખવા માંગો છો
ચાલો ધારે છે કે તમે એ જ રીતે તમે ડાબી આ સમસ્યા વાંસડા વડે એવી હોડી ચલાવવી કરવા માંગો છો,
તેથી જવાબ બદલે સીધા આગળ વધો અને માત્ર નર હરણ પસાર કરે છે.
ઓહ, કેટલા લોકો મને ડાબી છે?
ઘણા લોકો આ રીતે ડાબી છે?
1.
[અટ્ટહાસ્ય]
ઠીક છે, તેથી 0, તેથી શું હવે વિલી કર્યું છે
છે તમે તમારા જવાબ આ 0 કહેતા દિશામાં પરત કર્યું છે.
હવે, તમે શું 1 >>? કરવું જોઈએ.
, બધા અધિકાર, ઠીક છે, જેથી તમે 1 છે છો, જેથી તમે કહેવું "હું 1 ઉમેરવા જાઉં છું
માટે વિલી ગણતરી હતું, "જેથી 1 0 + + ગમે.
હવે તમે 1 જેથી તમારી જમણી જવાબ છે હવે
1. >> ખાણ અને 2 હશે.
ગુડ, જેથી તમે 1 પાછલા જવાબ વાત કરી રહ્યાં છે,
કામ એ ન્યૂનતમ જથ્થો તમે કરવા માંગો છો ઉમેરી રહ્યા છે, કે જે +1 છે.
તમે હવે 2 છે, અને પછી તમે મને કિંમત છે કે જે હાથથી?
3, હું તેનો અર્થ, માફ કરશો, 2.
ગુડ.
>> વેલ, અમે ડાબી 0 હતી.
તો પછી અમે 1 હતી, અને પછી અમે 2 ઉમેરવા માટે,
અને હવે તમે મને 2 નંબર સોંપવામાં કરી રહ્યાં છો,
અને તેથી હું જણાવ્યું હતું કે, છું ઠીક, +1, 3.
ત્યાં ખરેખર છે 3 આ સ્ટેજ પર મને આગળ ઊભા લોકો,
જેથી અમે ચોક્કસપણે આ હોઈ શકે છે ખૂબ linearly પૂર્ણ થાય,
ખૂબ સ્પષ્ટ ફેશન ખૂબ, પરંતુ અમે ખરેખર શું કરો છો?
અમે 3 કદ એક સમસ્યા શરૂઆતમાં લીધો હતો.
અમે પછી તે 2 કદ એક સમસ્યા તૂટી પડી હતી,
પછી 1 કદ એક સમસ્યા છે, અને પછી છેવટે આધાર કેસ
ખરેખર હતી, ઓહ, કોઈ ત્યાં એક છે,
આ વખતે વિલી અસરકારક રીતે હાર્ડ કોડેડ જવાબ વખત બે પાછો ફર્યો,
અને બીજા એક પછી bubbled આવ્યો bubbled, અપ bubbled,
અને પછી આ એક વધારાની 1 માં ઉમેરીને
અમે પુનરાર્તનના આ મૂળભૂત વિચાર અમલમાં કર્યું છે.
>> હવે, આ કિસ્સામાં તે ખરેખર એક સમસ્યા હલ ન હતી
કોઈ વધુ અસરકારક રીતે તો અમે આમ અત્યાર સુધી જોઇ છે.
પરંતુ એલ્ગોરિધમ્સ અમે સ્ટેજ પર કર્યું છે આમ દૂર વિશે વિચારો.
અમે chalkboard પર કાગળ 8 ના ટુકડા હતા,
વિડિઓ પર હોય ત્યારે સીન એ 7 નંબર માટે જોઈ હતી, અને તે શું ખરેખર કરી?
વેલ, તેમણે વિભાજન કોઇ પણ પ્રકારની નથી અને તેણે જીતી.
તેમણે પુનરાર્તનના કોઇ પણ પ્રકારની ન હતી.
તેને બદલે તેમને ફક્ત આ રેખીય અલ્ગોરિધમનો હતી.
પરંતુ જ્યારે અમે સ્ટેજ પર છટણી નંબરો વિચારને રજૂ કરવામાં છેલ્લા અઠવાડિયે રહે છે
પછી અમે મધ્યમ જવા આ વૃત્તિ હતી,
જે બિંદુએ અમે 4 કદ અથવા 4 માપ અન્ય યાદી એક નાની યાદી હતી,
અને પછી અમે ચોક્કસ જ સમસ્યા હતી, તેથી અમે વારંવાર પુનરાવર્તન પુનરાવર્તન.
અન્ય શબ્દોમાં, આપણે recursed.
તમે ખૂબ ખૂબ અમારા 3 સ્વયંસેવકો અહીં આભાર અમારી સાથે રિકર્ઝન દર્શાવવા માટે.
>> ચાલો જોવા જો આપણે આ ન હવે થોડી વધુ કોંક્રિટ બનાવવા કરી શકો છો,
એક સમસ્યા છે કે ફરી અમે ખૂબ સરળતાથી કરી શકે છે ઉકેલ,
પરંતુ અમે તે વેગ આ મૂળભૂત વિચાર અમલમાં પથ્થર તરીકે ઉપયોગમાં લઈશું.
જો હું નંબરો સમૂહ ના શ્રેઢી ગણતરી કરવા માંગો છો,
દાખલા તરીકે, જો તમે 3 નંબર પાસ,
હું તમારી 3 સિગ્મા કિંમત આપવા માંગો છો,
જેથી 3 સરવાળા 2 + 1 + 0 +.
હું પાછળ 6 જવાબ મેળવવા માંગો છો,
તેથી અમે આ સિગ્મા કાર્ય, આ શ્રેઢી કાર્ય અમલમાં પડશે
કે, ફરી, ઇનપુટ લે છે, અને પછી શ્રેઢી આપે છે
તે નંબરના તમામ નીચે 0 રસ્તો.
અમે આ ખૂબ સરળ કરવા માટે, યોગ્ય શકે છે?
અમે રહ્યાં માળખું અમુક પ્રકારના સાથે આવું કરી શકે છે,
જેથી દો મને આગળ વધો અને વિચાર આ શરૂઆત કરી હતી.
>> Stdio.h સમાવેશ થાય છે.
મને મારી મુખ્ય પ્રવેશ મેળવવા માટે અહીં સાથે કામ કરે છે.
ચાલો sigma.c તરીકે આ સંગ્રહો.
પછી હું અહીં જાઓ જાઉં છું, અને હું પૂર્ણાંક n એ જાહેર જાઉં છું,
અને હું નીચે હો ત્યારે વપરાશકર્તાને સહકાર આપતું નથી જાઉં છું.
જ્યારે વપરાશકર્તા મને હકારાત્મક નંબર આપી નથી
દો મને આગળ જાઓ અને તેઓને = n GetInt માટે પૂછવા માટે,
દો અને મને તેમને શું કરવા માટે કેટલાક સૂચનો આપવા માટે,
જેથી printf ("હકારાત્મક પૂર્ણાંક કૃપા કરીને").
જસ્ટ પ્રમાણમાં આ જેવા સરળ જેથી કંઈક કે જે સમય દ્વારા અમે 14 લીટી ફટકો
આપણે હવે n એ એક સકારાત્મક કદાચ પૂર્ણાંક હોય છે.
>> હવે તેની સાથે કંઈક દો.
મને આગળ વધો અને શ્રેઢી ગણતરી છે, તેથી પૂર્ણાંક રકમ = સિગ્મા (n).
સિગ્મા ફક્ત શ્રેઢી છે, તેથી હું ફક્ત પારખુ રીતે છું તે લખી.
અમે હમણાં જ તે ત્યાં સિગ્મા કહી શકશો.
કે રકમ છે, અને હવે હું બહાર પરિણામ છાપો જાઉં છું,
printf (સરવાળો, "આ રકમ% d, \ n છે").
અને પછી હું સારા પગલા 0 પરત મળશે.
અમે રસપ્રદ ભાગ સિવાય બધું જ છે કે આ કાર્યક્રમ જરૂર કર્યું છે,
જે વાસ્તવમાં સિગ્મા કાર્ય અમલમાં છે.
>> દો મને નીચે અહીં નીચે જવું અને દો મને કાર્ય સિગ્મા જાહેર.
તે ચલ છે કે જે પ્રકાર પૂર્ણાંક હતો લઈ મળ્યું છે,
અને માહિતી પ્રકાર શું હું સિગ્મા માંથી કદાચ પાછા માંગો છો?
ઈન્, કારણ કે હું તે 15 લીટી પર મારી અપેક્ષાઓ સાથે મેળ ખાતું કરવા માંગો છો.
અહીં દો મને આગળ વધો અને આ અમલ
એક સુંદર સરળ માર્ગ છે.
>> ચાલો આગળ વધો અને પૂર્ણાંક રકમ = 0 કહેવું,
અને હવે હું લૂપ માટે અહીં થોડું હોય જાઓ જાઉં છું
કે આ કંઈક કહી રહ્યું છે,
માટે (પૂર્ણાંક હું = 0; હું <નંબર =; i + +) + + રકમ હું =.
અને પછી હું રકમ પરત જઇ રહ્યો છું.
હું રીતે કોઈપણ સંખ્યાની આ છે અમલ કરી શકે છે.
હું જ્યારે લૂપ ઉપયોગ કરી શકે.
હું રકમ ચલ મદદથી જો હું ખરેખર કરવા માગે છૂટી હોઈ શકે છે,
પરંતુ ટૂંકા, અમે માત્ર એક કાર્ય છે કે જો હું નથી goof જાહેર રકમ 0 ધરાવે છે.
પછી તે પર 0 થી નંબર મારફતે iterates,
અને દરેક ઇટરેશન પર તે રકમ કે વર્તમાન કિંમત ઉમેરે છે અને પછી રકમ પાછી આપે છે.
>> હવે, ત્યાં થોડો ઓપ્ટિમાઇઝેશન અહીં છે.
આ કદાચ પામે પગલું છે, પરંતુ તેથી તે છે. કે દંડ છે હવે.
અમે ઓછામાં ઓછા છો સંપૂર્ણ છે અને પર 0 બધી રીતે જવું.
હાર્ડ નથી અને ખૂબ ખૂબ સરળ,
પરંતુ તે તારણ છે કે જે સિગ્મા કાર્ય સાથે અમે જ તક છે
અમે મંચ પર અહીં કર્યું હતું.
સ્ટેજ પર અમે ફક્ત ગણાશે કેટલા લોકો મને આગળ હતા,
પરંતુ તેના બદલે જો આપણે 3 + 2 + 1 નંબર ગણતરી માગે છે
0 નીચે પર અમે કાર્ય જેમ જ વાંસડા વડે એવી હોડી ચલાવવી કરી શકે
કે હું બદલે ફરી યાદ આવવું હોવાથી વર્ણન કરીશું.
અહીં આપણે એક ઝડપી સેનીટી અને તપાસ નથી ખાતરી છે કે હું goof ન કરો.
>> મને ખબર છે કે આ કાર્યક્રમ ઓછામાં ઓછો એક વસ્તુ છે કે હું ખોટું કરી છે.
જ્યારે હું દાખલ ફટકો હું મને અંતે yelling કોઇ પણ પ્રકારના વિચાર જાઉં છું?
મારે શું લગભગ yelled કરી જાઉં છું?
અરે વાહ, હું તે પ્રોટોટાઇપ ભૂલી ગયા છો, જેથી હું 15 વાક્ય પર સિગ્મા કહેવાય કાર્ય ઉપયોગ કરું છું,
પરંતુ તે 22 વાક્ય સુધી જાહેર કરવામાં આવ્યું છે જેથી હું શ્રેષ્ઠ સક્રિય અહીં જાઓ
અને અસલ જાહેર, અને હું પૂર્ણાંક સિગ્મા (પૂર્ણાંક સંખ્યા) કહેવું પડશે, અને તે છે.
તે નીચે અમલમાં છે.
>> અથવા બીજી રીતે હું આ હલ કરી શકે છે,
હું ત્યાં સુધી કાર્ય ખસેડવા માટે, કે જે ખરાબ નથી શકે છે,
પરંતુ ઓછામાં ઓછા જ્યારે તમારા કાર્યક્રમો માટે લાંબા વિચાર પ્રમાણિકપણે શરૂ કરવા માટે,
મને લાગે છે ત્યાં હંમેશા શીર્ષ પર મુખ્ય કર્યા કેટલાક કિંમત છે
જેથી તમે રીડર માં ફાઇલ ખોલો અને તે પછી તરત જ જોઈ શકે છે
કાર્યક્રમ શું તે મારફતે શોધવા કર્યા વગર કરી છે
કે મુખ્ય કાર્ય માટે જોઈ.
ચાલો મારી ટર્મિનલ વિન્ડોમાં ઘટીને અહીં જાઓ, જેથી સિગ્મા સિગ્મા બનાવવા પ્રયાસ કરો,
અને હું અહીં ખૂબ ખરાબ કર્યું.
કાર્ય GetInt અભિપ્રેત ઘોષણા અર્થ છે મને શું બીજું શું ભૂલી ગયા છો?
[અશ્રાવ્ય વિદ્યાર્થીઓ]
ગુડ, જેથી એક સામાન્ય ભૂલ દેખીતી રીતે, તેથી આપણે આ અહીં મૂકી
cs50.h, અને હવે આપણે મારા ટર્મિનલ વિન્ડોમાં પાછા જાઓ.
>> હું સ્ક્રીન સાફ અને પડશે હું સિગ્મા બનાવવા પુનઃ ચલાવો પડશે.
તે સંકલિત હોય તેમ લાગે છે. મને હવે સિગ્મા ચલાવો.
હું સંખ્યા 3 માં લખો અને પડશે હું 6 વિચાર નહોતો, તેથી સખત નથી ચેક એક,
પરંતુ ઓછામાં ઓછા તે પ્રથમ નજરમાં કામ કરી રહ્યું છે, પરંતુ હવે આપણે તેના ફાડી સિવાય,
અને ચાલો ખરેખર રિકર્ઝન વિચારને ફરી લાભ,
ખૂબ સરળ સંદર્ભ છે કે જેથી થોડા અઠવાડિયા સમય
જ્યારે અમે એરે કરતાં પારખુ માહિતી માળખાં અન્વેષણ શરૂ
અમે ટૂલકીટ બીજા સાધન કે જેની સાથે હોય છે
તે માહિતી માળખાં ચાલાકી આપણે જોઈ શકશો.
આ અભિગમ પુનરાવર્તન, આ અભિગમ લૂપ આધારિત છે.
>> મને બદલે દો હવે આ કામ કરે છે.
મને દો બદલે કહે છે કે સંખ્યાબંધ શ્રેઢી
નીચે 0 પર ખરેખર જેવા જ વસ્તુ છે
+ નંબર સિગ્મા (સંખ્યા - 1).
અન્ય શબ્દોમાં, સ્ટેજ પર જેમ જ હું મારા માટે આગામી લોકો દરેક punted,
અને તેઓ બદલામાં punting સુધી અમે આખરે વિલી અંતે આઉટ તળીયે રાખવામાં આવે છે,
જેઓ 0 જેવા જવાબ હાર્ડ કોડેડ પાછા હતી.
અહીં હવે આપણે જ રીતે સિગ્મા માટે punting કરી રહ્યાં છો
એ જ કાર્ય તરીકે મૂળ બોલાવવામાં આવ્યો પણ કી સૂઝ અહીં
છે કે અમે સિગ્મા સરખું નથી કૉલ કરી રહ્યાં છો.
અમે n એ નથી પસાર કરી રહ્યાં છે.
અમે સ્પષ્ટ સંખ્યામાં પસાર કરી રહ્યાં છો - 1,
જેથી થોડી નાની સમસ્યા, થોડી નાની સમસ્યા.
>> કમનસીબે, આ તદ્દન ઉકેલ હજુ સુધી નથી, અને તે પહેલાં અમે ઠીક
સ્પષ્ટ તરીકે શું આઉટ થઈ શકે છે તમે કેટલીક જમ્પિંગ
દો મને આગળ વધો અને બનાવવા પુનઃ ચલાવો.
તે ઠીક કમ્પાઇલ લાગે છે.
મને 6 સાથે સિગ્મા પુનઃ ચલાવો.
દેખીતી ભૂલ માટે માફી (માગવી તે) દો, મને 6 સાથે સિગ્મા પુનઃ ચલાવો.
અમે આ જોઇ છે, તે પહેલાં, આકસ્મિક છેલ્લા સમય યદ્યપિ છે.
હું આ ભેદી સેગ્મેન્ટેશન ક્ષતિમાં કેમ મળ્યો? યાહ.
[અશ્રાવ્ય વિદ્યાર્થીઓ]
ત્યાં કોઈ આધાર કેસ છે, અને વધુ ચોક્કસ રીતે, શું કદાચ થયું?
આ વર્તણૂક શું એક લક્ષણ છે?
તે થોડું વધુ જોશથી કહો.
[અશ્રાવ્ય વિદ્યાર્થીઓ]
તે અનંત અસરકારક રીતે લૂપ, અને અનંત આંટીઓ સાથે સમસ્યા છે
જ્યારે તેઓ આ કિસ્સામાં રિકર્ઝન થાય છે, એક કાર્ય પોતે ફોન,
શું દર વખતે તમે એક કાર્ય કૉલ થાય છે?
વેલ, અમે કેવી રીતે બહાર કમ્પ્યુટર માં મેમરી નાખ્યો પાછા વિચારો.
અમે જણાવ્યું હતું કે મેમરી આ ભાગ સ્ટેક કે તળિયે છે કહેવાય છે,
અને દર વખતે તમે એક કાર્ય થોડું વધારે મેમરી કૉલ મૂકવામાં નહીં
આ કહેવાતા કે કાર્ય સ્થાનિક ચલો અથવા પરિમાણો સમાવતી સ્ટેક પર,
તેથી જો સિગ્મા સિગ્મા કોલ્સ કહે સિગ્મા સિગ્મા કહે છે
સિગ્મા કહે છે જ્યાં આ વાર્તા ઓવરને કરે છે?
>> વેલ, તે છેવટે કુલ જથ્થો મર્યાદાને વટાવ્યા
મેમરી કે જે તમે તમારા કમ્પ્યુટર પર ઉપલબ્ધ હોય.
તમે સેગમેન્ટ છે કે તમે અંદર રહેવાનું ધારતા કરી રહ્યાં છો રોળાઈ,
અને તમે આ સેગ્મેન્ટેશન ક્ષતિમાં વિચાર, કોર ડમ્પ,
અને કોર ડમ્પ શું અર્થ થાય છે કે હવે હું કોર તરીકે ઓળખાતી ફાઈલ છે
જે zeros અને મુદ્દાઓ સમાવતી ફાઇલ છે
કે ભવિષ્યમાં ખરેખર diagnostically ઉપયોગી થશે.
જો તે તમે સ્પષ્ટ નથી કે જ્યાં તમારા ભૂલ છે
તમે ખરેખર ફોરેન્સિક વિશ્લેષણ એક બીટ કરવું જેથી વાત કરવા માટે કરી શકો છો,,
આ કોર ડમ્પ ફાઈલ પર ફરીથી, કે જે માત્ર zeros અને શૈલીઓનો સમગ્ર જથ્થો છે
કે અનિવાર્યપણે મેમરી તમારા કાર્યક્રમ રાજ્યના પ્રતિનિધિત્વ
જે ક્ષણે આ રીતે ક્રેશ થયું.
>> અહીં સુધારો છે કે અમે માત્ર અકારણ સિગ્મા નથી પરત ફરી શકે છે,
એક + નંબર થોડી નાની સમસ્યા સિગ્મા.
અમે આધાર કેસ અમુક પ્રકારના અહીં જરૂર પડે છે,
અને આધાર કેસ શું કદાચ હોવું જોઈએ?
[અશ્રાવ્ય વિદ્યાર્થીઓ]
ઠીક છે, તેથી લાંબા તરીકે નંબર હકારાત્મક છે અમે ખરેખર આ પાછા જોઈએ,
અથવા બીજી રીતે મૂકી કે, જો નંબર છે, કહો, <= 0 ને
તમને ખબર શું, હું આગળ જાઓ અને 0 પાછા પડશે,
ખૂબ જેવા વિલી હતી, અને બીજું, હું આગળ જઈ રહ્યો છું
અને આ પાછા છે, તેથી તે ટૂંકા ખૂબ નથી
આવૃત્તિ પુનરાવર્તન કે અમે ચાબૂક મારી પ્રથમ લૂપ માટે એક કરતાં વધારે,
નોટિસ પરંતુ ત્યાં તેને લાવણ્ય આ પ્રકારની છે.
તેના બદલે અમુક નંબર પરત અને આ તમામ ગણિત પ્રદર્શન
અને વસ્તુઓ સ્થાનિક ચલો સાથે ઉમેરીને
તો તમે તેની જગ્યાએ કહી રહ્યાં છે "ઠીક છે, જો આ સુપર સરળ સમસ્યા છે,
જેમ નંબર 0 <છે દો, મને તાત્કાલિક 0 આવો. "
>> અમે ટેકો નકારાત્મક નંબરો સંતાપ નથી જઈ રહ્યાં છો,
જેથી હું હાર્ડ કોડ 0 કિંમત જાઉં છું.
પરંતુ અન્યથા, એકત્ર આ વિચાર અમલમાં માટે
આ નંબરો ભેગા તમે અસરકારક રીતે નાના ડંખ લાગી શકે છે
આ સમસ્યા બહાર ખૂબ જેવા અમે મંચ પર અહીં કર્યું,
પછી વાંસડા વડે એવી હોડી ચલાવવી એ સમસ્યા આગામી વ્યક્તિ માટે બાકીના,
પરંતુ આ કિસ્સામાં આગામી વ્યક્તિ પોતાને છે.
તે સરખું નામ આપવામાં આવ્યું કાર્ય છે.
બસ એક નાના અને નાના અને નાની સમસ્યા દરેક સમય પસાર કરવા માટે,
અને છતાં પણ અમે કોડ નથી વસ્તુઓ તદ્દન ઔપચારિક અહીં છે
આ છે બરાબર શું ફોન પુસ્તક સાથે 0 સપ્તાહમાં થઇ રહ્યા હતા.
આ બરાબર શું ભૂતકાળ અઠવાડિયામાં સીન સાથે ચાલુ હતું
અને નંબરો માટે શોધ અમારી દેખાવો સાથે.
તે એક સમસ્યા લઈ રહ્યો છે અને તેને ફરીથી અને ફરીથી વિભાજન.
>> બીજા શબ્દોમાં કહીએ તો, ત્યાં રસ્તો હવે અનુવાદ ઓફ
આ વાસ્તવિક દુનિયા રચના, આ ઊંચુ સ્તર રચના
ના ભાગલા પાડવા અને અને કબજે કંઈક ફરીથી અને ફરીથી કરી
કોડ છે, તેથી આ કંઈક ફરીથી સમય પર જોવા મળશે છે.
હવે, એક અલગ તરીકે, જો તમે રિકર્ઝન કરવા માટે નવા છો તમે ઓછામાં ઓછા હવે સમજવા જોઈએ
આ રમૂજી શા માટે છે.
હું google.com પર જાઓ જાઉં છું,
અને હું કેટલાક રિકર્ઝન પર અને ટીપ્સ યુક્તિઓ શોધવા માટે જાઉં છું દાખલ કરો.
તમારા માટે આગામી વ્યક્તિ કહો જો તેઓ માત્ર હવે નથી હસતી હતી.
શું તમે રિકર્ઝન અર્થ આ છે?
શું તમારો અર્થ-હેં, ત્યાં અમે જાઓ.
ઠીક છે, હવે જે દરેક બાકીના છે.
થોડું ઇસ્ટર એગ Google માં ક્યાંક ત્યાં એમ્બેડ.
એક અલગ રીતે, એક કડીઓ અમે આ કોર્સ વેબસાઇટ પર મૂકવા એક તરીકે
આજે માટે જ વિવિધ સોર્ટિંગ એલ્ગોરિધમ્સ આ ગ્રિડ છે,
જેમાંથી કેટલાક અમે ગયા સપ્તાહે જોયું હતું, પરંતુ આ શું વિઝ્યુલાઇઝેશન વિશે સારું છે
જેમ તમે વિવિધ ગાણિતીક નિયમો સંબંધિત બાબતો આસપાસ તમારા મન લપેટી પ્રયાસ
ખબર છે કે તમે ખૂબ જ સરળતાથી હવે ઇનપુટ્સ વિવિધ પ્રકારના સાથે શરૂ કરી શકો છો.
આ ઇનપુટ્સ તમામ ઇનપુટ્સ મોટે ભાગે છટણી, ઉલટી કે ઇનપુટ્સ રેન્ડમ અને તેથી આગળ.
જેમ તમે, ફરીથી પ્રયત્ન કરો, તમારા ધ્યાનમાં આ વસ્તુઓ તફાવત
સમજો કે વ્યાખ્યાનો પૃષ્ઠ પર આ કોર્સ વેબસાઇટ પર આ URL
તમે તે કેટલાક મારફતે કારણ મદદ કરી શકે છે.
>> આજે આપણે છેલ્લે એક જ્યારે આ સમસ્યા હલ પાછા મેળવવા માટે,
જે કે આ સ્વેપ કાર્ય માત્ર કામ નહોતી,
અને શું આ કાર્ય સ્વેપ સાથે મૂળભૂત સમસ્યા હતી,
ધ્યેય જે હતો, ફરીથી માટે કિંમત અહીં અને અહીં બદલી
જેમ કે આ શું થાય છે?
આ વાસ્તવમાં કામ ન હતી. શા માટે?
યાહ.
[અશ્રાવ્ય વિદ્યાર્થીઓ]
બરાબર, આ bugginess માટે સમજૂતી
માત્ર હતો કારણ કે જ્યારે તમે સી કાર્યો કૉલ
અને તે વિધેયો દલીલો a અને b અહીં જેમ, લેવા,
તમે ગમે કિંમત છે કે જે તમને કાર્ય માટે પૂરી કરી રહ્યાં છે નકલો માં પસાર કરવામાં આવે છે.
તમે મૂળ કિંમતો નથી પૂરી પોતાને થાય છે,
તેથી અમે buggyc સંદર્ભમાં આ જોયું,
buggy3.c, કે જે આ જેવી થોડી કંઈક હતા.
>> યાદ છે કે અમે હતો એક્સ અને વાય 1 અને 2 માટે આરંભ, અનુક્રમે.
પછી અમે છપાયેલ તેઓ શું હતા.
હું પછી દાવો કર્યો હતો કે હું તેમને એક્સ, વાય ના સ્વેપ ફોન દ્વારા જેઓ આવી હતી.
પરંતુ સમસ્યા એ હતી કે જેઓ કામ કર્યું હતું,
પરંતુ પોતે સ્વેપ તક જ કાર્ય કરે છે.
જલદી અમે 40 લીટી તે સ્વૅપ કિંમતો ફટકો
હતા બગાઙ, અને તેથી કશું
મૂળ કાર્ય મુખ્ય ખરેખર બધા બદલવામાં આવી હતી,
તેથી જો તમે પાછા પછી લાગે છે કે આ શું અમારી મેમરી દ્રષ્ટિએ જેવો દેખાય છે માટે
જો બોર્ડના આ બાજુ ડાબા હાથથી પ્રતિનિધિત્વ
અને હું દરેક માટે મારા શ્રેષ્ઠ કરવું જોશો આ જો બોર્ડના આ બાજુ ડાબી બાજુની
જેમ કે, તમારી RAM, રજૂ કરે છે અને સ્ટેક આ રીતે પર વધવા રહ્યું છે,
અને અમે મુખ્ય જેમ કાર્ય કહી, અને મુખ્ય 2 સ્થાનિક ચલો, એક્સ અને વાય છે,
ચાલો એક્સ તરીકે તે અહીં વર્ણન અને ચાલો વાય તરીકે આ અહીં વર્ણન
દો અને તે 1 કિંમતો અને 2 માં મૂકી, જેથી આ અહીં મુખ્ય છે,
અને જ્યારે મુખ્ય સ્વેપ કાર્ય ઓપરેટિંગ સિસ્ટમ કોલ્સ
સ્વેપ કાર્ય સ્ટેક પર તેની મેમરી પોતાના swath આપે છે,
તેના સ્ટેક પર પોતાના ફ્રેમ, તેથી વાત કરવા માટે.
તે પણ આ ints માટે 32 બિટ્સ ફાળવે છે.
તેને a અને b કૉલ થાય છે, પરંતુ તે તદ્દન મનસ્વી છે.
તે તેમની કહેવાય હોઈ શકે છે ગમે તે કરવા ઇચ્છે છે, પરંતુ શું થાય છે જ્યારે મુખ્ય
કોલ્સ સ્વેપ છે તે 1 આ લે છે, એક ત્યાં નકલ મૂકે છે, નકલ ત્યાં મૂકે છે.
>> ત્યાં 1 સ્વેપ અન્ય સ્થાનિક ચલ છે, જોકે, શું >> tmp કહેવાય.
Tmp, તેથી દો મને મારી જાતને અન્ય 32 બિટ્સ અહીં આપી,
અને હું શું આ કાર્ય કરતા હતા?
મેં કહ્યું પૂર્ણાંક tmp એક, તેથી 1 છે નોંધાયો નહીં, તેથી હું આ કરી હતી જ્યારે અમે છેલ્લે આ ઉદાહરણ સાથે રમી હતી.
પછી બો નહીં, તેથી બો 2 છે, તેથી હવે આ 2 બને છે,
અને હવે બોલ્ડ કામચલાઉ નોકર નહીં, તેથી temp 1,
તેથી હવે b આ બને છે.
કે મહાન છે. તે કામ કર્યું હતું.
પછી પણ ટૂંક સમયમાં કાર્ય વળતર
ની સ્વેપ મેમરી અસરકારક રીતે અદૃશ્ય થઈ જાય છે કે જેથી તેનો ફરી ઉપયોગ કરી શકાય છે
ભવિષ્યમાં અમુક અન્ય કાર્ય દ્વારા, અને મુખ્ય દેખીતી રીતે સંપૂર્ણપણે યથાવત છે.
અમે મૂળભૂત આ સમસ્યા હલ કરવાની એક રીત જરૂર છે,
અને આજે આપણે છેલ્લે આવું જેમાં એક માર્ગ પડશે
અમે નિર્દેશક તરીકે ઓળખાય છે કંઈક દાખલ કરી શકો છો.
તે તારણ છે કે અમે આ સમસ્યાનો ઉકેલ કરી શકો છો
એક્સ અને વાય નકલો ન પસાર કરીને
પરંતુ માં પસાર કરીને તેના બદલે, તમે સ્વેપ કાર્ય કરવા માટે વિચારો છો?
અરે વાહ, આ સરનામું વિશે શું?
અમે ખરેખર ખૂબ વિગતવાર સરનામાં વિશે વાત કરી છે,
પરંતુ જો આ વર્ગમાં વપરાતું કાળું પાટિયું મારા કમ્પ્યુટર મેમરી પ્રતિનિધિત્વ
અમે ચોક્કસપણે મારી RAM માં બાઇટ્સ નંબરવાળી શરૂ કરી શકે છે
અને કહે છે આ # 1 બાઇટ છે, આ બાઇટ છે 2 #, બાઇટ 3 #,
# 4, બાઇટ # ... 2 અબજ જો હું RAM ની 2 ગીગાબાઇટ્સ હોય બાઇટ,
જેથી અમે ચોક્કસપણે અમુક મનસ્વી નંબર યોજના સાથે બન્યું
મારા કમ્પ્યુટર મેમરી બધી વ્યક્તિગત બાઇટ્સ છે.
>> જો તેના બદલે ત્યારે શું હું સ્વેપ કૉલ
એક્સ અને વાય નકલો બદલે પાસ
હું ને બદલે એક્સ ના અહીં સરનામું શા માટે પાસ કરતું નથી,
વાય ના અહીં સરનામું, જરૂરીયાતમાં પોસ્ટલ સરનામા
એક્સ અને વાય કારણે તે પછી સ્વેપ, જો તે માહિતગાર છે
એક્સ અને વાય મેમરી માં સરનામું,
પછી સ્વેપ, જો અમે તેને થોડો તાલીમ આપી,
તેમણે સંભવિત છે કે સરનામા માટે વાહન જેથી વાત કરવા માટે કરી શકે છે,
એક્સ, અને ત્યાં નંબર બદલવા માટે, તે પછી વાય ના સરનામા માટે વાહન,
સંખ્યા ત્યાં બદલવા માટે, ત્યારે પણ તે પોતાની જાતને કિંમતો નકલો ખરેખર નથી મળતું,
તેથી ભલે અમે મુખ્ય મેમરી હોવાથી આ અંગે વાત કરી
અને આ છે તે સ્વેપ મેમરી શક્તિશાળી અને C ની ખતરનાક ભાગ
છે કે જે કોઈપણ કાર્ય મેમરી કમ્પ્યુટર ગમે ત્યાં સ્પર્શ કરી શકે છે,
અને આ શક્તિશાળી છે કે તમે સી માં કોમ્પ્યુટર પ્રોગ્રામ સાથે ખૂબ ફેન્સી વસ્તુઓ કરી શકો છો
આ ખતરનાક છે કારણ કે તમે પણ ખૂબ જ સરળતાથી સ્ક્રૂ કરી શકો છો.
હકીકતમાં, એક પ્રોગ્રામ માટે સૌથી સામાન્ય રીતે આ દિવસ શોષણ કરવા
હજુ પણ છે પ્રોગ્રામર ખ્યાલ નથી
કે તે અથવા તેણી એક માહિતી પરવાનગી આપી છે
મેમરી માં સ્થાન ન કરવાનો ઈરાદો હતો લખવામાં આવે છે.
>> હમણાં પૂરતું, તે અથવા તેણી 10 કદ ઝાકઝમાળ ઘોષણા
પરંતુ પછી આકસ્મિક મેમરી કે એરે માં 11 બાઇટ્સ મૂકવા પ્રયાસ કરે છે,
અને તમે મેમરી ભાગો છે કે જે લાંબા સમય સુધી માન્ય સ્પર્શ કરવાનું શરૂ કરો.
જસ્ટ સંદર્ભ આ કરવા માટે, તમારે અમુક ખબર છે કે
સોફ્ટવેર ઘણીવાર તમે સીરીયલ નંબર અથવા નોંધણી કીઓ માટે પૂછે છે,
ફોટોશોપ અને વર્ડ અને આ જેવા કાર્યક્રમો.
ત્યાં તિરાડો અસ્તિત્વ ધરાવે છે, જેમ તમે કેટલાક ખબર, ઓનલાઇન જ્યાં તમે થોડી કાર્યક્રમ ચલાવી શકો છો,
અને વોઇલા Query, સીરીયલ નંબર માટે આ બોલ પર કોઈ વધુ વિનંતી.
કેવી રીતે કામ કરે છે?
ઘણા કિસ્સાઓમાં આ વસ્તુઓ સરળ કોમ્પ્યુટરો શોધી રહ્યાં છે
આ કોમ્પ્યુટર ખરેખર zeros અને મુદ્દાઓ પર ટેક્સ્ટ સેગમેન્ટો
જ્યાં કાર્ય કે જ્યાં સીરીયલ નંબર વિનંતી છે,
અને તમે તે જગ્યા પર ફરીથી લખી, અથવા જ્યારે કાર્યક્રમ ચાલી રહ્યો છે
તમે આકૃતિ જ્યાં કી વાસ્તવમાં સંગ્રહાયેલ છે કરી શકો છો
કંઈક ઉપયોગ કરીને ડીબગર તરીકે ઓળખાય છે, અને તમે સોફ્ટવેર કે જે રીતે ક્રેક કરી શકો છો.
આ દિવસ તો આગલા બે માટે કહે છે કે આ અમારી ઉદ્દેશ નથી,
પણ તે ખૂબ જ વાસ્તવિક વિશ્વમાં વિભાગીકરણ છે.
કે જે એક સોફ્ટવેર ચોરી સમાવેશ થાય છે,
પરંતુ ત્યાં પણ સમગ્ર મશીનો સમાધાન છે.
>> હકીકતમાં, વેબસાઇટ્સ આ દિવસોમાં જ્યારે લેવાતા હોય છે
અને ગડબડ અને માહિતી લીક છે અને પાસવર્ડો ચોરી થાય છે
આ ઘણી વાર એક મેમરી ખરાબ સંલગ્ન,
અથવા, ડેટાબેઝો કિસ્સામાં, નિષ્ફળતા પૂર્વાનુમાન માટે
વિરોધી ઇનપુટ, તેથી અઠવાડિયામાં પર વધુ આવે છે,
પરંતુ હવે માત્ર નુકસાન ના પ્રકારના એક ઝલક પૂર્વદર્શન કે તમે શું કરી શકો છો
સમજવા કેવી રીતે વસ્તુઓ હૂડ નીચે કામ નથી તદ્દન દ્વારા.
ચાલો સમજ્યા શા માટે આ ભાંગી છે તે વિશે જાઓ
એ સાધન છે કે વધુ અને વધુ ઉપયોગી બનશે
આપણા કાર્યક્રમો વધુ જટિલ છે.
આમ અત્યાર સુધીમાં જ્યારે તમે તમારા કાર્યક્રમ માં ભૂલ હતી
તમે તેને ડિબગીંગ વિશે કેવી રીતે ગયા છો?
તમારા યુકિતઓ શું આમ દૂર કરવામાં આવી છે, ભલે તે તમારી ટીએફ દ્વારા શીખવવામાં
અથવા માત્ર આત્મ શીખવવામાં?
[વિદ્યાર્થી] Printf.
Printf, તેથી printf કદાચ કે તમારા મિત્ર જો તમે જોવા માંગો છો
શું થઈ રહ્યું છે તે અંદર તમારા કાર્યક્રમ
તમે હમણાં printf અહીં મૂકો, printf અહીં, printf અહીં.
પછી તમે તેને ચલાવવા માટે છે, અને તમે સ્ક્રીન પર સામગ્રી સમગ્ર જથ્થો વિચાર
કે જે તમે પછી જાણી શું ખરેખર તમારા કાર્યક્રમ છે ખોટું થઈ રહ્યું છે ઉપયોગ કરી શકો છો.
>> Printf ખૂબ શક્તિશાળી વસ્તુ હોઈ શકે છે,
પરંતુ તે એક ખૂબ જ જાતે પ્રક્રિયા છે.
તમે એક printf અહીં મૂકો પાસે printf અહીં,
અને જો તમે તે લૂપની અંદર મૂકવામાં તમે 100 લીટીઓ વિચાર કરી શકે છે
આઉટપુટ કે જે તમે પછી મારફતે સત્ય હકીકત તારવવી હોય.
તે ડિબગીંગ કાર્યક્રમો માટે ખૂબ વપરાશકર્તા મૈત્રીપૂર્ણ અથવા અરસપરસ પદ્ધતિ નથી,
પરંતુ thankfully ત્યાં વિકલ્પો હાજર છે.
ત્યાં હમણાં માટે એક કાર્યક્રમ, GDB તરીકે ઓળખાય છે, એ GNU ડિબગર છે,
જે તમે કેવી રીતે તેનો ઉપયોગ માં થોડો arcane છે.
તે થોડી જટિલ છે, પ્રમાણિકપણે પરંતુ,
આ તે વસ્તુઓ જ્યાં જો તમે આ સપ્તાહમાં મૂક્યો અને એક પછી આવે છે
વધારાની માટે GDB કંઈક સમજવું કલાક
તે તમને લાંબા ગાળે કલાકો કદાચ દસ બચાવે છે,
જેથી સાથે દો, મને તમે કેવી રીતે આ વસ્તુ કામ કરે છે તે કઠણ પ્રશ્ન આપે છે.
>> હું મારા ટર્મિનલ વિન્ડોમાં છું.
મને આગળ વધો અને આ કાર્યક્રમ, buggy3 કમ્પાઇલ.
તે પહેલાથી જ છે તારીખ છે.
દો મને તેને ચલાવવા માટે જેમ અમે જ્યારે પાછળ હતી, અને ખરેખર, તે ભાંગી છે.
પરંતુ આ શા માટે છે? કદાચ હું સ્વેપ કાર્ય ખરાબ કર્યું.
કદાચ તે અને બોલ્ડ છે. હું તદ્દન તેમને ખસેડવા છું યોગ્ય રીતે આસપાસ.
મને આગળ વધો અને આ કરવા માટે.
બદલે માત્ર buggy3 સ્કોર દો મને બદલે આ કાર્યક્રમ GDB ચલાવવા માટે,
અને હું તેને કહી buggy3 સ્કોર જાઉં છું,
અને હું એક આદેશ વાક્ય દલીલ, તૂઇ સમાવેશ જાઉં છું,
અને અમે સ્પેક અંતે ભાવિ સમસ્યાઓ યાદ માં આ મૂકીશું.
અને હવે આ કાળા અને સફેદ ઈન્ટરફેસ ઉપર પોપ કે ફરીથી,
પ્રથમ થોડો જબરજસ્ત છે કારણ કે ત્યાં આ તમામ
અહીં નીચે વોરંટી માહિતી, પરંતુ ઓછામાં ઓછા ત્યાં પરિચિત કંઈક છે.
વિન્ડોની ટોચ મારા વાસ્તવિક કોડ છે,
અને જો હું અહીં સ્ક્રોલ દો મને ખૂબ જ મારા ફાઈલ શીર્ષ સરકાવવા,
અને ખરેખર, આ વિન્ડોની તળિયે buggy3.c, અને સૂચના છે
હું આ GDB પ્રોમ્પ્ટ હોય છે.
>> આ મારો સામાન્ય જ્હોન હાર્વર્ડ પ્રોમ્પ્ટ તરીકે જ નથી.
આ પ્રોમ્પ્ટ કરે છે કે જે મને GDB નિયંત્રિત કરવા માટે પરવાનગી આપે છે ચાલી રહ્યું છે છે.
GDB એક ડીબગર છે.
એક ડીબગર એક કાર્યક્રમ છે કે જે તમને લઈ જવામાં આવે છે
તમારા કાર્યક્રમ વાક્ય વાક્ય દ્વારા વાક્ય દ્વારા મૃત્યુદંડ,
જે રીતે તમે કંઈપણ કાર્યક્રમ કરવા માંગો છો કરી સાથે,
પણ વિધેયો કૉલ, અથવા looking વધુ અગત્યનું,
વિવિધ ચલ કિંમતો છે.
ચાલો આગળ વધો અને આ કરવા માટે.
હું આગળ જાઓ અને GDB પ્રોમ્પ્ટ પર લખો રન જાઉં છું,
જેથી સ્ક્રીન હું લખ્યો રન કર્યા છે તળિયે ડાબી બાજુએ નોટિસ,
અને હું દાખલ ફટકો કર્યું છે, અને તે શું હતી?
તે શાબ્દિક મારા કાર્યક્રમ ચાલી હતી, પરંતુ હું ખરેખર ખૂબ અહીં પર જાઓ નથી દેખાતી
કારણ કે હું ખરેખર ડીબગર નથી કહે છે
સમય ચોક્કસ ક્ષણે વિરામ છે.
જસ્ટ રન લખીને કાર્યક્રમ ચાલે છે.
હું ખરેખર કંઈપણ દેખાતી નથી. મેં તે કામ કરી શકે છે.
>> તેના બદલે દો મને આ કરવા માટે.
આ GDB પ્રોમ્પ્ટ પર દો મને બદલે વિરામ લખો દાખલ કરો.
કે નથી હું શું લખો હતો.
ની જગ્યાએ દો વિરામ મુખ્ય લખો.
અન્ય શબ્દોમાં, હું એક બ્રેકપોઇન્ટ કહેવાય કંઈક સેટ કરવા માંગો છો,
જે યોગ્ય રીતે કારણ કે તે ભંગ અથવા વિરામ કરશે આવ્યું છે
તમારા કાર્યક્રમ છે કે ચોક્કસ જગ્યાએ અમલ.
મુખ્ય મારું કાર્ય નામ છે.
નોંધ કરો કે GDB ખૂબ સ્માર્ટ છે.
તે figured છે કે મુખ્ય થી 18 વાક્ય પર આશરે શરૂ થાય છે
buggy3.c, અને પછી શીર્ષ પર ડાબે અહીં નોટિસ
B + અધિકાર 18 વાક્ય આગામી છે.
કે મને યાદ છે કે હું 18 વાક્ય પર એક બ્રેકપોઇન્ટ સેટ છે.
આ સમય છે જ્યારે હું રન લખો, હું મારું કાર્યક્રમ ચલાવવા જાઉં છું
અપ સુધી તે બ્રેકપોઇન્ટ બનાવ્યા,
જેથી કાર્યક્રમ મારા માટે 18 વાક્ય પર વિરામ કરશે.
અહીં અમે જાઓ, ચલાવો.
કંઈ થયું હોવાનું જણાય છે, પરંતુ તળિયે નોટિસ બાકી
શરૂ કાર્યક્રમ, buggy3, મુખ્ય માં buggy3.c 18 વાક્ય પર 1 બ્રેકપોઇન્ટ.
હું શું હવે કરી શકો છો?
>> નોંધ હું પ્રિન્ટ જેવી વસ્તુઓ લખીને શરૂ કરી શકો છો,
printf નથી, પ્રિન્ટ એક્સ, અને હવે એ વિચિત્ર છે.
આ $ 1 માત્ર એક જિજ્ઞાસા છે, કારણ કે અમે જોશો
દરેક વખતે જ્યારે તમે કંઈક પ્રિન્ટ તમે નવી કિંમત $ મેળવો.
કે જેથી છે કે તમે પાછા કેસ ફક્ત અગાઉના કિંમતો ઉલ્લેખ કરી શકે છે,
પરંતુ હવે માટે પ્રિન્ટ મને કહેવાની છે શું એ છે કે વાર્તામાં આ બિંદુએ x ની કિંમત
દેખીતી રીતે છે 134514032.
શું? જ્યાં પણ નહોતી આવે?
[અશ્રાવ્ય વિદ્યાર્થીઓ]
ખરેખર, આ છે જેને આપણે કચરો કિંમત કહી શકશો, અને અમે આ વિશે હજુ સુધી વાત કરી છે,
પરંતુ કારણ કે તમે ચલો પ્રારંભ
દેખીતી રીતે કે જેથી તેઓ કેટલાક કિંમત છે કે જે તમે તેમને કરવા માંગો છો હોય છે.
પરંતુ કેચ યાદ છે કે તમે ચલો જાહેર કરી શકો છો
જેમ હું મારી સિગ્મા ઉદાહરણ એક ક્ષણ પહેલા કર્યું
વાસ્તવમાં તેમને કિંમત આપ્યા વગર.
યાદ મને શું પર સિગ્મા અહીં કર્યું હતું.
હું n એ જાહેર, પરંતુ કિંમત શું હું તેને આપી હતી?
કંઈ નહિં, કારણ કે મને ખબર છે કે આગામી થોડા રેખાઓ
GetInt n ના અંદર કિંમત મૂકી સમસ્યા કાળજી લેશે.
>> પરંતુ 11 લીટી વાર્તા આ બિંદુએ
અને રેખા 12 અને 13 લાઇન અને 14 લાઇન
તે અનેક રેખાઓ સમગ્ર n ના કિંમત શું છે?
સી માં તમે માત્ર ખબર નથી.
તે સામાન્ય રીતે કેટલાક કચરો કિંમત, કેટલાક સંપૂર્ણપણે રેન્ડમ નંબર છે
કે બાકી છે અનિવાર્યપણે અગાઉની કેટલીક વિધેય માંથી
એવું ચલાવવા માટે, કરવામાં આવી છે જેથી તમારા કાર્યક્રમ ચલાવે છે
જણાવ્યું હતું કે કાર્ય કાર્ય, કાર્ય કાર્ય, નોંધાયો નહીં.
આ તમામ ફ્રેમ્સ મેમરી પર મૂકવા માટે, અને પછી તે વિધેયો વળતર,
અને જેમ હું ભૂંસવા માટેનું રબર તેમના મેમરી છેવટે ફરીથી સાથે સૂચવ્યું છે.
વેલ, તે માત્ર જેથી આ કાર્યક્રમ છે કે જે આ ચલ x થાય છે
માટે 134514032 જેવા કેટલાક કચરો કિંમત સમાયેલ હોય તેમ લાગે છે
અગાઉની કેટલીક કાર્ય છે, એક નથી કે હું લખી હતી.
તે કંઈક કે જે ઓપરેટીંગ સિસ્ટમ સાથે અસરકારક રીતે આવે હોઇ શકે છે,
હૂડ નીચે કેટલાક કાર્ય કરે છે.
>> ઠીક છે, કે દંડ છે, પરંતુ હવે દો આગામી વાક્ય આગળ.
જો હું મારો GDB પ્રોમ્પ્ટ પર "આગામી" લખો અને હું દાખલ દબાવો,
નોંધ્યું છે કે ચાલ હાયલાઇટ 19 વાક્ય ડાઉન
પરંતુ લોજિકલ સૂચિતાર્થ છે કે 18 વાક્ય છે
હવે સમાપ્ત "પ્રિન્ટ એક્સ" ચલાવવા, તેથી જો હું ફરી લખો
હવે હું 1 જોવા જોઈએ અને ખરેખર, હું નથી.
ફરીથી, આ સામગ્રી $ GDB તમે યાદ એક માર્ગ છે
પ્રિન્ટ ઇતિહાસ શું છે કે તમે પૂર્ણ કર્યું છે.
હવે મને આગળ વધો અને બહાર વાય છાપો, અને ખરેખર, વાય કેટલાક ઉન્મત્ત કિંમત તેમજ છે,
પરંતુ કોઇ મોટો સોદો છે કારણ કે 19 વાક્ય આપણે શું સોંપવા માટે કરશો
આ કિંમત 2, તેથી દો મને "આગામી" ફરીથી લખો.
અને હવે અમે printf વાક્ય પર છો.
મને પ્રિન્ટ એક્સ નથી.
મને પ્રિન્ટ વાય નથી. પ્રમાણિકપણે, હું થોડો આ પ્રિન્ટિંગ થાકેલું મેળવવામાં છું.
મને ને બદલે "ડિસ્પ્લે એક્સ" અને "ડિસ્પ્લે વાય," લખો
અને હવે દર વખતે હું ભવિષ્યમાં આદેશ લખો
હું શું ની યાદ આવશે એક્સ અને વાય શું એક્સ અને વાય એક્સ અને વાય શું છે.
>> હું પણ, એક અલગ પ્રકાર, જેમ કે "માહિતી સ્થાનિકો." કરી શકો છો
ઈન્ફો ખાસ આદેશ છે.
સ્થાનિક અર્થ એ થાય કે તે મને સ્થાનિક ચલો બતાવે છે.
જસ્ટ કિસ્સામાં હું ભૂલી ગયા હો અથવા આ ઉન્મત્ત, જટિલ કાર્ય છે
કે હું અથવા કોઈએ લખ્યું માહિતી સ્થાનિકો તમે કહેશે
આ સ્થાનિક કાર્ય અંદર તમામ સ્થાનિક ચલો શું છે
કે તમે જો તમે આસપાસ થેલી, કોથળી માંગો છો વિશે કાળજી શકે છે.
હવે, printf એક્ઝેક્યુટ કરવા માટે છે, તેથી દો મને આગળ અને માત્ર પ્રકાર જાઓ "આગામી".
કારણ કે અમે આ પર્યાવરણમાં છો તો અમે ખરેખર તે નથી જોઈ રહ્યાં છો
નીચે અહીં ચલાવો, પરંતુ નોટિસ તે થોડો mangled દર્શાશે અહીં.
નોટિસ પરંતુ તે સ્ક્રીન ઓવરરાઈડીંગ છે ત્યાં,
જેથી તે એક સંપૂર્ણ અહીં કાર્યક્રમ, નથી પરંતુ તે ઠીક છે કારણ કે હું હંમેશા આસપાસ થેલી, કોથળી કરી શકો છો
પ્રિન્ટ મદદથી જો હું માંગો છો.
>> મને આગામી ફરીથી લખો, અને હવે અહીં રસપ્રદ ભાગ છે.
વાર્તામાં આ બિંદુએ વાય 2 છે, અને એક્સ 1,
અહીં સૂચવ્યું હતું, અને ફરી,
કારણ આ આપોઆપ હવે દર્શાવી છે કારણ કે હું આદેશ વાપરવામાં
ડિસ્પ્લે એક્સ અને વાય પ્રદર્શન, તેથી ક્ષણ હું આગામી લખો
સિદ્ધાંત એક્સ અને વાય માં સ્વૅપ બનવા જોઈએ.
હવે, અમે પહેલાથી જ જાણો છો કે આ કેસ નથી ચાલી રહ્યું છે,
પરંતુ અમે એક ક્ષણ જોઇ અમે કેવી રીતે ઊંડા ડાઇવ બહાર આકૃતિ શા માટે છે કે જે સાચું કરી શકો.
આગળ, અને દુર્ભાગ્યે, વાય હજુ 2 અને એક્સ હજુ પણ 1, અને મને ખૂબ ખાતરી કરવા કરી શકો છો.
પ્રિંટ એક્સ, વાય પ્રિન્ટ.
ખરેખર, જેઓ કોઈ ખરેખર થયું છે, તેથી આપણે આ બોલ શરૂ કરો.
સ્પષ્ટ રીતે સ્વેપ તૂટી જાય છે.
ચાલો ને બદલે "રન" ફરીથી લખો.
મને હા કહી, હું તેને શરૂઆતથી ફરી શરૂ કરવા માંગો દાખલ કરો.
>> હવે હું પાછી 18 વાક્ય પર અપ છું.
હવે નોટિસ એક્સ અને વાય કચરો કિંમતો ફરી છે.
આગળ, આગામી, આગામી, આગામી.
જો હું કંટાળી વિચાર હું પણ આગળના n ટાઈપ કરી શકો છો.
તમે તેને અક્ષરોની ટૂંકી શક્ય ક્રમ માટે ટૂંકાવવું કરી શકો છો.
સ્વેપ હવે તૂટી ગયો છે.
માતાનો ડાઈવ માં, દો જેથી તેના બદલે આગામી લખીને છે,
હવે હું પગલું લખો જાઉં છું કે જેથી હું અંદરથી આ કાર્યનો એક પગ છું
જેથી હું તેને લઈ જવામાં કરી શકો છો, કે જેથી હું પગલું હિટ કરો અને પછી દાખલ કરો.
નોંધ આ હાયલાઇટ જમ્પ મારા કાર્યક્રમ માં 36 વાક્ય નીચા છે.
હવે સ્થાનિક ચલો શું છે?
ઈન્ફો સ્થાનિકો.
હજી સુધી કંઈ કારણ કે અમે તે લીટી નથી મેળવેલ કરી લીધી છે,
તેથી આપણે આગળ વધીશું અને કહે છે "આગામી".
હવે અમે tmp, પ્રિન્ટ tmp હોય એવું લાગે છે.
કચરો કિંમત, અધિકાર? મને એવું લાગે છે.
કેવી રીતે તે અંગે, પ્રિન્ટ બો 1 અને 2 છાપી?
એક ક્ષણ માં, જલદી હું આગામી ફરી લખો
tmp માટે 1 ની કિંમત પર લઇ, આસ્થાપૂર્વક રહ્યું છે,
કારણ કે tmp માટે ની કિંમત સોંપાયેલ રહ્યું છે.
>> હવે આપણે એક, પ્રિન્ટ બો છાપી નથી,
પરંતુ હવે tmp છાપો, અને તે ખરેખર છે 1.
મને આગામી નથી. મને આગામી નથી.
હું સ્વેપ કાર્ય પૂર્ણ કરી લો છો.
હું હજુ પણ અંદર 40 લીટી માં તે છું, જેથી દો મને એક છાપો,
પ્રિન્ટ બો, હું અને પડી નથી tmp શું છે.
એવું લાગે છે કે સ્વેપ યોગ્ય છે જ્યારે તે બોલ્ડ અને જેઓ માટે આવે છે.
પરંતુ જો હું હવે આગામી લખો, હું 25 લીટી પર પાછા આવો,
અને અલબત્ત, હું એક્સ અને વાય પ્રિન્ટ પ્રકાર જો
તેઓ હજી પણ યથાવત છે, તેથી અમે સમસ્યા નિશ્ચિત નથી છે.
પરંતુ diagnostically હવે કદાચ આ GDB કાર્યક્રમ સાથે
અમે ઓછામાં ઓછા એક પગલું સમજ નજીક મેળવેલ કર્યા છે
શું કચરા માટે printf અહીં મૂકીને અમારી કોડ વગર ખોટું ચાલી રહ્યું છે,
printf અહીં, printf અહીં અને પછી તેને ફરીથી અને ફરીથી ચાલી
બહાર આકૃતિ શું ખોટું થઈ રહ્યું છે તે પ્રયાસ કરે છે.
>> હું આગળ વધો અને આ બહાર નીકળી જાઓ બહાર નીકળવા સાથે સંપૂર્ણપણે જાઉં છું.
, "કોઈપણ રીતે છોડો?" તે પછી કહેવું રહ્યું છે હા.
હવે હું મારા સામાન્ય પ્રોમ્પ્ટ પર પાછા છું, અને હું GDB ની મદદથી કરી રહ્યો છું.
એક અલગ તરીકે, તમે આ તૂઇ ધ્વજ ઉપયોગ કરવાની જરૂર નથી.
હકીકતમાં, જો તમે તેને ભૂલી જવું તમે અનિવાર્યપણે સ્ક્રીનના તળિયે અડધા મેળવો.
જો હું તે પછી વિરામ મુખ્ય લખો અને પછી ચલાવો
હું હજુ પણ મારા કાર્યક્રમ ચલાવવા શકો છો, પરંતુ તે શું કરશે શું વધુ ટેક્સ્ટ છે
ફક્ત મને એક સમયે વર્તમાન લીટી એક બતાવે છે.
ધ તૂઇ, શાબ્દિક વપરાશકર્તા ઇન્ટરફેસ,
હમણાં જ તમને બતાવે છે એક વખત, કે જે કદાચ થોડી સરળ સરળ ખાતે કાર્યક્રમ વધુ.
પરંતુ ખરેખર, હું હમણાં જ આગામી, આગામી, આગામી કરી શકો છો,
અને હું એક સમયે એક લીટી જોવા જાઉં છું, અને જો હું ખરેખર શું થઈ રહ્યું છે તે કરવા માંગો છો
હું યાદી લખો અને પડોશી રેખાઓ સંપૂર્ણ ટોળું જોઇ શકો છો.
>> ત્યાં એક વિડિઓ કે અમે પૂછ્યું છે કે તમે જુઓ સમસ્યા 3 સુયોજિત કરે છે
જેમાં Nate GDB જટિલતાઓ કેટલાક આવરી લે છે,
અને આ એક એ વસ્તુઓ છે, પ્રામાણિકપણે, જ્યાં તમે અમુક ટકાવારી નગણ્ય
સ્પર્શ, ક્યારેય GDB અને એક ખરાબ વસ્તુ હશે
કારણ કે શાબ્દિક તમે અંત વધારે સમય આ સત્ર પછી વીતાવતા કરશે
નીચે ભૂલો પીછો પછી તમે જો તમે કે અડધા કલાક / કલાક મૂકવા આવશે
આ અઠવાડિયે અને આગામી શિક્ષણ GDB સાથે આરામદાયક વિચાર.
Printf તમારા મિત્ર હતા.
GDB હવે તમારા મિત્ર પ્રયત્ન કરીશું.
>> GDB પર કોઈપણ પ્રશ્ન છે?
અને અહીં સૌથી શક્તિશાળી અને ઉપયોગી આદેશો કેટલાક ઝડપી યાદી છે.
યાહ. >> તમે શબ્દમાળા છાપી શકે છે?
તમે શબ્દમાળા છાપી શકો છો? ચોક્કસ.
તે માત્ર પૂર્ણાંકો નથી.
જો ચલ ઓ પ્રિન્ટ s માં ફક્ત પ્રકાર શબ્દમાળા છે.
તે તમને દર્શાવે છે કે શબ્દમાળા ચલ શું છે.
[અશ્રાવ્ય વિદ્યાર્થીઓ]
તે તમને સરનામા અને શબ્દમાળા પોતે આપશે.
તે તમે બંને બતાવશે.
અને એક છેલ્લા વસ્તુ, માત્ર કારણ કે આ પણ ખબર સારું છે.
બેકસ્ટ્રેસ અને ફ્રેમ દો, મને આ એક છેલ્લો સમય માં ડાઇવ
GDB સાથે જ ચોક્કસ કાર્યક્રમ.
મને આગળ વધો અને શાબ્દિક વપરાશકર્તા ઈન્ટરફેસ આવૃત્તિ ચલાવવા માટે,
મુખ્ય તૂટી જાય છે.
મને આગળ વધો અને ફરી ચલાવો. અહીં હું છું.
હવે મને આગામી, આગામી, આગામી, આગામી, આગામી જાઓ, પગલું દાખલ કરો.
>> અને હવે કદાચ હું સ્વેપ હવે ઇરાદાપૂર્વક છું, પણ મને જેમ છું "ધુત્કારી કાઢવું, x ની કિંમત શું હતું?"
હું એક્સ કંઈ પણ કરી શકે છે.
હું વાય નથી કારણ કે તેઓ અવકાશ માં નથી કરી શકો છો.
તેઓ સંદર્ભમાં, નથી પરંતુ કોઇ સમસ્યા નથી.
હું બેકસ્ટ્રેસ ટાઈપ કરી શકો છો.
કે મને વિધેયો કે જે સમયે આ બોલ પર ચલાવવામાં આવ્યા છે, તમામ બતાવે છે.
નોંધ કરો કે મુખ્ય સાથે નીચે એક, મુખ્ય, અપ લાઇન
અમારા ચિત્ર તળિયે અહીં છે.
હકીકત એ છે કે તે સ્વેપ રેખાઓ ઉપર સ્વેપ મેમરી તે ઉપર અહીં હોવા સાથે છે,
અને જો હું મુખ્ય પાછા કામચલાઉ મેળવવા માંગો છો હું "ફ્રેમ." કહી શકો છો
નંબર શું છે? મુખ્ય # 1 ફ્રેમ હોય છે.
હું આગળ વધો અને કહે જાઉં છું "1 ફ્રેમ."
>> હવે હું મુખ્ય ફરી છું, અને હું એક્સ છાપી શકો છો, અને હું વાય છાપી શકો છો,
પણ હું એક બો અથવા છાપી શકતા નથી.
પરંતુ હું તો હું કહી શકો છો, "ઠીક છે, એક મિનિટ રાહ જુઓ સ્વેપ ક્યાં હતી.?"
મને આગળ વધો અને કહે છે "ફ્રેમ 0."
હવે હું પાછી છું જ્યાં હું પ્રયત્ન કરવા માંગો છો, અને પૃથક એક તરીકે,
ત્યાં અન્ય આદેશો પણ છે, જો કે તમે ખરેખર કંટાળી ટાઈપ આગામી, આગામી, આગામી, આગામી મળી રહ્યા હોય,
તમે સામાન્ય રીતે જેવી વસ્તુઓ કહી શકીએ "10 આગામી," અને તે આગામી 10 રેખાઓ દ્વારા કૂદી જશે.
તમે પણ લખી "ચાલુ" જ્યારે તમે ખરેખર તેને મારફતે વેગ સાથે ખવડાવી શકો છો.
ચાલુ રાખો વિક્ષેપ વગર તમારા કાર્યક્રમ ચલાવવા ત્યાં સુધી તેને બીજી બ્રેકપોઇન્ટ બનાવ્યા કરશે,
લુપ માં કે તમારા કાર્યક્રમ નીચે ઘટે.
>> આ કિસ્સામાં અમે અંત સુધી ચાલુ રાખ્યું, અને કાર્યક્રમ સામાન્ય રીતે બહાર.
આ એક ફેન્સી માર્ગ, ઊતરતી પ્રક્રિયા છે.
ફક્ત તમારી કાર્યક્રમ સામાન્ય રીતે બહાર.
વિડિઓ અને સત્રો ડિબગીંગ આવવા કે પર વધુ.
ઘણી હતી.
ચાલો અમારી વિરામ 5-મિનિટ અહીં લે છે, અને અમે સ્ટ્ર્ક્ટ્સ અને ફાઈલો સાથે પરત મળશે.
>> જો તમે આ સપ્તાહ pset માં પહેલેથી dived છે
તમે જાણશો કે અમે વિતરણ કોડ ઉપયોગ,
સ્ત્રોત કોડ કે અમે પ્રારંભ બિંદુ, અમુક નવી ટેકનિકો તરીકે તમને પૂરી પાડે છે.
ખાસ કરીને, અમે માળખું આ નવું સ્ટ્રક્ટ કહેવાય કીવર્ડ, રજૂઆત કરી હતી,
તેથી અમે પ્રકારની વૈવિધ્યપૂર્ણ ચલો બનાવી શકો છો.
અમે પણ ફાઈલ ફાઈલ I / O, ઇનપુટ અને આઉટપુટ કલ્પના કરવામાં આવી હતી,
અને આ છે જેથી અમે રાજ્ય સંગ્રહી શકો છો
તમારા ભાંખોડિયાંભર થઈને બોર્ડ ઓફ ડિસ્ક પર ફાઈલ માટે
જેથી શિક્ષણ ફેલો અને હું સમજી શકે
શું તમારા કાર્યક્રમ ની અંદર પર જાતે રમવા કર્યા વગર ચાલી રહ્યું છે
ભાંખોડિયાંભર થઈને ઓફ રમતો ડઝન.
અમે આ વધુ automatedly કરી શકો છો.
>> એક સ્ટ્રક્ટ આ વિચાર ખૂબ જ આકર્ષક સમસ્યા નિવારે છે.
ધારો કે અમે કેટલાક કાર્યક્રમ અમલમાં માંગો છો
કે કોઈક વિદ્યાર્થીઓ પર જાણકારી સાચવી રાખે છે,
અને વિદ્યાર્થીઓ, હમણાં પૂરતું, એક પાસે ID છે, હોઈ શકે છે એક નામ
અને હાર્વર્ડ જેવી સ્થળે એક ઘર છે, તેથી આ જાણકારી 3 ટુકડાઓ છે
અમે આસપાસ રાખવા માંગો છો, તેથી દો મને આગળ વધો અને થોડો કાર્યક્રમ અહીં લખી શરૂ કરવા માટે,
stdio.h સમાવેશ થાય છે.
મને cs50.h. સમાવેશ કરવા
અને પછી મારી મુખ્ય કાર્ય શરૂ કરો.
હું કોઇ પણ આદેશ વાક્ય દલીલો સાથે ગૂંચવવું કરશે,
અને અહીં હું એક વિદ્યાર્થી માંગો છો, તેથી હું કહેવા જાઉં છું
એક વિદ્યાર્થી એક નામ ધરાવે છે, તેથી હું કહેવા જાઉં છું "શબ્દમાળા નામ."
પછી હું કહેવા વિદ્યાર્થી પણ એક ID છે, તેથી પૂર્ણાંક આઈડી જાઉં છું,
અને એક વિદ્યાર્થી એક મકાન ધરાવે છે, જેથી હું પણ કહેવું જાઉં છું "શબ્દમાળા મકાન છે."
પછી હું આ થોડું આ જેવા વધુ સ્વચ્છ ઓર્ડર પડશે.
ઠીક છે, હવે હું 3 જેની સાથે એક વિદ્યાર્થી પ્રતિનિધિત્વ માટે ચલો હોય છે, તેથી "એક વિદ્યાર્થી."
>> અને હવે હું આ કિંમતો રચના કરવા માંગો છો, તેથી દો મને આગળ વધો અને કંઈક કહેવું
"Id = 123."
નામ ડેવિડ વિચાર રહ્યું છે.
હવે કહો કે ઘર માટે માથેર વિચાર રહ્યું છે,
અને પછી હું printf જેમ આપખુદ કંઈક કરવા જાઉં છું ("% s,
ID ને કે જેના% d છે,% s માં રહે છે.
અને હવે, હું શું અહીં પ્લગ કરવા માંગો છો, એક અન્ય બાદ?
નામ, id ઘર; વળતર 0.
ઠીક છે, જ્યાં સુધી હું ક્યાંક અહીં ખરાબ
મને લાગે છે કે અમે ખૂબ સારી કાર્યક્રમ છે કે જે એક વિદ્યાર્થી સંગ્રહ કરે છે.
અલબત્ત, આ છે કે જે બધી રસપ્રદ નથી. તો શું હું 2 વિદ્યાર્થીઓ માંગો છો?
કે કોઇ મોટો સોદો છે. હું 2 લોકો આધાર આપી શકે છે.
મને આગળ વધો અને આ પ્રકાશિત કરો અને નીચે અહીં જાઓ,
અને હું "id 456 =" રોબ જેવી કોઇ વ્યક્તિએ કિર્કલૅંડ રહે માટે કહી શકો છો.
>> ઠીક છે, રાહ જુઓ, પણ હું એ જ વસ્તુ આ કૉલ કરી શકતા નથી,
અને લાગે છે કે હું આ નકલ હોય જાઉં છું,
જેથી દો મને કહે છે કે આ હિસ્સો ડેવિડ ચલો હશે,
દો અને મને રોબ માટે આ અમુક નકલો મેળવી.
અમે આ રોબ કૉલ પરંતુ આ કામ હવે નથી રહ્યું છે પડશે
કારણ કે હું રાહ છે, ચાલો મને id1 બદલવા માટે, NAME1 અને house1.
રોબ 2 હોવું, 2 આવશે.
હું આ અહીં, અહીં, અહીં, અહીં, અહીં અહીં બદલી મેળવ્યા છે.
રાહ જુઓ, શું ટોમી વિશે શું? માતાનો આ ફરીથી દો.
દેખીતી રીતે જો તમે હજુ પણ લાગે છે કે આ આવું કરવાનો આ સારો માર્ગ છે તેને નથી,
જેથી નકલ / ખરાબ પેસ્ટ કરો.
પરંતુ અમે આ સપ્તાહ પહેલા ઉકેલી.
>> અમારા ઉકેલ શું હતું જ્યારે અમે જ માહિતી પ્રકાર અનેક ઉદાહરણો માગતો?
[વિદ્યાર્થીઓ] હારમાળા.
ઝાકઝમાળ, તેથી દો મને આ સાફ કરવાનો પ્રયાસ કરો.
મને ટોચ પર જાતે માટે અમુક જગ્યા બનાવે છે, અને દો મને બદલે આ અહીં કરો.
અમે આ લોકો કહે છે, અને પડશે બદલે હું કહેવા જાઉં છું "પૂર્ણાંક ids"
અને હું હવે માટે 3 ના આધાર જાઉં છું.
હું "શબ્દમાળા નામો," કહેવું અને હું 3 ના આધાર પડશે જાઉં છું,
અને પછી હું "શબ્દમાળા ગૃહો," કહેવું અને હું 3 ના આધાર જાઉં છું જાઉં છું.
હવે ડેવિડ પોતાના સ્થાનિક ચલો મેળવવાની બદલે અહીં
અમે તે છૂટકારો મેળવી શકે છે.
કે સારા કે જે આપણે આ સફાઈ હોવ લાગે છે.
હું પછી કહેવું ડેવિડ નામો અને [0] [0] પ્રયત્ન રહ્યું છે કરી શકો છો
અને ઘરો. [0]
અને પછી રોબ અમે જ રીતે આ બચાવી શકો છો.
ચાલો આ નીચે અહીં મૂકો, જેથી તેઓ આપખુદ [1] જાહેરાતો જ હશે.
તેમણે નામો જ હશે [1],
અને પછી છેલ્લે, ઘરો. [1]
>> હજુ થોડું જટિલ, અને હવે હું આ બહાર આકૃતિ હોય છે,
તેથી આપણે કહેવું "નામો [0], id [0], ઘરો [0]
દો અને આ pluralize.
Ids, જાહેરાતો, જાહેરાતો.
અને ફરી, હું તે કરી રહ્યો છું, તેથી ફરી, હું પહેલેથી / નકલ ફરીથી પેસ્ટ આશ્રય છું,
તેથી મતભેદ છે ત્યાં બીજી ઉકેલ અહીં છે.
હું કદાચ આ અથવા તે જેમ લૂપ કંઈક કરી શકો છો સાફ વધુ અપ
જેથી ટૂંકા, તે થોડું સારું છે પરંતુ હજુ પણ જેવી લાગે છે
હું / નકલ કરીને પેસ્ટ કરો આશ્રય છું, પણ આ, હું દાવો,
ખરેખર મૂળભૂત અધિકાર ઉકેલ નથી કારણ કે
જો કયારેક અમે નક્કી તમે શું જાણો છો?
અમે ખરેખર ડેવિડ અને રોબ માટે ગયેલ હોવા જોઈએ ઇમેઇલ સરનામાંઓ સ્ટોર
અને આ કાર્યક્રમ માં બીજું દરેકને.
અમે પણ ફોન નંબરો સ્ટોર કરીશું.
અમે પણ કટોકટી સંપર્ક નંબરો સ્ટોર કરીશું.
અમે માહિતી આ બધા ટુકડાઓ કે અમે સંગ્રહવા માંગો તો,
તેથી તમે જે અંગે કેવી રીતે જવું છે?
>> તમે ટોચ પર અન્ય એરે જાહેર કરો, અને પછી તમે જાતે ઉમેરવા
ઇમેઇલ સરનામું [0] ઇમેઇલ [1] સરનામા
ડેવિડ અને રોબ અને તેથી આગળ.
પરંતુ ખરેખર એક માત્ર આ ડિઝાઇનમાં રહેલી ધારણા છે
કે હું સન્માન સિસ્ટમ વાપરી છું કે ખબર
[I] કેટલાક એરે દરેક
ફક્ત તેથી જ વ્યક્તિ નો સંદર્ભ લો થાય છે,
તેથી [0] જાહેરાતો માં 123 સંખ્યા છે,
અને હું નામો ધારણ જાઉં છું [0]
એ જ વ્યક્તિ નામ અને [0] ગૃહો
એ જ વ્યક્તિ અને વિવિધ એરે કે હું બનાવવા તમામ ઘર તેથી આગળ છે.
નોટિસ પરંતુ ત્યાં કોઈ મૂળભૂત જોડાણ છે
માહિતી, id નામ, અને ઘરની તે 3 ટુકડાઓ વચ્ચે,
તેમ છતાં એન્ટિટી અમે આ કાર્યક્રમ માં મોડેલ પ્રયાસ કરી રહ્યા છો એરે નથી.
એરે ફક્ત આ કરવાથી આ કાર્યક્રમ વિષયક રીત છે.
શું ખરેખર આપણે આપણા કાર્યક્રમમાં મોડલ માંગો છો વ્યક્તિ છે
ડેવિડ, જે અંદર રોબ જેવી વ્યક્તિ જેવી
અથવા પ્રાવૃત એક નામ અને ID અને એક ઘર છે.
>> અમે કોઈક ઇનકેપ્સ્યુલેશન આ વિચાર વ્યક્ત કરી શકો છો
જેમાં એક વ્યક્તિ એક ID, એક નામ અને એક ઘર હોય છે
ખરેખર આ ચૂંથવું આશરો નથી અને માત્ર અમે જેમાં
કે કૌંસ કંઈક વિશ્વાસ
આ વિષમ એરે દરેક એ જ માનવ એન્ટિટી સંદર્ભ લે છે?
અમે ખરેખર આ કરી શકો છો.
મને ઉપર હવે મુખ્ય જાઓ, અને દો મને મારી પોતાની માહિતી પ્રકાર બનાવો
ખરેખર પ્રથમ વખત.
અમે ચઢાઇને માં આ પદ્ધતિનો ઉપયોગ,
પરંતુ અહીં હું આગળ જાઓ અને માહિતી પ્રકાર બનાવો જાઉં છું,
અને તમે જાણો છો શું, હું તે વિદ્યાર્થી અથવા વ્યક્તિ કૉલ જાઉં છું,
અને હું typedef ઉપયોગ માટે એક પ્રકાર વ્યાખ્યાયિત જાઉં છું.
હું કહે છે કે આ માળખું છે જાઉં છું,
અને પછી આ માળખું પ્રકાર વિદ્યાર્થી હોઈ શકે છે, અમે કહીએ છીએ પડશે રહ્યું છે,
છતાં પણ તે મારા માટે હવે ક્ર થોડું છે.
અમે "પૂર્ણાંક id." કહેવું પડશે
અમે "શબ્દમાળા નામ." કહેવું પડશે
તો પછી અમે "શબ્દમાળા ઘર," કહેવું પડશે
હવે જેથી કોડ આ થોડા લીટીઓ ના અંત સુધીમાં
મેં હમણાં જ રણકાર શીખવ્યું કે અસ્તિત્વમાં
ints ઉપરાંત એક માહિતી પ્રકાર, શબ્દમાળાઓ ઉપરાંત, ઉપરાંત ફ્લોટ્સ ઉપરાંત ડબલ્સ.
>> સમય 11 લીટી માં આ ક્ષણ મુજબ, હવે એક નવી માહિતી વિદ્યાર્થીઓ કહેવાય પ્રકાર છે,
અને હવે હું એક વિદ્યાર્થી ચલ હું માંગો છો ગમે ત્યાં જાહેર કરી શકે છે,
જેથી દો મને સરકાવો લોકો અહીં.
હવે હું આ છૂટકારો મેળવવા શકો છો, અને હું પાછળ જવા માટે નીચે ડેવિડ કરી શકો છો અહીં,
અને ડેવિડ માટે હું ખરેખર ડેવિડ એમ કહે કરી શકો છો,
અમે શાબ્દિક જાતે પછી ચલ નામ કરી શકો છો,
છે પ્રકાર વિદ્યાર્થી હશે.
આ થોડો વિચિત્ર લાગે છે, પરંતુ આ છે કે જે બધી અલગ નથી
પૂર્ણાંક અથવા સ્ટ્રિંગ અથવા ફ્લોટ તરીકે કંઈક જાહેર છે.
તે માત્ર જેથી વિદ્યાર્થી કહેવાય હવે થાય છે,
અને જો હું આ માળખાની અંદર કંઈક મૂકેલ
હું હવે વાક્યરચના એક નવી ટુકડો ઉપયોગ કરે છે, પરંતુ તે યોગ્ય સરળ છે,
david.id = 123, david.name = મૂડી ડી માં "ડેવિડ",
અને david.house = "માથેર,"
અને હવે હું આ સામગ્રી છૂટકારો અહીં મેળવી શકો છો.
નોટીસને આપણે હવે ખરેખર એક વધુ સારું રીતે કર્યું છે અમારા કાર્યક્રમ ફરીથી ડિઝાઇન
કે હવે અમારા કાર્યક્રમ વાસ્તવિક વિશ્વમાં પ્રતિબિંબ.
>> ત્યાં એક વ્યક્તિ અથવા એક વિદ્યાર્થી એક ખ્યાલ વાસ્તવિક દુનિયાની છે.
અહીં અમે હવે એક વ્યક્તિ અથવા વધુ સ્પષ્ટતાપૂર્વક એક વિદ્યાર્થી એક સી આવૃત્તિ હોય.
તે વ્યક્તિ ની અંદર આ સંબંધિત લાક્ષણિકતાઓ હોય છે,
ID ને નામ, અને ઘર છે, તેથી રોબ આવશ્યક સમાન વસ્તુ નીચે અહીં બને છે,
વિદ્યાર્થી લૂંટવું, અને તેથી હવે 456 = rob.id,
rob.name = "રોબ."
હકીકત એ છે કે ચલ રોબ કહે છે અર્થહીન જેવું છે.
અમે તેના એક્સ અથવા વાય અથવા z કહે છે શકે છે.
અમે હમણાં જ તે અર્થનિર્ધારણ સુસંગત હોવું રોબ નામ આપવામાં આવ્યું,
પરંતુ ખરેખર તે નામ છે કે જે ક્ષેત્ર જાતે અંદર છે,
તેથી હવે હું આ છે.
આ ખૂબ શ્રેષ્ઠ ડિઝાઈન કે હું હાર્ડ ડેવિડ કોડેડ કર્યા છે, જેમ કે ન જણાય નથી.
હું હાર્ડ રોબ કોડેડ થઈ છે.
અને હું હજુ પણ કેટલાક નકલ આશરો અને દર વખતે હું નવા ચલો માંગો છો પેસ્ટ હોય છે.
વધુમાં, હું દેખીતી રીતે આ ચલો દરેક એક નામ આપો હોય છે,
છતાં પણ હું ખૂબ બદલે આ ચલો વર્ણવવા છો
વધુ સામાન્ય વિદ્યાર્થીઓ.
>> હવે અમે વિચારો કે આપણા માટે કરવામાં આવી છે તેમજ કામ મર્જ કરી શકો છો
અને તેની જગ્યાએ કહે છે, "તમે જાણવા, મને ચલ કહેવાતા વિદ્યાર્થીઓ આપવા માટે,
દો અને તેથી તે 3 કદ હોવા છે "હવે હું આ વધુ રિફાઇન કરી શકો છો,
જાતે જાહેર ડેવિડ છૂટકારો મેળવવા માટે,
અને હું તેના બદલે વિદ્યાર્થીઓને જેવા [0] અહીં કંઈક કહી શકો છો.
હું પછી વિદ્યાર્થીઓ [0] અહીં કહી શકીએ,
અહીં, અને તેથી આગળ [0] વિદ્યાર્થીઓ, હું અને આસપાસ જઈ શકે છે
અને તે રોબ માટે સાફ.
હું પણ હવે કદાચ કોઇ લૂપ ઉમેરવા જઈ શકે છે
અને GetString અને GetInt મદદથી ખરેખર વપરાશકર્તા પાસેથી આ કિંમતો મેળવો.
હું સતત ઉમેરવા જઈ કારણ કે સામાન્ય રીતે આ પદ્ધતિ ખરાબ છે શકે છે
હાર્ડ કોડ 3 જેવા કેટલાક મનસ્વી અહીં નંબર
અને પછી ફક્ત યાદ રાખો કે તમે તેને કોઈ વધુ 3 કરતાં વિદ્યાર્થીઓ મૂકવા જોઇએ.
તે કદાચ વધુ સારી રીતે થઈ # મારા ફાઈલ ટોચ પર વ્યાખ્યાયિત ઉપયોગ કરશે
અને પરિબળ છે કે બહાર, તેથી ખરેખર દો, મને આગળ વધો અને આ સામાન્યીકરણ.
>> દો મને એક ઉદાહરણ છે કે આજે એક છે ખોલવા
અગાઉથી ઉદાહરણો માટે, structs1.
આ એક વધુ સંપૂર્ણ કાર્યક્રમ છે કે જે વાપરે # અહીં વ્યાખ્યાયિત છે
કહે છે અને અમે મૂળભૂત રીતે 3 વિદ્યાર્થીઓ પાસે જઈ રહ્યાં છો.
અહીં હું વિદ્યાર્થીઓ એક વર્ગ વર્થ જાહેર છું,
વિદ્યાર્થીઓ એક વર્ગખંડમાં, અને તેથી હવે હું એક લૂપ ઉપયોગ કરું છું
ફક્ત કોડ થોડી વધુ ભવ્ય બનાવવા માટે, વર્ગ રચના
વપરાશકર્તાની ઇનપુટ સાથે છે, તેથી હું = 0 થી વિદ્યાર્થીઓ, જે 3 છે અપ ફરી વળવું.
અને પછી હું આ આવૃત્તિ માં વપરાશકર્તા પૂછવા
શું આ વિદ્યાર્થી ID ને, અને હું તેને GetInt સાથે મળે છે.
શું આ વિદ્યાર્થી નામ છે, અને પછી હું તેને GetString સાથે મળે છે.
જે વિદ્યાર્થી ઘર શું છે? હું તેને GetString સાથે મળે છે.
અને પછી અહીં નીચે હું માત્ર ફેરફાર કરવાનો નિર્ણય લીધો
કેવી રીતે હું આ છાપવા છું બહાર અને ખરેખર લૂપ ઉપયોગ
અને હું જે છાપવા છું?
આ ટિપ્પણી અનુસાર હું માથેર કોઈને છાપવા છું,
અને તે છે રોબ અને ટોમી તેથી અને જેથી કરીને ખરેખર ટોમી માથેર માં.
ટોમી અને ડેવિડ આ કેસ માં મુદ્રિત થઈ શકે છે, પરંતુ આ કેવી રીતે કામ કરે છે?
અમે આ કાર્ય કરતાં પહેલાં જોઇ ન હોય, પરંતુ આ શું કરે છે માટે એક અનુમાન લો.
શબ્દમાળાઓ સરખાવે છે.
>> તે થોડો બિન સ્પષ્ટ તે કેવી રીતે શબ્દમાળાઓ સરખાવે છે કારણ કે તે તારણ
જો તે આપે છે કે 0 અર્થ એ થાય કે શબ્દમાળાઓ સમાન છે.
જો તે -1 આપે છે તેનો અર્થ એ કે એક અન્ય પહેલા મૂળાક્ષરોના ક્રમમાં આવે છે,
અને જો તે +1 આપે છે કે જે અન્ય શબ્દ અર્થ છે મૂળાક્ષરોના ક્રમમાં આવે છે
અન્ય પહેલા, અને તમે ઑનલાઇન અથવા મદદ પાનાં જોવા માટે કરી શકો છો
જોવા માટે બરાબર રીતે જે છે, પરંતુ આ તમામ હવે કરવાનું છે તે કહેતા છે
જો [i]. ઘર "માથેર" સમાન છે
પછી આગળ વધો અને તેથી છાપી અને તેથી માથેર છે.
પરંતુ અહીં કંઈક પહેલા જોઇ ન હોય, અને અમે પાછા આ આવવું પડશે.
હું ક્યારેય મારા કાર્યક્રમો કોઈપણ આવું કર્યા નથી યાદ નથી.
મફત દેખીતી રીતે મેમરી ઉલ્લેખ છે, મેમરી મુક્ત કરીને,
પરંતુ મેમરી હું દેખીતી રીતે છું આ કાર્યક્રમ તળિયે આ લુપમાં મુક્ત કરીને?
એવું લાગે છે કે હું એક વ્યક્તિ નામ ખાલી છું
અને એક વ્યક્તિ ઘર, પરંતુ શા માટે છે કે જે છે?
>> આ તમામ અઠવાડિયા તારણ આપે છે કે તમે GetString નો ઉપયોગ કરી
અમે પ્રકારની દરેક તમારા કાર્યક્રમો એકમાં કરી રહ્યો એક ભૂલ પરિચય કરાવ્યો.
ડિઝાઇન ફાળવે મેમરી દ્વારા GetString કે જેથી તે તમે શબ્દમાળા પાછા આવી શકો છો,
જેમ ડેવિડ, અથવા, રોબ તમે અને પછી શું કરવું ગમે તમે શકો છો
તમારા કાર્યક્રમ છે કે જેઓ શબ્દમાળા કારણ કે અમે તમારા માટે મેમરી અનામત કર્યું છે સાથે.
આ સમસ્યા આ બધા સમય દરેક વખતે તમે GetString કહી છે
અમે, GetString ના લેખકો, ઓપરેટિંગ સિસ્ટમ કરવામાં પુછે છે
અમને આ શબ્દમાળા માટે RAM ની થોડી આપે છે.
અમને આ આગામી શબ્દમાળા માટે RAM ની થોડી આપો.
અમને આ આગામી શબ્દમાળા માટે કેટલાક વધુ RAM આપો.
તમે, પ્રોગ્રામર કરવાનું, ક્યારેય છે શું
છે અમને કે મેમરી પાછા આપ્યા,
તેથી આ કેટલાંક અઠવાડિયા માટે બધા જ કાર્યક્રમો તમે તેવા પરચૂરણ ખર્ચ કર્યો છે
કરી શું મેમરી લીપ કહેવામાં આવે છે જેમાં તેઓ ઉપયોગ ચાલુ રાખી
વધુ અને વધુ મેમરી દર વખતે તમે GetString કહી છે, અને તે લલિત છે.
અમે ઈરાદાપૂર્વક પ્રથમ સપ્તાહો કે નથી કારણ કે તે રસપ્રદ નથી
માટે જ્યાં શબ્દમાળા આવે છે ચિંતા કરવાની જરૂર નથી.
બધા તમે કરવા માંગો છો તે શબ્દ પર પાછા જાઓ જ્યારે વપરાશકર્તા તેને પ્રકારના સાઇન રોબ
>> પરંતુ આગળ વધવા આપણે હવે વધુ આ વિશે વ્યવહારદક્ષ મેળવવાનું શરૂ હોય છે.
કોઈપણ સમયે અમે મેમરીને ફાળવવા અમે વધુ સારી રીતે છેવટે તેને પાછા સોંપી.
અન્યથા તમારા Mac અથવા પીસી પર વાસ્તવિક વિશ્વમાં તમે ક્યારેક ક્યારેક અનુભવી હોય શકે છે
લક્ષણો છે કે જ્યાં તમારા કમ્પ્યુટર halt માટે ગ્રાઇન્ડીંગ છે છેવટે
અથવા મૂર્ખ સ્પિનિંગ બીચ બોલ માત્ર કમ્પ્યુટર પર કબજો છે
સમગ્ર ધ્યાન તમે અને વસ્તુઓ ન કરી શકો.
કે ભૂલો કોઈપણ સંખ્યાની દ્વારા સમજાવી શકાય છે, પરંતુ તે શક્ય બગ્સ વચ્ચે
છે વસ્તુઓ મેમરી લીક્સ કહેવાય જેમાં વ્યકિત સોફ્ટવેર કે ટુકડો લખ્યું હતું
તમે મુક્ત મેમરી માટે યાદ ન ઉપયોગ કરી રહ્યાં છો
કે તે અથવા તેણી ઓપરેટિંગ સિસ્ટમ માટે પૂછ્યું છે,
મદદથી નથી, GetString કારણ કે તે એક CS50 વાત છે, પરંતુ સમાન વિધેયો મદદથી
કે મેમરી માટે ઓપરેટિંગ સિસ્ટમ પૂછો.
જો તમે તેઓ અથવા પેચ અને તે મેમરી ખરેખર ક્યારેય પાછા
એક લક્ષણ છે કે હોઇ શકે છે કે જે કાર્યક્રમ ધીમો પડી જાય છે અને ધીમો પડે છે અને નીચે ધીમો પડી જાય છે
જ્યાં સુધી તમે મફત કૉલ યાદ કરે છે.
>> અમે પાછા આવવા જ્યારે શા માટે અને તમે મફત કૉલ કરશે પડશે,
દો પરંતુ સારા પગલા માટે જ આગળ વધો અને આ ચોક્કસ કાર્યક્રમ ચાલી પ્રયાસ કરો.
આ structs1 તરીકે ઓળખાતું હતું દાખલ કરો.
મને આગળ વધો અને structs1 રન, 123, ડેવિડ માથેર,
456, રોબ કિર્કલૅંડ, 789,
ટોમી માથેર, અને અમે માથેર માં ડેવિડ જુઓ, ટોમી માથેર માં.
આ થોડી સેનીટી ચેક કે કાર્યક્રમ કામ છે.
હવે, દુર્ભાગ્યે, આ કાર્યક્રમ થોડો કે નિરાશાજનક છે
હું કે બધા કામ કરી ન હતી, હું 9 વિવિધ શબ્દમાળાઓ માં લખ્યો દાખલ કરો, દબાવો,
તેને જણાવવામાં આવ્યું હતું જે માથેર હતો, હજુ સુધી ચોક્કસપણે હું જાણતો હતો જે માથેર પહેલેથી જ હતી કારણ કે હું તે લખ્યો.
તે ઓછામાં ઓછા સરસ પ્રયત્ન જો આ કાર્યક્રમ ડેટાબેઝ જેવા વધુ છે કરશે
અને તે ખરેખર યાદ હું શું લખેલ છે
તેથી હું આ વિદ્યાર્થી રેકોર્ડ ઇનપુટ માટે ફરી ક્યારેય હોય છે.
કદાચ તે registrarial સિસ્ટમ જેવું છે.
>> અમે આ કરવા માટે આ ફાઇલને ફાઈલ I / O, ઇનપુટ અને આઉટપુટ તરીકે ઓળખાય ટેકનીકની મદદથી કરી શકો છો,
કોઈપણ સમયે તમને ફાઈલો વાંચવા અથવા ફાઈલો લખવા માંગો છો કહેતા ખૂબ જ સામાન્ય રીત
તમે કાર્યો ચોક્કસ સમૂહ સાથે કરી શકો છો.
મને આગળ વધો અને આ ઉદાહરણ structs2.c ખોલો,
જે લગભગ સમાન હોય છે, પરંતુ આપણે જોઈ તે શું હવે કરે છે.
ફાઇલ ટોચ પર હું વિદ્યાર્થીઓ એક વર્ગ જાહેર.
હું પછી વપરાશકર્તા ઈનપુટ સાથે વર્ગ રચના કરો,
જેથી કોડ તે રેખાઓ બરાબર પહેલાં જેવી જ છે.
પછી જો હું નીચે સ્ક્રોલ અહીં હું છાપો દરેક વ્યક્તિ માથેર છે આપખુદ પહેલાં ગમે,
પરંતુ આ રસપ્રદ નવી લક્ષણ છે.
કોડ આ રેખાઓ નવા હોય, અને તેઓ કંઈક અહીં દાખલ,
FILE, બધા કેપ્સ, અને તે અહીં * તેમજ ધરાવે છે.
મને અહીં પર આ ખસેડવા માટે, અહીં ઉપર * છે.
>> આ કાર્ય અમે પહેલા જોઇ ન હોય, fopen,
પરંતુ તે ફાઇલ અર્થ છે ખુલ્લા છે, તેથી આ મારફતે ચાલો મલાઈહીન,
અને આ કંઈક અમે પાછા ભાવિ psets આવે પડશે છે,
પરંતુ આ વાક્ય અહીં અનિવાર્યપણે ડેટાબેઝ તરીકે ઓળખાતી ફાઈલ ખોલે છે,
અને તે ખાસ કરીને તે એવી રીતે કે તે શું કરી શકો છો ખુલે છે?
[અશ્રાવ્ય વિદ્યાર્થીઓ]
અધિકાર છે, તેથી ફક્ત "વાઇડ" નો અર્થ તે ઓપરેટિંગ સિસ્ટમ કહેવાની છે
એવી રીતે કે હું તેને લખી શકો છો આ ફાઈલ ખોલો.
હું તે વાંચી નથી માંગતા. હું હમણાં જ તે જોવા નથી માંગતા.
હું તેને બદલવા માટે અને સામગ્રી તે સંભવિત ઍડ કરવા માંગો છો,
અને ફાઈલ ડેટાબેઝ કહેવાય રહ્યું છે.
આ કંઈપણ કહી શકાય.
આ database.txt હોઈ શકે છે. આ db. હોઇ શકે છે.
આ foo જેવો શબ્દ હોય છે, પણ હું આપખુદ ફાઇલને ડેટાબેઝ નામ પસંદ કર્યું હતું.
આ થોડો સેનીટી ચેક કે અમે પાછળ સમય પર મહાન વિગતવાર આવે પડશે છે,
જો fp, ફાઈલ નિર્દેશક માટે સમાન NULL નથી તેનો અર્થ એ કે બધા સારી છે.
>> લાંબા વાર્તા ટૂંકી, fopen જેવા કાર્યો ક્યારેક નિષ્ફળ જાય છે.
કદાચ ફાઈલ અસ્તિત્વમાં નથી. કદાચ તમે ડિસ્ક જગ્યા નથી.
કદાચ તમે તે ફોલ્ડર માટે પરવાનગી નહિં હોય,
તેથી જો fopen નલ કંઈક આપે ખરાબ થયું.
તેનાથી વિપરીત, જો fopen નલ નહિં આપે તમામ સારી છે
અને હું આ ફાઇલ લખવા શરૂ કરી શકો છો.
અહીં એક નવી યુક્તિ છે.
આ માટે લૂપ કે ઉપર મારા વિદ્યાર્થીઓ દરેક વારો છે છે,
અને તેથી આપણે શું પહેલાં કર્યું છે જેવું જ દેખાય છે,
પરંતુ આ કાર્ય એક પિતરાઇ printf printf ફાઈલ માટે fprintf કહેવાય છે,
નોટિસ અને તે માત્ર 2 રીતે અલગ છે.
તે એક, પૃ બદલે એફ સાથે શરૂ થાય છે,
પરંતુ તે પછી તેના પ્રથમ દલીલ શું દેખીતી રીતે છે?
[વિદ્યાર્થીઓ] ફાઇલ. >> એ એક ફાઈલ છે.
આ fp કહેવાય વસ્તુ છે, કે જે અમે આખરે સિવાય પીંજવું ફાઈલ નિર્દેશક શું છે પડશે,
પરંતુ હવે માટે fp ફક્ત ફાઇલ કે હું ખોલી છે રજૂ કરે છે,
જેથી fprintf અહીં કહી રહ્યાં છે આ વપરાશકર્તા ફાઈલ ID ને છાપો, નહીં કે સ્ક્રીન છે.
આ વપરાશકર્તા ફાઈલ માટે નામ નથી, સ્ક્રીન પર છાપો,
ફાઇલ માટે છે, નહીં કે સ્ક્રીન પર, અને પછી અહીં નીચે, દેખીતી રીતે આ ઘર,
ફાઇલ બંધ કરો અને પછી નીચે મફત મેમરી અહીં.
>> આ સંસ્કરણ 2 અને 1 આવૃત્તિ વચ્ચે માત્ર એટલો જ તફાવત
fopen રજૂઆત અને * સાથે આ ફાઈલ છે
અને fprintf આ ખ્યાલ છે, તેથી આપણે જોઈ ઓવરને પરિણામ શું છે.
મને મારી ટર્મિનલ વિન્ડોમાં જાઓ.
મને structs2 ચલાવવા માટે, દાખલ કરો.
એવુ લાગે છે કે તમામ સારી છે. ચાલો structs2 પુનઃ ચલાવો.
123, ડેવિડ માથેર, 456, રોબ કિર્કલૅંડ,
789, ટોમી માથેર દાખલ કરો.
જેમ તે જ વર્ત્યા લાગે છે, પરંતુ જો હું હવે ls કરવું
નોટિસ ફાઈલ શું મારા તમામ કોડ વચ્ચે અહીં છે, ડેટાબેઝ,
તેથી આપણે કે, તે અંતે ડેટાબેઝના gedit, અને દેખાવ ખોલો.
તે ફાઈલ બંધારણો સેકસી નથી.
તે ખરેખર લાઇન દીઠ લાઇન દીઠ માહિતી લીટી એક ભાગ છે,
પરંતુ તમે તે છે, જે Excel અથવા CSV ફાઇલો ઉપયોગ અલ્પવિરામ કિંમતો અલગ
હું ચોક્કસપણે fprintf ઉપયોગ કરી હોય તેના બદલે કદાચ આ કંઈક કરવું
જેથી હું ખરેખર એક એક્સેલ ફાઈલ સમકક્ષ બનાવી શક્યા
, ફક્ત નવી પંક્તિઓ નથી અલ્પવિરામથી અલગ વસ્તુઓ છે.
>> આ કિસ્સામાં જો હું તેની જગ્યાએ બદલે અલ્પવિરામ નવી પંક્તિઓ ઉપયોગ કર્યો હતો
હું શાબ્દિક Excel માં આ ડેટાબેઝ ફાઈલ ખોલવા માટે કરી શકે છે જો હું તેની જગ્યાએ કરવામાં આ જેવા જુઓ.
ટૂંકમાં, હવે આપણે માટે એક ફાઈલો લખવા માટે પાવર ધરાવે છે
આપણે હવે સતત માહિતી શરૂ કરી શકો છો, તે ડિસ્ક પર આસપાસ રાખવા
તેથી અમે માહિતી આસપાસ ફરીથી અને ફરીથી રાખી શકો છો.
અન્ય વસ્તુઓ છે કે જે હવે થોડી વધુ પરિચિત એક દંપતી નોટિસ.
આ સી ફાઈલ ટોચ પર અમે typedef છે
કારણ કે અમે એક માહિતી પ્રકારની છે કે જે શબ્દ પ્રતિનિધિત્વ બનાવવા માગતા હતા,
જેથી આ પ્રકારની શબ્દ કહેવાય છે, અને અંદર આ માળખું
તે થોડો પારખુ હવે છે.
એક શબ્દ દેખીતી રીતે એક ઍરેની શા બનેલો છે?
માત્ર એક તર્ક શબ્દ શું છે?
>> તે અક્ષરો ઝાકઝમાળ છે.
તે અક્ષરો ક્રમ પાછળ છે માટે બેકઅપ બેક.
બધા કેપ્સ અક્ષરોને માટે પ્રયત્ન કરીએ છીએ આપખુદ કહેવું થાય છે મહત્તમ લંબાઈ
શબ્દકોષમાં કે અમે ભાંખોડિયાંભર થઈને માટે ઉપયોગ કરી રહ્યા છો કોઈ પણ શબ્દ.
હું +1 કરો શા માટે છે?
આ નલ પાત્ર.
યાદ છે જ્યારે અમે Bananagrams ઉદાહરણ કર્યું અમે ખાસ કિંમત જરૂરી
શબ્દ ઓવરને અંતે ક્રમમાં ટ્રેક રાખવા માટે
જ્યાં શબ્દો ખરેખર અંત એક તરીકે, અને સમસ્યા સેટ સ્પષ્ટીકરણ કહે છે
અહીં અમે આપેલ શબ્દ સાથે બુલિયન કિંમત સાંકળી રહ્યા છીએ,
એક ફ્લેગ છે, તેથી વાત સાચી કે ખોટી.
શું તમે આ શબ્દ પહેલાથી જ જોવા મળે છે, કારણ કે અમે ખ્યાલ
અમે ખરેખર યાદ એક રસ્તો જરૂર જ નથી કે કયા શબ્દ ભાંખોડિયાંભર થઈને છે
પરંતુ કે તમે નથી, માનવ, તે જાણવા મળ્યું છે
જેથી જો તમે શોધવા આમ શબ્દ "ધી" તમે હમણાં જ નથી ટાઈપ કરી શકો છો દાખલ કરવા માટે, દાખલ કરવા માટે, દાખલ કરો,
અને 3 પોઇન્ટ, 3 પોઇન્ટ, 3 પોઇન્ટ, 3 પોઇન્ટ મળે છે.
અમે એક bool સુયોજિત કરીને કે શબ્દ બ્લેકયાદી કરવાનો પ્રયત્ન કરવા માંગો છો
સાચું જો તમે પહેલાથી જ તે મળ્યાં છે, અને જેથી શા માટે આપણે છે
આ માળખામાં સમાઇ જાય છે.
>> હવે, નીચે અહીં ભાંખોડિયાંભર થઈને ત્યાં આ અન્ય શબ્દકોશ કહેવાય સ્ટ્રક્ટ છે.
અહીં ગેરહાજર શબ્દ છે typedef કારણ કે આ કિસ્સામાં
અમે એક શબ્દકોશ વિચારને પ્રાવૃત જરૂરી હોય,
અને એક શબ્દકોષના શબ્દો સંપૂર્ણ સમૂહ સમાવે છે,
કારણ કે આ એરે દ્વારા સૂચિત કરે છે, અને તે શબ્દોની કેટલી છે?
વેલ, ગમે આ ચલ કહેવાય કદ કહે છે.
પરંતુ અમે એક શબ્દકોશ જરૂર છે.
અમે માહિતી શબ્દકોષ કહેવાય પ્રકાર કરવાની જરૂર નથી.
અમે હમણાં જ એક તેમને જરૂર છે, તેથી તેને સી માં વળે
કે જો તમે typedef નથી કહેવું હોય, તો તમે હમણાં જ સ્ટ્રક્ટ કહે, પછી સર્પાકાર કૌંસ અંદર
તમે તમારા ચલો મૂકી, પછી તમે નામ મૂકે છે.
આ એક ચલ કહેવાય શબ્દકોશ જાહેર છે
કે આ જેવો દેખાય છે.
તેનાથી વિપરીત, આ રેખાઓ એક ફરીથી વાપરી શકાય માહિતી શબ્દ કહેવાય માળખું બનાવી રહ્યા
કે તમે બહુવિધ નકલો બનાવવા માટે, જેમ અમે બનાવી શકાય
વિદ્યાર્થીઓ બહુવિધ નકલો.
>> આ શું આખરે નથી અમને કરવા માટે પરવાનગી આપે છે?
મને પાછા જાઓ માં, ચાલો, કહો સરળ વખત એક સરળ ઉદાહરણ તરીકે,
દો અને મને અપ ખોલવા માટે, ચાલો, કહો compare1.c.
હાથ પર અહીં સમસ્યા પર પાછા છાલ ખરેખર છે
એક શબ્દમાળાને સ્તર અને બંધ આ તાલીમ વ્હીલ્સ લેતી શરૂ
કારણ કે તે છે કે જે શબ્દમાળા આ બધા સમય વળે
છે કે અમે 1 ખરેખર સપ્તાહમાં ફક્ત એક ઉપનામ વચન આપ્યું,
સમાનાર્થી શબ્દ કંઈક છે જે થોડી વધુ ભેદી લાગે માટે CS50 પુસ્તકાલય માંથી,
ઘરનાં પરચૂરણ કામો *, અને અમે આ તારો જોઇ છે તે પહેલાં.
અમે તેને ફાઇલો સંદર્ભમાં થયો છે.
>> ચાલો હવે જોવા શા માટે અમે કેટલાક સમય માટે થઈ આ વિગત હવે છુપાવી રહ્યું છે.
અહીં compare1.c તરીકે ઓળખાતી ફાઈલ છે,
અને તે દેખીતી રીતે 2 શબ્દમાળાઓ માટે વપરાશકર્તા પૂછે છે, અને ઓ ટી,
અને પછી તે 26 લીટી માં સમાનતા માટે તે શબ્દમાળાઓ તુલના કરવાનો પ્રયત્ન કરે છે,
અને જો તેઓ સમાન તે કહે કરશો, "તમે આ જ વાત લખ્યો,"
અને જો તેઓ સમાન નથી તે કહે છે, "તમે અલગ વસ્તુઓ લખ્યો."
મને આગળ વધો અને આ કાર્યક્રમ ચલાવો.
મને મારી સ્રોત ડિરેક્ટરીમાં જાઓ, compare1 બનાવે છે. તે ઠીક કમ્પાઇલ કરેલ છે.
મને compare1 ચલાવો.
હું ઝૂમ, દાખલ કરશો.
કંઈક કહો. હેલો.
હું કંઈક ફરીથી કહેવું પડશે. હેલો.
હું ચોક્કસપણે અલગ કામ નહીં લખો નહોતો.
>> મને આ ફરીથી પ્રયાસ કરો. આવજો.
વિવિધ ચોકકસ તેથી, શું થઈ રહ્યું છે તે અહીં?
વેલ, શું ખરેખર 26 વાક્ય છે સરખામણીમાં આવી રહી છે?
[અશ્રાવ્ય વિદ્યાર્થીઓ]
હા, તેથી તે તારણ છે કે જે શબ્દમાળા માહિતી પ્રકાર, સફેદ જૂઠ પ્રકારની છે.
એક શબ્દમાળા ચાર રચે છે * હોય છે, પરંતુ એક કોલસો બનાવો * શું છે?
એક કોલસો બનાવો *, કારણ કે તેઓ કહે છે, એક નિર્દેશક છે,
અને નિર્દેશક અસરકારક રીતે એક સરનામું છે,
મેમરીમાં રકમ સ્થાન, અને જો તમે એક શબ્દ માં હેલો જેવા લખ્યો છે થાય છે,
શબ્દમાળાઓ ભૂતકાળની ચર્ચાઓ પરથી યાદ
આ શબ્દ જેવું છે હેલો.
યાદ રાખો કે હેલ્લો જેવો શબ્દ રજૂ કરી શકાય
આ જેવા પાત્રો એક એરે તરીકે
અને પછી ઓવરને અંતે વિશિષ્ટ અક્ષર સાથે નલ અક્ષર કહેવાય છે,
આ \ સૂચવે છે.
શું ખરેખર એક શબ્દમાળા છે?
નોંધ કરો કે આ મેમરી બહુવિધ હિસ્સામાં છે,
અને હકીકતમાં, તે ઓવરને માત્ર એક વાર તમે સંપૂર્ણ શબ્દમાળા મારફતે જોવા ઓળખાય છે
ખાસ નલ પાત્ર શોધી.
પરંતુ જો આ મારા કમ્પ્યુટર મેમરી માંથી મેમરી એક ભાગ છે,
ચાલો આપખુદ કહે છે કે આ શબ્દમાળાને ફક્ત નસીબદાર મળ્યું,
અને તે મારા કોમ્પ્યુટર RAM ના ખૂબ શરૂઆતમાં મૂકી મળ્યો છે.
આ 0 બાઇટ, 1, 2, 3, 4, 5, 6 છે ...
>> જ્યારે હું GetString કંઈક કહેવું અને હું શબ્દમાળા ઓ = GetString કરવું
શું ખરેખર ફર્યા છે કરવામાં આવી રહી છે?
આ છેલ્લા કેટલાક અઠવાડિયા માટે, શું ખરેખર s માં સંગ્રહાયેલ છે કરવામાં આવી રહી છે
સે દીઠ આ શબ્દમાળાને નથી, પરંતુ આ કિસ્સામાં છે સંગ્રહિત કરવામાં આવી રહી શું છે
GetString ખરેખર શું કરે છે, કારણ કે નંબર 0
છે તેને ભૌતિક શબ્દમાળા નહિં આપે.
પણ ખરેખર પ્રત્યયાત્મક અર્થમાં નથી.
તે શું કરે છે વળતર એક નંબર છે.
નંબર છે કે જે મેમરીમાં હેલો સરનામું છે,
અને શબ્દમાળા ઓ પછી, જો આ સ્તર અમે પાછા છાલ, શબ્દમાળા ખરેખર અસ્તિત્વમાં નથી.
તે ફક્ત CS50 પુસ્તકાલય એક સરળીકરણ છે.
>> આ ખરેખર કામની પાળી * કહેવાય કંઈક છે.
ચાર અર્થમાં બનાવે છે કારણ કે તે એક શબ્દ હેલો, જેમ છે?
વેલ, તે અક્ષરો એક શ્રેણી છે, અક્ષરો શ્રેણી છે.
ચાર * એક પાત્રની સરનામા અર્થ થાય છે,
તેથી તે શું શબ્દમાળા પાછા અર્થ છે?
એક સરસ, શબ્દમાળા પરત સરળ રસ્તો
બદલે છે આઉટ આકૃતિ હું કેવી રીતે 5 કે 6 વિવિધ બાઇટ્સ પર પાછા પ્રયાસ
દો મને બાઇટ જે સરનામા પર પાછા?
પ્રથમ એક.
અન્ય શબ્દોમાં કહીએ દો, મને તમે મેમરીમાં પાત્રની સરનામું આપો.
કે ઘરનાં પરચૂરણ કામો * શું દર્શાવે છે, એક મેમરીમાં જ અક્ષર ની સરનામું.
કે ચલ ઓ કૉલ કરો.
S માં સ્ટોર ચોક્કસ સરનામું, કે જે હું આપખુદ જણાવ્યું હતું 0 છે,
ફક્ત વસ્તુઓ સરળ રાખવા માટે છે, પરંતુ હકીકતમાં તે સામાન્ય રીતે મોટા નંબર છે.
>> એક મિનિટ રાહ જુઓ.
જો તમે માત્ર મને પ્રથમ અક્ષર ની સરનામા આપીને કરી રહ્યાં છો, હું કેવી રીતે જાણી શકું સરનામું શું છે
બીજા પાત્ર, ત્રીજા, ચોથા અને પાંચમા?
[અશ્રાવ્ય વિદ્યાર્થીઓ]
તમે માત્ર ખબર જ્યાં શબ્દમાળા ઓવરને આ સરળ યુક્તિ રીતે છે,
તેથી જ્યારે તમે કંઈક જેવા printf વાપરવા માટે, શું printf શાબ્દિક પોતાની દલીલ તરીકે લે છે,
જણાવ્યું હતું કે અમે આ% s પ્લેસહોલ્ડર વાપરવા માટે, અને પછી તમે પાસ
આ ચલ છે કે જે શબ્દમાળા સ્ટોર છે.
તમે ખરેખર પસાર કરી રહ્યાં છો શું કે જેઓ શબ્દમાળા પ્રથમ અક્ષર સરનામું છે.
Printf પછી લૂપ અથવા પાશ જ્યારે કે સરનામા પ્રાપ્ત પર વાપરે છે,
દાખલા તરીકે, 0, જેથી દો મને હવે કરવા માટે,
printf ("% s \ n" ઓ);
જ્યારે હું કૉલ printf ("% s \ n" ઓ); હું શું ખરેખર સાથે છું printf પૂરી
s માં પ્રથમ અક્ષર ની સરનામું, કે જે આ મનસ્વી કિસ્સામાં એચ છે
>> Printf કેવી રીતે ખબર નથી ચોકકસ શું સ્ક્રીન પર પ્રદર્શિત કરવા માટે?
જે વ્યક્તિ અમલમાં printf એક વખતે કે લૂપ માટે લૂપ એક અમલમાં
કહે છે કે, આ અક્ષર વિશિષ્ટ નલ અક્ષર જેટલી?
જો નહિં, તો તે છાપો. આ કેવી રીતે એક વિશે શું?
જો તે છાપી નહિં, તો તે છાપો, તે છાપો, તે છાપો.
ઓહ, આ એક વિશિષ્ટ છે. છાપકામ રોકો અને વપરાશકર્તા આવો.
અને જે શબ્દશઃ છે બધા કે હૂડ નીચે કરવામાં આવી રહ્યું છે તે,
અને તે એક વર્ગ પ્રથમ દિવસે પાચન ઘણું,
પરંતુ હવે તે ખરેખર સમજ બધું બિલ્ડિંગ બ્લોક છે
કે અમારી કોમ્પ્યુટર મેમરી ની અંદર પર ચાલી રહ્યું છે,
અને છેવટે અમે આ થોડી મદદ સાથે અલગ પીંજવું પડશે
અમારા મિત્રો પાસેથી સ્ટેનફોર્ડ ખાતે.
>> સ્ટેનફોર્ડ ખાતે પ્રોફેસર નિક Parlante આ અદ્ભુત વિડિઓ ક્રમ કર્યું છે
વિવિધ ભાષાઓ રજૂઆત તમામ પ્રકારના
આ થોડો Claymation અક્ષર Binky.
વૉઇસ તમે છો થોડા બીજા પૂર્વાવલોકન ઝલક માં સાંભળવા
એક સ્ટેનફોર્ડ પ્રોફેસર હોય છે, અને તમે રહ્યાં છો
હવે આ અધિકાર માત્ર 5 કે 6 સેકન્ડો
પરંતુ આ નોંધ છે કે જેના પર આજે આપણે એવા તારણ પર પડશે છે
અને બુધવારે શરૂ કરો.
હું તમને Binky, પૂર્વાવલોકન સાથે પોઇન્ટર ફન આપે છે.
[♪ સંગીત ♪] [પ્રોફેસર Parlante] હાય, Binky.
અપ વેક. તે નિર્દેશક આનંદ માટે સમય છે.
[Binky] કે શું છે? પોઇન્ટર વિશે જાણો!
ઓહ, એક જાતની મીઠાઈ!
>> અમે તમને બુધવાર પર જોશે.
[CS50.TV]