રોબ બોડેન: હાય, હું, રોબ બોડેન છું અને માતાનો quiz0 વિશે વાત કરીએ. તેથી, પ્રથમ પ્રશ્ન. આ પ્રશ્ન છે કે જ્યાં જો તમે નંબર કોડ માટે જરૂરી બાઈનરી બલ્બ 127. તમે ઇચ્છતા હોય, તો તમે કરી શકે છે નિયમિત રૂપાંતર કરવું દશાંશ દ્વિસંગી, bi-- અથવા. પરંતુ તે કદાચ રહ્યું છે સમય ઘણો લે છે. હું કે તમે બહાર આકૃતિ શકે છે, અર્થ, ઠીક છે, 1, ત્યાં 2, ત્યાં છે 4, 8, ત્યાં છે. સરળ માર્ગ, 127 128 બાદ એક છે. કે leftmost લાઇટ બલ્બ 128-બીટ છે. તેથી 127 ફક્ત બધા ખરેખર છે અન્ય લાઇટ બલ્બ, કે leftmost છે કારણ કે પ્રકાશ ગોળો બાદ 1. કે જે પ્રશ્ન માટે છે. પ્રશ્ન એક. 3 બિટ્સ સાથે, તેથી તમે આ કરી શકો છો 8 અલગ મૂલ્યો પ્રતિનિધિત્વ કરે છે. તો શા માટે સૌથી બિન નકારાત્મક 7 તમે પ્રતિનિધિત્વ કરી શકે છે દશાંશ પૂર્ણાંક? વેલ, જો આપણે માત્ર આ કરી શકો છો 8 અલગ મૂલ્યો પ્રતિનિધિત્વ કરે છે, પછી આપણે શું કરવા જઈ રહ્યાં છો રજૂ 7 0 હોય છે. 0 કિંમતો લે છે. પ્રશ્ન બે. એ બિટ્સ સાથે, કેટલા અલગ મૂલ્યો તમે પ્રતિનિધિત્વ કરી શકે છે? તેથી, એ બિટ્સ સાથે, તમે 2 પાસે દરેક બીટ માટે શક્ય કિંમતો છે. તેથી અમે 2 શક્ય કિંમતો માટે છે પ્રથમ બીટ, 2 શક્ય કિંમતો છે બીજા માટે, 2 ત્રીજા શક્ય છે. અને તેથી કે 2 ગુણ્યા 2 ગુણ્યા 2, અને આખરે જવાબ n એ માટે 2 છે. પ્રશ્ન ત્રણ. દ્વિસંગી 0x50 શું છે? તેથી હેક્સાડેસિમલ ખૂબ જ છે કે જે યાદ રાખો દ્વિસંગી સરળ રૂપાંતર. અહીં, અમે માત્ર જોવા માટે જરૂર છે 5 અને સ્વતંત્ર 0. તેથી દ્વિસંગી માં 5 શું છે? 0101, કે જે 1 બીટ અને 4 બીટ છે. બાઈનરી માં 0 શું છે? મુશ્કેલ નથી. 0000. તેથી જ તેમને મૂકવા સાથે મળીને, અને કે દ્વિસંગી સંપૂર્ણ નંબર છે. 01010000. જો તમે ઇચ્છતા હોય અને તમે કરી શકે છે કે leftmost શૂન્ય બોલ લે છે. તે અપ્રસ્તુત છે. તેથી પછી વૈકલ્પિક રીતે, અક્ષાંશ 0x50 શું છે? તમે ઇચ્છતા હોય તો તમે છો, તો તમે could-- બાઈનરી સાથે વધુ આરામદાયક, જો તમે કે દ્વિસંગી જવાબ લઇ શકે છે અને દશાંશ ને માં કે રૂપાંતરિત. અથવા આપણે માત્ર યાદ કરી શકે છે કે હેક્સાડેસિમલ. 0 કે તેથી 0-મી સ્થળ છે, અને 5 પ્રથમ સ્થાને 16 છે. તેથી અહીં, અમે 5 વખત 16 પ્રથમ, શૂન્ય વત્તા 0 વખત 16, 80 છે. અને તમે જોવામાં જો પ્રશ્ન શીર્ષક, તે એક પ્રકારની હતી, જે સીએસ 80 હતો, આ સમસ્યા માટે જવાબ માટે સંકેત. પ્રશ્ન પાંચ. અમે હોય છે, જે આ સ્ક્રેચ સ્ક્રિપ્ટ છે 4 વખત મગફળીના માખણ જેલી પુનરાવર્તન. તેથી અમે કેવી રીતે સી કોડ કે હવે શું કરવું? ઠીક છે, આપણે અહીં બોલ્ડ માં ભાગ છે તમે અમલ કરવા માટે હતી માત્ર ભાગ છે. તેથી અમે 4 રહ્યાં છે કે 4 લૂપ છે વખત printf, આઈએનજી મગફળીના માખણ જેલી, નવી લાઇન સાથે સમસ્યા માટે પૂછે છે. પ્રશ્ન છ, અન્ય સ્ક્રેચ સમસ્યા. અમે એક કાયમ લૂપ છે કે જુઓ. અમે ચલ હું કહી રહ્યાં છે અને પછી હું 1 દ્વારા incrementing. હવે અમે સી હોય છે કરવા માંગો છો અમે આ કરી શકે છે ઘણી રીતે. અહીં અમે કોડ થયું જ્યારે (સત્ય) તરીકે કાયમ લૂપ. તેથી અમે ફક્ત, ચલ હું જાહેર જેમ અમે સ્ક્રેચ માં હું ચલ હતી. હું ચલ જાહેર, અને કાયમ માટે (સત્ય) છે, જ્યારે અમે ચલ હું કહે છે. Printf% સિવાય હું અથવા તમે% d ઉપયોગ કર્યા કરી શકે છે તેથી. અમે શું કે ચલ કહે છે, અને પછી તેને વધારતી, હું ++. પ્રશ્ન સાત. હવે અમે ખૂબ જ કંઈક કરવા માંગો છો, મારિયો ડોટ કો સમસ્યા એક સુયોજિત કરો. અમે આ hashtags પ્રિન્ટ કરવા માંગો છો, અમે પાંચ પ્રિન્ટ કરવા માંગો છો આ હેશો ત્રણ લંબચોરસ દ્વારા. તેથી અમે કેવી રીતે તે કરવા જઇ રહ્યા છીએ? વેલ, અમે તમને એક સંપૂર્ણ આપે છે કોડ ઓફ ટોળું, અને તમે માત્ર પ્રિન્ટ ગ્રિડ કાર્ય ભરવા માટે હોય છે. તેથી શું PrintGrid આના જેવો નથી? વેલ, જો તમે ભૂતકાળમાં છો પહોળાઈ અને ઊંચાઈ. તેથી અમે એક બાહ્ય 4 લૂપ છે, કે જે રહ્યાં છે આ પંક્તિઓ તમામ અમે પ્રિન્ટ માંગો છો કે ગ્રીડ. તો પછી અમે આંતર પુનરાવર્તિત 4 લૂપ છે કે દરેક સ્તંભ પર છાપકામ છે. તેથી દરેક પંક્તિ માટે, અમે છાપો દરેક કૉલમ, એક હેશ. પછી પંક્તિ ઓવરને અંતે અમે છાપો એક એક નવી લીટી આગામી પંક્તિ પર જાઓ. અને તે સમગ્ર ગ્રીડ માટે છે. પ્રશ્ન આઠ. PrintGrid જેમ કાર્ય કહેવાય છે પરત એક બાજુ અસર કરી નથી, પરંતુ કિંમત. તફાવત સમજાવો. તેથી આ તમે યાદ પર આધાર રાખે છે એક બાજુ અસર શું છે. વેલ, વળતર કિંમત અમે PrintGrid નથી ખબર કારણ કે વળતર કિંમત હોય છે અહીં તે રદબાતલ કહે છે. રદબાતલ આપે છે કે તેથી કંઈપણ ખરેખર કંઈપણ નહિં આપે. તેથી આડ અસર શું છે? વેલ, એક બાજુ અસર છે આનાથી સૉર્ટ કરો ચાલુ રહે છે કે જે કંઈપણ કાર્ય અંત પછી છે, કે જે હમણાં જ પાછા ફર્યા ન હતા અને તે ફક્ત ઇનપુટ્સ ન હતી. તેથી, ઉદાહરણ તરીકે, અમે કદાચ વૈશ્વિક ચલ બદલો. તે એક બાજુ અસર હશે. આ ચોક્કસ કિસ્સામાં, ખૂબ જ મહત્વપૂર્ણ બાજુ અસર સ્ક્રીન પર છાપવા છે. જેથી એક બાજુ અસર છે કે PrintGrid છે. અમે સ્ક્રીન પર આ વસ્તુઓ છાપી. અને તમે વિચાર કરી શકો છો એક બાજુ અસર તરીકે, કે કંઈક છે, કારણ કે આ કાર્ય પૂરું થાય તે પછી જ રહે છે. તે દાયરાની બહાર કંઈક છે આ કાર્ય કે આખરે બદલાઈ રહી છે, સ્ક્રીન સમાવિષ્ટો. પ્રશ્ન નવ. , નીચે કાર્યક્રમ ધ્યાનમાં વાક્ય જે નંબરો માટે ઉમેરાઈ ગયેલ છે ચર્ચા ખાતર. આ કાર્યક્રમ તેથી અમે ફક્ત છે સ્ટોર, GetString કૉલ આ ચલ ઓ માં, અને પછી કે ચલ ઓ પ્રિન્ટ કરે છે. ઠીક છે. એક લીટી હાજર છે શા તેથી સમજાવે છે. સમાવેશ થાય છે CS50 ટપકું ક. શા માટે અમે CS50 ટપકું ક સમાવેશ કરવાની જરૂર છે? વેલ અમે કૉલ કરી રહ્યાં છો કાર્ય GetString, અને GetString વ્યાખ્યાયિત કરવામાં આવે છે આ CS50 પુસ્તકાલય માં. અમે ન હતી તેથી જો સમાવેશ થાય છે CS50 કોઈ- h, અમે તે ગર્ભિત ઘોષણા મળી જશે GetString કાર્ય ભૂલ કમ્પાઇલર છે. તેથી અમે પુસ્તકાલય સમાવેશ કરવાની જરૂર છે અમે હેડર ફાઈલ સમાવેશ થાય છે કરવાની જરૂર છે, અથવા અન્ય કમ્પાઇલર ન કરશે GetString અસ્તિત્વમાં છે કે જે ઓળખી કાઢે છે. લીટી બે હાજર છે, એ સમજાવો. તેથી પ્રમાણભૂત IO ડોટ એચ. તે બરાબર એ જ છે અગાઉના સમસ્યા એ છે કે, ને બદલે સાથે વ્યવહાર સિવાય GetString, અમે printf વિશે વાત કરી રહ્યાં છો. અમે જરૂર નથી કહી હતી, તેથી જો પ્રમાણભૂત IO ડોટ એચ સમાવેશ થાય છે, પછી અમે શકશે નહીં printf કાર્ય વાપરવા માટે, કમ્પાઇલર કારણ કે તે વિશે ખબર નથી શકે છે. Why-- શું મહત્ત્વ છે વાક્ય ચાર રદબાતલ? તેથી અહીં અમે પૂર્ણાંક મુખ્ય (રદબાતલ) હોય છે. તે માત્ર છે કે અમે કહેતા છે કોઈપણ આદેશ વાક્ય ન મળતો હોય, મુખ્ય દલીલો. અમે પૂર્ણાંક કહી શકે છે કે જે યાદ રાખો મુખ્ય પૂર્ણાંક argc શબ્દમાળા argv કૌંસ. તેથી અહીં અમે ફક્ત અમે કહી રદબાતલ કહેવું આદેશ વાક્ય દલીલો અવગણે છે. બરાબર, મેમરી માટે આદર સાથે, સમજાવો લીટી માં શું છે GetString છ વળતર. GetString એક બ્લોક પરત આવે છે મેમરી, અક્ષરો ઝાકઝમાળ છે. તે ખરેખર એક પરત પ્રથમ અક્ષર નિર્દેશક. એક શબ્દમાળા ચાર રચે સ્ટાર છે કે યાદ રાખો. જેથી તે પ્રથમ એક નિર્દેશક છે પાત્ર ગમે શબ્દમાળા છે વપરાશકર્તા કીબોર્ડ પર દાખલ છે. અને તે મેમરી malloced થાય છે, તેથી તે મેમરીમાં ઢગલો છે. પ્રશ્ન 13. નીચે કાર્યક્રમ નક્કી કરો. તેથી આ તમામ કાર્યક્રમ કરી રહ્યા છે 1 10 દ્વારા વિભાજીત છે printf-ing છે. તેથી જ્યારે સંકલિત અને ચલાવવામાં, આ કાર્યક્રમ આઉટપુટ 0.0 છે, તેમ છતાં 1 10 દ્વારા વિભાજીત 0.1 છે. તેથી શા માટે તે 0.0 છે? વેલ, આ છે કારણ કે પૂર્ણાંક ડિવિઝન. 1 તેથી પૂર્ણાંક 10 પૂર્ણાંક સંખ્યા છે, હોય છે. 1 તેથી 10, બધું દ્વારા વિભાજી પૂર્ણાંકો તરીકે ગણવામાં આવે છે, અને સી, અમે પૂર્ણાંક ડિવિઝન કરી ત્યારે, અમે કોઈપણ બાદ ચિહ્ન કાઢી. તેથી 10 દ્વારા 1 છે વિભાજિત 0, અને પછી અમે પ્રયાસ કરી રહ્યાં છો જેથી એક ફ્લોટ તરીકે તે છાપવા માટે એક ફ્લોટ તરીકે મુદ્રિત શૂન્ય 0.0 છે. અમે 0.0 વિચાર શા માટે અને તે છે. નીચે કાર્યક્રમ નક્કી કરો. હવે અમે 0.1 છાપવા કરી રહ્યાં છો. તેથી કોઈ પૂર્ણાંક ડિવિઝન, અમે ફક્ત 0.1 છાપવા કરી રહ્યાં છો પરંતુ અમે તે છાપવા કરી રહ્યાં છો 28 દશાંશ સ્થળ છે. અને અમે આ 0,1000, સંપૂર્ણ સમૂહ છે zeros છે, 5 5 5, મૂર્ખામી ભરેલી વાહિયાત વાત મૂર્ખામી ભરેલી વાહિયાત વાત મૂર્ખામી ભરેલી વાહિયાત વાત. શા માટે તે કરે તેથી અહીં પ્રશ્ન એ છે કે તેની જગ્યાએ બરાબર 0.1 છે, કે જે છાપી? તેથી અહીં કારણ છે હવે બિંદુ અશુદ્ધિ તરતી. એક ફ્લોટ માત્ર 32 બિટ્સ છે કે જે યાદ રાખો. તેથી અમે માત્ર એક મર્યાદિત સંખ્યા પ્રતિનિધિત્વ કરી શકે છે તે 32 અપૂર્ણાંક બિંદુ કિંમતો બિટ્સ. વેલ આખરે અનંત છે ઘણા અપૂર્ણાંક બિંદુ કિંમતો, અને ફ્લોટિંગ અનંત ઘણી છે 0 અને 1 વચ્ચે બિંદુ કિંમતો, અને અમે ચોક્કસપણે માટે સમર્થ છો તે કરતાં પણ વધુ મૂલ્યો પ્રતિનિધિત્વ કરે છે. તેથી અમે બલિદાન બનાવવા સૌથી મૂલ્યો પ્રતિનિધિત્વ કરવા માટે સક્ષમ હશે. તેથી 0.1 જેવી મૂલ્ય છે, દેખીતી રીતે અમે તે બરાબર કરી શકતી નથી. તેથી તેના બદલે 0.1 રજૂ આપણે શું કરવું શ્રેષ્ઠ અમે આ 0.100000 5 5 પ્રતિનિધિત્વ કરી શકે છે 5. અને તે ખૂબ નજીક છે, પરંતુ કાર્યક્રમો ઘણો માટે તમે ચિંતા કરવાની જરૂર બિંદુ અશુદ્ધિ તરતી, અમે હમણાં જ નથી પ્રતિનિધિત્વ કરી શકે છે, કારણ કે તમામ પોઈન્ટ બરાબર તરતી. પ્રશ્ન 15. નીચેના કોડ નક્કી કરો. અમે ફક્ત 1 વત્તા 1 છાપવા કરી રહ્યાં છો. તેથી અહીં કોઈ યુક્તિ છે. 1 વત્તા 1 થી 2 મૂલ્યાંકન અને પછી અમે તે છાપવા કરી રહ્યાં છો. આ માત્ર 2 છાપે છે. પ્રશ્ન 16. હવે અમે અક્ષર છાપવા કરી રહ્યાં છો 1 વત્તા પાત્ર 1. તેથી શા માટે આ નથી આ જ વસ્તુ છાપી? વેલ પાત્ર 1 વત્તા અક્ષર 1, પાત્ર 1 ASCII કિંમત 49 છે. તેથી આ ખરેખર 49 કહીને વત્તા 49 છે, અને આખરે આ 98 છાપી રહ્યું છે. તેથી આ 2 છાપી નથી. પ્રશ્ન 17. અમલીકરણ પૂર્ણ કરો એવી રીતે નીચે ના વિચિત્ર કાર્ય જો સાચું આપે છે એ પણ છે કે જો એ વિચિત્ર અને ખોટું છે. આ એક મહાન હેતુ છે મોડ ઓપરેટર છે. તેથી અમે અમારી દલીલ એ લે છે, એ મોડ 2 તેમજ 1, બરાબર હોય તો, તે n વિભાજિત અર્થ એ થાય કે 2 દ્વારા બાકીની હતી. N 2 દ્વારા વિભાજી, તો બાકીની હતું કે એ વિચિત્ર છે, તેથી અમે સાચું પાછા આવી છે. બાકી અમે ખોટા આવો. તમે પણ 2 સમકક્ષ મોડ એ કરી શકે છે શૂન્ય, બીજું, ખોટા પાછા સાચું આવો. નીચે ફરી યાદ આવવું કાર્ય માને છે. N છે, તો તેથી કરતા ઓછો અથવા 1 પરત, 1 માટે સમાન, એ ઓછા 1 એફ બીજું પરત n વખત. તેથી આ કાર્ય શું છે? વેલ, આ માત્ર છે કારણદર્શી કાર્ય. આ સરસ રીતે રજૂ થાય છે n કારણદર્શી તરીકે. તેથી હવે 19 પ્રશ્ન છે, અમે માંગો છો આ યાદ આવવું કાર્ય લે છે. અમે તેને પુનરાવર્તન કરવા માંગો છો. તેથી અમે કેવી રીતે કે શું કરવું? વેલ સ્ટાફ માટે ઉકેલ છે, અને ફરીથી ત્યાં છે તમે આ કરી શકે છે ઘણી રીતે અમે આ પૂર્ણાંક ઉત્પાદન સાથે શરૂ 1 સમકક્ષ હોય છે. અને આ સમગ્ર લૂપ માટે, અમે જઈ રહ્યાં છો, આખરે ઉત્પાદન ગુણાકાર કરવા માટે સંપૂર્ણ કારણદર્શી સાથે અંત. પૂર્ણાંક માટે હું 2 સમકક્ષ તેથી, હું કરતાં ઓછા અથવા n સમાન, હું ++. હું 2 સમકક્ષ શા માટે તમે આશ્ચર્ય થઈ શકે છે. વેલ, અમે અહીં યાદ રાખો કે અમારા આધાર કેસ યોગ્ય છે તેની ખાતરી કરો. એ કરતા ઓછો અથવા સમાન છે તેથી જો 1, અમે ફક્ત 1 પરત કરી રહ્યાં છો. હું 2 સમકક્ષ અહીં પર તેથી, અમે શરૂ કરો. વેલ, હું 1, હતા તો પછી કરવું અથવા એ લૂપ માટે પછી 1, હતા તો બધા અંતે ચલાવવા ન હોત. અને તેથી અમે ફક્ત કરશે 1 છે, જે બદલામાં ઉત્પાદન. એ જ રીતે, જો n હતા કરતાં કંઇ ઓછા 1-- તે 0 હતા, જો નકારાત્મક 1, ગમે અમે હજુ પણ 1 પરત કરી લેતો જે બરાબર શું છે ફરી યાદ આવવું આવૃત્તિ કરી છે. હવે, એ વધારે હોય છે 1 કરતાં, તો પછી અમે જઈ રહ્યાં છો, ઓછામાં ઓછી એક કરવા માટે આ લૂપની પુનરાવૃત્તિ. તેથી તો અમે છો, ચાલો એ 5 કહેવું ઉત્પાદન વખત કરવા જઇ રહ્યા 2 સમકક્ષ હોય છે. તેથી હવે ઉત્પાદન 2 છે. હવે અમે શું કરવા જઇ રહ્યા છીએ ઉત્પાદન ગુણ્યા 3 બરાબર. હવે તે 6 છે. ઉત્પાદન વખત હવે તે 24 છે, 4 સમકક્ષ હોય છે. ઉત્પાદન વખત હવે તે 120 છે, 5 સમકક્ષ હોય છે. તેથી પછી છેવટે, અમે પરત કરી રહ્યાં છો યોગ્ય રીતે 5 કારણદર્શી છે, જે 120. પ્રશ્ન 20. આ તમને ભરવા માટે છે કે જ્યાં એક છે આપેલ કોઈપણ અલ્ગોરિધમનો સાથે આ કોષ્ટકમાં, અમે જોઇ છે કે જે કંઈપણ છે, કે જે આ ગાણિતિક રન બંધબેસતુ વખત આ અનંત સ્પર્શી રન વખત. તેથી અલ્ગોરિધમનો શું છે 1 ઓમેગા, પરંતુ એ મોટી ઓ છે? તેથી અનંત હોઇ શકે છે અહીં ઘણા જવાબો. અમે કદાચ સૌથી વધુ જોવા મળે કર્યું છે કે એક વારંવાર માત્ર રેખીય શોધ છે. શ્રેષ્ઠ કિસ્સામાં તેથી દૃશ્ય, અમે છો આઇટમ શોધી પર છે આ યાદી શરૂઆત અને તેથી 1 પગલાંઓ ઓમેગા, અમે તપાસ પ્રથમ વસ્તુ, અમે હમણાં જ તરત જ આવો કે અમે આઇટમ મળી નથી. સૌથી ખરાબ કેસ દૃશ્ય માં, આઇટમ, ઓવરને અંતે છે અથવા વસ્તુ પર તમામ યાદીમાં ન હોય. તેથી અમે શોધવા હોય સમગ્ર યાદી, બધા n તત્વો છે, અને તે n ના ઓ છે કે શા માટે છે. તેથી હવે તે બંને છે કે કંઈક છે n લોગ n ના ઓમેગા, અને n લોગ n ના મોટા ઓ. વેલ સૌથી વધુ સંબંધિત વસ્તુ અમે અહીં જોઇ સૉર્ટ મર્જ છે કર્યો છે. તેથી સૉર્ટ યાદ રાખો કે, મર્જ, આખરે થીટા છે થીટા વ્યાખ્યાયિત કરવામાં આવે છે, જ્યાં n લોગ n છે, ઓમેગા અને મોટી ઓ બંને એક જ હોય ​​છે. બંને n લોગ n. ઓમેગા છે કે જે કંઈક શું છે n ના, અને તે n ના ઓ સ્ક્વેર્ડ? વેલ, ફરીથી ત્યાં છે બહુવિધ શક્ય જવાબો. અહીં અમે પરપોટો સૉર્ટ કહેવું થાય છે. નિવેશ સૉર્ટ પણ અહીં કામ કરશે. બબલ સૉર્ટ કરો યાદ રાખો કે ઓપ્ટિમાઇઝેશન જ્યાં છે, તમે વિચાર કરવાનો હોય તો સમગ્ર યાદી મારફતે કરવા માટે જરૂર વગર કોઈ અદલબદલ, તો પછી, સારી રીતે, અમે તરત જ પાછા આવી શકો છો આ યાદી સાથે શરૂ કરવા માટે છટણી કરવામાં આવી હતી. , શ્રેષ્ઠ કેસ દૃશ્ય તેથી તે એ માત્ર ઓમેગા છે. તે માત્ર એક સરસ ન હોય તો સાથે શરૂ કરવા માટે યાદી સૉર્ટ થાય છે પછી અમે n ના ઓ અદલબદલ સ્ક્વેર્ડ છે. અને છેલ્લે, અમે પસંદગી સૉર્ટ હોય છે સ્ક્વેર્ડ n છે, ઓમેગા અને મોટી ઓ બંને પ્રશ્ન 21. પૂર્ણાંક ઓવરફ્લો શું છે? વેલ, ફરીથી અગાઉ સમાન છે, અમે માત્ર finitely ઘણા બિટ્સ હોય પૂર્ણાંક પ્રતિનિધિત્વ કરવા માટે, તેથી કદાચ 32 બિટ્સ. ચાલો આપણે સહી પૂર્ણાંક હોય છે કહે છે. પછી આખરે સૌથી વધુ હકારાત્મક નંબર અમે પ્રતિનિધિત્વ કરી શકે છે 2 માટે 31 બાદ 1. અમે કરવાનો પ્રયાસ કરો તો શું થાય છે પછી તે પૂર્ણાંક વધારતી? વેલ, અમે 31 2 થી જઈ રહ્યાં છો ઓછા 1, નીચે નકારાત્મક 2 તમામ માર્ગ 31 છે. તેથી આ પૂર્ણાંક ઓવરફ્લો તમે incrementing રાખે છે, અને આખરે તમે નથી કરી શકો છો કોઈપણ ઊંચા અને તે માત્ર વિચાર તમામ માર્ગ પર પાછા વિંટાળે છે નકારાત્મક કિંમત આસપાસ. એક બફર ઓવરફ્લો વિશે શું? તેથી એક બફર overflow-- એક બફર શું છે યાદ. તે માત્ર મેમરી એક ભાગ છે. ઝાકઝમાળ કંઈક એક બફર છે. તેથી એક બફર ઓવરફ્લો ત્યારે તમે મેમરી ઍક્સેસ કરવાનો પ્રયાસ કે એરે ઓવરને બહાર. તમે એક હોય છે, તેથી 5 કદ અને તમે એરે એરે કૌંસ ઍક્સેસ કરવાનો પ્રયાસ 5 અથવા કૌંસ 6 અથવા કૌંસ 7, ઉપરાંત અથવા કંઈપણ અંત, અથવા પણ કશું below-- એરે કૌંસ નકારાત્મક 1-- તે બધા બફર ઓવરફ્લો છે. તમે ખરાબ રીતે મેમરી સ્પર્શ કરી રહ્યાં છો. પ્રશ્ન 23. તમને જરૂર છે આ એક તેથી strlen અમલમાં છે. અને અમે તમે કરી શકો છો કે જે તમે કહી નલ હશે નહિં ધારે, તેથી જો તમે કરવાની જરૂર નથી નલ કોઈ તપાસ નથી. અને બહુવિધ માર્ગો છે તમે આ કરી શકે છે. અહીં અમે ફક્ત સીધું લે છે. અમે n એ, એક પ્રતિ સાથે શરૂ કરો. n છે ત્યાં છે કેટલા અક્ષરો ગણાય છે. તેથી અમે અમે તો પછી 0 પર શરૂ થાય છે અને સમગ્ર યાદી પર ફરી વળવું. આ સમાન ઓ કૌંસ 0 છે નલ ટર્મીનેટર પાત્ર? અમે શોધી રહ્યાં છો યાદ રાખો નલ ટર્મીનેટર પાત્ર અમારા શબ્દમાળા છે કે કેવી રીતે લાંબા નક્કી કરવા માટે. તે સમાપ્ત કરવા જઈ રહ્યું છે કોઈપણ સંબંધિત શબ્દમાળા. તેથી કૌંસ બરાબર 0 છે નલ ટર્મીનેટર છે? જો તે નથી, તો પછી અમે જઈ રહ્યાં છો, ઓ કૌંસ 1, કૌંસ 2 જુઓ. અમે ત્યાં સુધી ચાલુ રાખવામાં નલ ટર્મીનેટર શોધો. અમે તેને મળી છે એકવાર, પછી n સમાવે છે શબ્દમાળા કુલ લંબાઈ, અને અમે હમણાં જ પાછા આવી શકો છો. પ્રશ્ન 24. તેથી આ એક છે, જ્યાં તમે વેપાર બોલ બનાવવા હોય છે. તેથી એક વસ્તુ એક સારી છે પરંતુ કઈ રીતે માર્ગ તે ખરાબ છે? તેથી અહીં, મર્જ સૉર્ટ કરે છે પરપોટો સૉર્ટ કરતાં ઝડપી હોય છે. ત્યાં છે, સાથે સાથે તેનો એવું કહેવાય બહુવિધ જવાબો અહીં છે. પરંતુ મુખ્ય એક કે પરપોટા જેવું છે એક છટણી યાદી માટે n ના ઓમેગા છે. અમે હમણાં જ અગાઉ જોયું કે ટેબલ યાદ રાખો. તેથી બબલ ઓમેગા ગોઠવે છે n એ, શ્રેષ્ઠ કેસ દૃશ્ય તે માત્ર પર જવા માટે સક્ષમ છે છે આ યાદીમાં, એક વાર નક્કી અરે આ વસ્તુ પહેલેથી જ છે છટણી કરવામાં આવે છે, અને બદલામાં. કોઈ બાબત, મર્જ કરો સૉર્ટ શું તમે શું, એ લોગ n ના ઓમેગા છે. છટણી યાદી માટે, બબલ તેથી આનાથી સૉર્ટ કરો ઝડપી બની રહ્યું છે. હવે યાદીઓ વિશે શું કડી થયેલ છે? તેથી કડી થયેલ યાદી વધવા અને સંકોચો કરી શકો છો જરૂરી હોય તેટલા તત્વો ફિટ. તેથી તેનો એવું જણાવ્યું હતું કે સામાન્ય રીતે સીધી સરખામણી એક કડી થયેલ હોઈ ચાલે છે ઝાકઝમાળ સાથે યાદી. તેથી પણ એરે કરી શકો છો તેમ છતાં સરળતાથી વૃદ્ધિ પામે છે અને સંકોચો ઘણા ઘટકો ફિટ જરૂરી છે, કારણ કે એક કડી થયેલ યાદી એક એરે એક સરખામણીમાં એરે રેન્ડમ એક્સેસ છે. અમે કોઈપણ માં ઇન્ડેક્સ કરી શકો છો એરે ખાસ તત્વ. તેથી કડી થયેલ યાદી માટે, અમે નથી કરી શકો છો માત્ર પાંચમી તત્વ પર જાઓ, અમે શરૂઆતથી પસાર છે અમે પાંચમી તત્વ મેળવવા ત્યાં સુધી. અને તે અટકાવી રહ્યું છે દ્વિસંગી શોધ કંઈક કરી. દ્વિસંગી શોધ બોલતા, દ્વિસંગી શોધ રેખીય શોધ કરતાં વધુ ઝડપી હોય છે. તેનો એવું કહેવાય તેથી, એક શક્ય વસ્તુ તમે બાઈનરી નથી કરી શકો છો કે જે હોય છે કડી થયેલ યાદીઓ પર શોધ, તમે માત્ર એરે પર કરી શકો છો. પરંતુ કદાચ વધુ અગત્યનું છે, તમે બાઈનરી શોધ નથી કરી શકો છો છૂટાં પાડવામાં આવે છે કે જે એરે પર. અપફ્રન્ટ સૉર્ટ જરૂર પડી શકે છે એરે, અને માત્ર પછી કરી શકો છો તમે બાઈનરી શોધ કરી. તમારી વસ્તુ ન હોય, તેથી જો સાથે શરૂ કરવા માટે સૉર્ટ, પછી રેખીય શોધ ઝડપી હોઈ શકે છે. પ્રશ્ન 27. તેથી નીચેની કાર્યક્રમ ધ્યાનમાં, જે આગામી સ્લાઇડ હશે. અને આ અમે છો જ્યાં એક છે નિશ્ચિતપણે રહે છે કરવા માંગો છો જઈ વિવિધ ચલો કિંમતો. તેથી આપણે તે જોવા દો. તેથી એક લાઇન. અમે પૂર્ણાંક એક્સ 1 સમકક્ષ હોય છે. કે થયું છે કે આ જ વસ્તુ છે. તેથી એક લીટી પર, અમે, અમારા જુઓ ટેબલ, કે વાય, બી, અને tmp બધા છે બ્લેક્ડ આઉટ. તેથી એક્સ શું છે? વેલ અમે માત્ર તે 1 થી સમાન સુયોજિત કરો. અને પછી, સારી રીતે, બે લીટી અમે વાય 2 સુયોજિત થયેલ છે કે જુઓ અને ટેબલ પહેલેથી જ છે અમને ભરી. તેથી એક્સ 1 છે અને વાય 2 છે. હવે, રેખા ત્રણ, હવે અમે છો સ્વેપ કાર્ય અંદર. શું આપણે સ્વેપ પસાર કરી હતી? અમે માટે ચિન્હ એક્સ પસાર b માટે, અને ચિન્હ વાય. ક્યાં સમસ્યા અગાઉ જણાવ્યું હતું કે x ની સરનામું 0x10 છે, અને વાય ના સરનામા 0x14 છે. તેથી a અને b સમાન હોય છે અનુક્રમે 0x10 અને 0x14. હવે લીટી ત્રણ, એક્સ અને વાય શું છે? ઠીક છે, કંઈ જ બદલાઈ જાય છે આ બિંદુએ, એક્સ અને વાય વિશે. પણ તેઓ છો તેમ છતાં એક મુખ્ય સ્ટેક ફ્રેમ અંદર, તેઓ હજુ પણ એ જ છે કિંમતો તેઓ પહેલાં હતી. અમે કોઈપણ મેમરી ફેરફાર નથી. તેથી એક્સ 1, વાય 2 છે. તમામ હક અનામત. તેથી હવે અમે એક તારો સમાન ઈન્ tmp જણાવ્યું હતું. તેથી રેખા ચાર, બધું tmp સિવાય જ છે. અમે કોઈ કિંમતો બદલાઈ નથી tmp સિવાય કંઇ પણ. અમે એક તારો સમાન tmp રહ્યા છે. તારો શું છે? વેલ, એક પોઈન્ટ એક્સ, તેથી તારો 1 છે, જે સમાન એક્સ, રહ્યું છે. તેથી બધું નકલ થયેલ છે નીચે, અને tmp 1 માટે સુયોજિત થયેલ છે. હવે આગામી વાક્ય. સ્ટાર સ્ટાર બી જેટલી જ થાય છે. તેથી રેખા દ્વારા five-- સારી રીતે ફરીથી, બધું તારો ગમે છે સિવાય જ છે. તારો શું છે? વેલ, અમે ફક્ત તારો એક્સ છે. તેથી અમે સમાન તારો બો એક્સ બદલી રહ્યાં છીએ. સ્ટાર બી શું છે? વાય. વાય બી નિર્દેશ કરે છે. તેથી સ્ટાર બી વાય છે. તેથી અમે વાય એક્સ સમાન સુયોજિત કરી રહ્યા છીએ અને બાકીનું બધું જ છે. એક્સ હવે છે કે જેથી અમે આગામી પંક્તિ જુઓ 2, અને બાકીના માત્ર નીચે નકલ થયેલ છે. હવે આગામી વાક્ય તારો બો tmp સમકક્ષ હોય છે. વેલ, અમે ફક્ત તારો બો વાય છે જણાવ્યું હતું કે, તેથી અમે tmp વાય સમાન સુયોજિત કરી રહ્યાં છો. બાકીનું બધું જ છે, જેથી નીચે બધું નકલ નહીં. અમે છે, કે જે tmp સમાન વાય સુયોજિત કરી રહ્યા છીએ બીજું એક છે, અને બધું જ છે. હવે છેલ્લે, લાઇન સાત. અમે પાછા મુખ્ય કાર્ય છો. સ્વેપ સમાપ્ત થાય પછી અમે કરી રહ્યા છીએ. અમે એ, બી ગુમાવી છે અને tmp, પરંતુ અમે આખરે કોઈ કિંમતો બદલાતી નથી આ બિંદુએ કંઈપણ, અમે હમણાં જ એક્સ અને વાય નીચે નકલ કરો. અને અમે એક્સ અને વાય છે કે નહીં તે જોવા હવે 2 અને 1 બદલે 1 અને 2. સ્વેપ સફળતાપૂર્વક ચલાવવામાં આવી છે. પ્રશ્ન 28. તમે અનુભવી ધારો કે ભૂલ સંદેશાઓને ઓફિસ કલાકો દરમિયાન નીચે એક CA અથવા ટીએફ તરીકે આગામી વર્ષ. આ ભૂલો દરેક સુધારવા માટે કેવી રીતે સલાહ આપે છે. GetString તેથી અવ્યાખ્યાયિત સંદર્ભ. શા માટે તમે આ જુઓ શકે છે? વેલ, એક વિદ્યાર્થી વાપરી રહ્યું હોય તેમના કોડ GetString, તેઓ યોગ્ય રીતે CS50 સમાવેશ થાય છે હેશ છે કોઈ- h CS50 પુસ્તકાલય સમાવેશ થાય છે. ઠીક છે, તેઓ શું કરવું આ ભૂલ સુધારવા માટે જરૂર છે? તેઓ એક આડંબર Lcs50 છે કરવાની જરૂર છે તેઓ સંકલન કરી રહ્યાં છો, જ્યારે આદેશ વાક્ય. તેઓ પસાર નથી, તેથી જો રણકાર આડંબર Lcs50 છે, તેઓ છો વાસ્તવિક નથી જઈ GetString અમલીકરણ કોડ. પ્રશ્ન 29. સર્વથા જાહેર પુસ્તકાલય કાર્ય strlen. વેલ, આ, હવે તેઓ નથી યોગ્ય હેશ કરવામાં સમાવેશ થાય છે. આ ચોક્કસ કિસ્સામાં, હેડર ફાઈલ તેઓ શબ્દમાળા ટપકું h છે સમાવેશ કરવાની જરૂર છે અને હવે શબ્દમાળા કોઈ- h, સમાવેશ થાય છે હવે વિદ્યાર્થી કમ્પાઇલર આ કરવા માટે વપરાશ હોય છે strlen જાહેરાતનો, અને તે જાણે છે તમારો કોડ છે યોગ્ય રીતે strlen ઉપયોગ કરવામાં આવે છે. પ્રશ્ન 30. વધુ ટકા રૂપાંતરણ માહિતી દલીલો કરતાં. તેથી આ શું છે? વેલ, આ ટકા યાદ રાખો કે તેઓ printf માટે સંબંધિત છો કેવી રીતે signs--. તેથી printf અમે percent-- શકે છે અમે કંઈક છાપવા કરી શકે છે ટકા જેવો હું એ બેકસ્લેશ. અથવા આપણે ટકા હું જેવી છાપી શકે છે જગ્યા, ટકા હું, જગ્યા, ટકા i. તે દરેક માટે તેથી ટકા સંકેતો અમે જરૂર છે, printf ઓવરને અંતે એક ચલ પસાર કરવા માટે. તેથી જો આપણે કહીએ કે printf કૌંસ ટકા હું n એ, બંધ કૌંસ બેકસ્લેશ સાથે સાથે, અમે છો કે જે કહે છે પૂર્ણાંક છાપી રહ્યું છે, પરંતુ પછી અમે printf પસાર નથી પૂર્ણાંક ખરેખર છાપો. તેથી અહીં વધારે ટકા માહિતી દલીલો કરતાં રૂપાંતરણ? એટલે કે, અમે હોય છે કહે છે કે percents સમગ્ર ટોળું, અને અમે પૂરતી ચલો ન હોય વાસ્તવમાં તે percents માં ભરો. અને પછી ચોક્કસપણે પ્રશ્ન 31, ચોક્કસપણે એક બ્લોકમાં 40 બાઇટ્સ ગુમાવી. તેથી આ એક Valgrind ભૂલ છે. આ કહે છે કે ક્યાંક તમારો કોડ માં, જો તમે 40 કે જે ફાળવણી છે બાઇટ્સ મોટી છે, જેથી તમે 40 બાઇટ્સ malloced અને તમે તેને મુક્ત નહીં. તમે માત્ર જરૂર છે મોટા ભાગે કેટલાક મેમરી છિદ્ર શોધવા માટે, અને તમે કરવાની જરૂર છે શોધવા મેમરી આ બ્લોક મુક્ત. અને, 32 પ્રશ્ન 4 માપ અમાન્ય લખવા છે. ફરીથી, આ એક Valgrind ભૂલ છે. આ કરવા માટે નથી હવે મેમરી લીક્સ સાથે. આ હું તેનો અર્થ likely-- મોટા ભાગના, તે છે, અમાન્ય મેમરી અધિકારો અમુક પ્રકારની છે. અને મોટા ભાગે આ છે કેટલાક બફર ઓવરફ્લો જેવું. જ્યાં તમે કદાચ ઝાકઝમાળ છે પૂર્ણાંક એરે છે, અને ચાલો તે 5 કદ કહે છે, અને તમે એરે કૌંસ 5 સ્પર્શ કરવાનો પ્રયાસ કરો. તમે તે લખવા માટે પ્રયત્ન કરો છો તો કિંમત છે, કે જે મેમરી એક ભાગ નથી તમે ખરેખર વપરાશ હોય છે, અને તે તેથી જો તમે આ ભૂલ વિચાર જઈ રહ્યાં છો, 4 માપ અમાન્ય લખવા કહે છે. Valgrind તમે છો ઓળખી રહ્યું છે અયોગ્ય મેમરી સ્પર્શ કરવાનો પ્રયાસ કરી. અને તે quiz0 માટે છે. હું રોબ બોડેન છું, અને આ CS50 છે.