[Powered by Google Translate] অনুচ্ছেদ সমস্যা 2 সেট করুন: হ্যাকার সংস্করণ
Rob Bowden, হার্ভার্ড ইউনিভার্সিটি
এটি CS50. CS50.TV
সুতরাং, আমি রব. আমি কার্কল্যান্ড মধ্যে একজন সিনিয়র. এটা আমার তৃতীয় বছরে CS50 TFing.
এটা প্রথমবার না যে আমরা সনাতন ভর্ৎসনা-শৈলী অধ্যায় থেকে পরিবর্তন করা হয়,
যেখানে আমরা শুধু পর্যালোচনা ধরনের কি বক্তৃতায় ঘটেছে এবং তারপর আপনি প্রশ্ন করবেন না,
এখন যাও হচ্ছে আরো অনেক সমস্যা-ভিত্তিক, যেখানে আমরা শূন্যস্থানের ব্যবহার, এবং -
ওহ, তাই ধারণা যে লিঙ্ক আমি আপনাকে পাঠানো যেতে হয় এবং তারপরে আপনি আমার স্পেস থাকব.
কেউ কি একটি ল্যাপটপ আছে না? ঠিক আছে.
তাই আমরা এই বিভাগে ব্যবহার করা যাচ্ছে, এবং করছি আমরা সমস্যার করছেন করা চলুন বসবাস
এবং তাদের আলোচনা এবং figuring আউট কি ভুল
এবং আমি আপনার কোড কিছু থামা, এবং আমি আপনার ধারনা আলোচনা পারে.
তাই যে কেউ করেনি অসুবিধা ছিল?
আমি যদি আমরা যে কারণ থাকতে পারে না; আপনি পাশ দিয়ে চ্যাট করতে পারেন.
আগের মত এখন supersection,, যদি আপনি যে বর্গ ছিল, আপনি কি জানেন যে যে এর সম্পর্কে.
পি সেট সব অন যাচ্ছে এইসব বিভাগে আছে এর.
তাই পি সেট 2, নির্দিষ্টকরণের, আমি অনুমান আপনি পি সেট 1 থেকে তা ইতিমধ্যে দেখেছি.
কিন্তু আমরা পি সেট 2 কি আমরা আজ উপর আপাতত চলুন জন্য সন্ধান করতে পারেন.
এবং আপনি প্রশ্নগুলির একটি অধ্যায় দেখতে পাবেন.
হতে প্রশ্নগুলির একটি অধ্যায় আছে করব; তাই এই পি সেট সব করা হবে.
এ পর্যন্ত আমরা আগেই বলেছি, "এই একটি সুযোগ অনুশীলন বিবেচনা করুন." করেছি
আপনাকে এই প্রোগ্রাম জমা দিতে হবে না.
ধারণা করা হয় যে আপনি এই সমস্যা সেট দিয়ে শুরু করতে সাহায্য ধরনের অনুমিত হয়.
আমি হ্যাকার সংস্করণ উপর অনুমান, তাদের অনেক শুধু নতুন, আকর্ষণীয় শিখতে হবে অনুমিত হয়.
তারা সমস্যা সেট সরাসরি প্রযোজ্য নাও হতে পারে.
এবং ডান এখন আমরা কি তাদের সাথে জমা দিতে, করছি না, কিন্তু তত্ত্ব,
পরে সমস্যা সেটের জন্য, আপনি তাদের জমা, এবং এইভাবে হয় আপনি অধ্যায় আসা সম্ভব
বা অধ্যায় উত্তর পেতে দেখুন, অথবা আপনি শুধু আপনার নিজস্ব তাদের পেতে পারেন
যদি আপনি আমার উপস্থিতি উপভোগ করার মত মনে করবেন না.
তাই - আমি মনে করি এই প্রথম এক.
ওহ. প্রশ্নের এই বিভাগে অধীন এছাড়াও, আমরা আপনাকে হাফপ্যান্ট সম্পর্কে প্রশ্ন জিজ্ঞাসা আছে.
তত্ত্ব তাই আমি অনুমান,, আপনি আসছে অধ্যায় আগে এই ঘড়ি অনুমিত করছি,
কিন্তু এটা সূক্ষ্ম যদি আপনি না; আমরা যে কোনোভাবে তাদের উপর যাবেন.
"কিভাবে লুপ যখন কোনো একটি কি সময় লুপ থেকে পৃথক: সুতরাং আমরা এই দিয়ে শুরু করতে পারেন?
কখন আধুনিক বিশেষভাবে কার্যকরী? "
সুতরাং যে কেউ যে কোনো আছে -?
[ছাত্র] Do-সময় সর্বদা লুপ চালানো অন্তত একবার হবে.
হ্যাঁ. সুতরাং যে পার্থক্য. যখন একটি লুপ - I'll শুধু এখানে না - যখন লুপ, আমরা শর্ত আছে
এখানে ডান, যেহেতু একটি Do-যখন, আপনি যতক্ষণ না আমরা পেতে এখানে নিচে আছে একটি শর্ত না.
এবং তাই, যখন আপনার প্রোগ্রাম, এবং এটি নির্বাহ করার সময় লুপ এর বল,
এটি পরীক্ষা করে অবিলম্বে এই যদি অবস্থা হয় সত্য.
যদি যে শর্ত সত্য নয়, এটা থামিয়া লুপ উপর সম্পূর্ণরূপে হবে.
-Do যখন লুপ, হিসাবে প্রোগ্রাম নির্বাহ করা হয়, এটি "না." পায়
এই সময়ে এরকম কিছুই নেই, শুধু চলতে নির্বাহ.
তারপর যখন এটি "যখন," হিট শর্ত যদি সত্য হয়, এটা লুপ এবং এটি আবার ব্যাক করব না
এবং আবার এবং আবার পর্যন্ত শর্ত সত্য হয় তাহলে এবং কেবল পড়ে না.
সুতরাং, পার্থক্য হচ্ছে, যে এই অধিকার থেকে শুরু খুব লাফালাফি করা যাবে.
এই অগত্যা একবার করুন এবং তারপর আরো কয়েকবার চালানো যদি অবস্থা এখনও সত্য হতে পারে.
সুতরাং লুপ শুধুমাত্র এটি একবার না, বা হবে - যখন লুপ - আমরা এ সব কি দরকার নাও হতে পারে,
যত শীঘ্র আমরা তা পেতে যেহেতু, অবস্থা যদি মিথ্যা হয়, আমরা এটা উপর রাইট থামিয়া করব.
যেহেতু কাজ যখন লুপ, আমরা এটি একবার চালানো, অগত্যা হবে.
এর পরে, যখন আমরা শর্ত পেতে, আমরা চেক যদি এটা সত্য বা মিথ্যা.
যদি এটি সত্য, আমরা এটা আবার চেষ্টা করবো; যদি এটা মিথ্যা, আমরা অবিরত চালু করব.
সুতরাং যখন একটি আধুনিক বিশেষ দরকারী?
সুতরাং আমি পুরো 4 বছর, 3 বছর, যাই হোক না কেন যে বলতে পারে,
যে আমি করেছি হয়েছে প্রোগ্রামিং, আমি এই ব্যবহৃত মত, কিন্তু 10 বার অধীন,.
এবং সম্ভবত তাদের 5 CS50 হয় যখন আমরা সময় loops প্রবর্তন করছি.
সুতরাং যখন আপনি কি ব্যবহার করবেন সময় loops?
কখন - হাঁ?
[ছাত্র] আপনি যখন ব্যবহারকারীর ইনপুট, বা কোন কিছু যা আপনি চেক করতে পেতে চেষ্টা করছেন -
হাঁ. তাই কাজ করার সময় loops, ব্যবহারকারীর ইনপুট হয় বড় এক.
এটা কেন প্রথম দম্পতি সমস্যা সেট, আপনি যখন ব্যবহারকারী, জিজ্ঞাসা করতে চান করতে চান,
"সম্পর্কে একটি স্ট্রিং দিতে," আপনি যতক্ষণ পর্যন্ত না আপনি স্ট্রিং পেতে চালিয়ে যেতে পারবে না.
এবং যাতে আপনি অগত্যা,, স্ট্রিং জন্য অন্তত একবার জিজ্ঞাসা করা প্রয়োজন.
কিন্তু তারপর যদি তারা কিছু খারাপ উত্তর তারপর, আপনি লুপের ফিরে যাও প্রয়োজন এবং আবার জিজ্ঞাসা.
কিন্তু অন্যান্য তুলনায় ব্যবহারকারীর ইনপুট, এটা খুব বিরল যে আমি একটি কেস সম্মুখীন
যেখানে আমি লুপ চাই "অন্তত একবার" কিন্তু সম্ভবত আরো.
কোন প্রশ্ন বা -? যে কেউ ব্যবহার করেনি একটি Do-যখন কোথাও লুপ অন্যথায়?
ঠিক আছে. সুতরাং পরের এক হয়, "কি শনাক্তকারী অঘোষিত না
সাধারণত নির্দেশ ঝনঝন শব্দ দ্বারা যদি outputted? "
কি ধরনের কোড আমি পেতে লিখুন 'অঘোষিত শনাক্তকারী?' হতে পারে
[ছাত্র] যে x 2 =?
তাই আমরা ঠিক এখানে এটা চেষ্টা করতে পারেন, x = 2.
আমরা এই রান পাবেন - ওহ, আমি এটি ক্লিক করা হয় নি. সব ঠিক - তাই আমরা এখানে পাবেন.
"অঘোষিত শনাক্তকারী x এর মধ্যে ব্যবহার করুন."
সুতরাং যে অঘোষিত আইডেন্টিফায়ার, একটি পরিবর্তনশীল.
এটা প্রায়ই একটি পরিবর্তনশীল একটি আইডেন্টিফায়ার কল হবে.
সুতরাং এটি প্রকৃত একটি পরিবর্তনশীল হয়ত জানেন না; এটি কি এটা জানেন না.
এটা একটি আইডেন্টিফায়ার.
সুতরাং এটি কেন হয় অঘোষিত? হাঁ.
তাই পরিভাষা, একটি পরিবর্তনশীল ঘোষণা উপর স্পষ্ট করা
যখন আপনি "int x," বা "স্ট্রিং y," যাই হোক না কেন বলে.
পরিবর্তনশীল আরম্ভের, বা ভেরিয়েবলের নিয়োগ,
যখনই আপনি বলতে হয় "x = 2."
সুতরাং আমরা পৃথক পদক্ষেপে এইসব করতে পারেন, int-X, x = 2, এবং যতক্ষণ না - আমরা এখানে একটা জিনিস আছে গুচ্ছ করতে পারেন -
কিন্তু যতক্ষণ পর্যন্ত না এই লাইন হবে, এখনও x uninitialized হয়, কিন্তু এটি ঘোষিত হয়েছে.
এবং তাই আমরা সম্ভবত 1 লাইন এটা, কি করতে পারেন এবং এখন আমরা এবং প্রকাশক আরম্ভ করা হয়.
প্রশ্ন?
এবং পরিশেষে, "কেন সিজার সাইফার? খুব নিরাপদ নয়"
সুতরাং প্রথম, কেউ কি সিজার সাইফার হয় বলতে চাই না?
[ছাত্র] সিজার সাইফার শুধু ম্যাপ যে আপনি, আপনার প্রতি চিঠি নামান,
একটি চিঠি নির্দিষ্ট সংখ্যক যান উপর, এবং উপর পিছান, এবং এটি খুব নিরাপদ না কারণ
শুধুমাত্র 26 সম্ভব অপশন আছে এবং আপনি শুধু তাদের প্রতিটি 1 চেষ্টা থাকে যতক্ষন না আপনি পেতে.
ওহ. সুতরাং, আমি পুনরাবৃত্তি করা উচিত?
সিজার সাইফার, it's - আমি বলতে চাচ্ছি, আপনি এটি দিয়ে হবে যে আপনি সমস্যার কারবারী -
অথবা আমি সমস্যা সেট যে হ্যাকার সংস্করণ উপর না মান সংস্করণ অনুমান.
সুতরাং সমস্যা সেট মানক সংস্করণে উপর, আপনি ভালো একটি বার্তা পেতে "হ্যালো, দুনিয়া,"
এবং আপনি যদি চান তাহলে 6 ভালো একটি নম্বর আছে, এবং আপনি যে বার্তাটি গ্রহণ করা, এবং প্রতিটি অক্ষর,
আপনি বর্ণমালার মধ্যে 6 অবস্থানের দ্বারা এটি আবর্তিত.
হ্যালো তাই 'জ' জ-i-j-k-l-m-n হয়ে যায়.
সুতরাং প্রথম চিঠি n হবে. ই সঙ্গে একই জিনিস করে.
যদি আমরা একটি আছে,, z-চান বা কিছু পরে, আমরা চারপাশে মোড়ানো ফিরে যাও 'একটি.'
কিন্তু প্রতিটি অক্ষর পায় বর্ণমালার মধ্যে cycled 6 অক্ষরের পরে, এবং এটি খুব নিরাপদ না
থেকে কিভাবে অনেক উপায়ে আপনি একটি চিঠি মোড়ানো যায়নি জন্য শুধুমাত্র 26 সম্ভাবনার আছে.
তাই আপনি শুধু তাদের সমস্ত 26 এবং চেষ্টা করতে পারেন, একটি দীর্ঘ যথেষ্ট বার্তা জন্য সম্ভবতঃ,,
যারা সম্ভাব্য 26 জিনিষ মাত্র 1 যাও সহজপাঠ্য হবে,
এবং সহজপাঠ্য এক মূল বার্তা হতে যাচ্ছে.
সুতরাং এটি একটি এনক্রিপ্ট এ সব কিছু খুব ভাল উপায় না.
অসম্পর্কিত যারা হাফপ্যান্ট যাও, "কি একটি ফাংশন?"
তাই একটি ফাংশন? হ্যাঁ.
[ছাত্র] এটি একটি কোড পৃথক টুকরা যে আপনি মাধ্যমে এবং তারপর যান যাই হোক না কেন ফিরতি মূল্য পেতে কল করতে পারেন এর মত.
হাঁ. এছাড়াও ঠিক পরের এক উত্তর দিয়ে বা পুনরাবৃত্ত - সুতরাং আমি পরবর্তী পর্বের দ্বারা এটি উত্তর পাবেন.
আপনি ফাংশন ব্যবহার করার পরিবর্তে শুধুমাত্র কপি করে কোড পেস্ট সম্ভব এবং আবার উপর.
শুধু যে কোড, নিতে একটি fuction মধ্যে রাখা, এবং তারপর আপনি শুধু ফাংশন কল করতে পারেনি
আপনি যেখানেই থাকুন এবং অনুলিপি দেওয়া হয়েছে পেস্ট.
সুতরাং কর্ম উপযোগী.
তাই এখন আমরা প্রকৃত সমস্যা করব.
প্রথম এক. সুতরাং প্রথম এক ধারণা হয়, তাহলে এটি একটি পংক্তি প্রেরণ করার জন্য, এবং নির্বিশেষে -
অথবা এটা সব ছোট বলে? এটা সব ছোট হাতের অক্ষর ব্যবহার না বলবো না.
তাই কিছু বার্তা, এবং হতে পারে - উহু নেই. এটা আছে.
"সরলতার জন্য, আপনি যে ব্যবহারকারী শুধুমাত্র ছোট হাতের অক্ষর এবং স্পেস ইনপুট করবে না. অনুমান হতে পারে"
সুতরাং আমরা এটা শুধুমাত্র ছোট হাতের অক্ষর দিয়ে একটি বার্তা পাস এবং তারপর আমরা বিকল্প
বড় ও ছোট হাতের মধ্যে - আমরা স্ট্রিং মূলধন এবং ছোট হাতের অক্ষর ব্যবহার করা, পর্যায়ক্রমে পরিবর্তন.
তাই আগে আমরা আপনাকে এমনকি সমস্যার মধ্যে একটি আকর্ষণীয় দ্বিতীয় দিন,
প্রথম যে কাজটা আমরা যা করতে হবে কি?
ওহ, আমি কি শুধুমাত্র ক্লিক করুন কি? ওহ, আমি শুধু এখানে একটি ইমেল ক্লিক করেছেন.
সুতরাং প্রথম জিনিস আমরা যা করতে হবে - আমি ভুল এক সময়ে am খুঁজছেন?
এটা কি এই এক অংশ?
না, যারা আছে এখনও, যদিও.
ঠিক আছে, এখনও এখানে.
- এখন আমরা অনুমান করতে পারে না? হ্যাঁ. এখানে আমরা যে শুধুমাত্র ছোট হাতের অক্ষর ব্যবহার এবং স্পেস অনুমান করতে পারে না.
তাই এখন আমরা যে অক্ষর যাই হোক না কেন আমরা তাদের হতে চান হতে পারে মোকাবেলা করতে হবে.
এবং সে জন্য প্রথম জিনিস আমরা যেতে চাই বার্তা পেতে হয়.
আমরা শুধুমাত্র একটি স্ট্রিং পেতে হবে স্ট্রিং গুলি = GetString,, ঠিক আছে.
এখন এই সমস্যা, এরকম ভাবে কয়েকজন আছে.
কিন্তু আমরা এখানে bitwise অপারেটর ব্যবহার করতে চান যাচ্ছি.
সেখানে যারা হয় supersection ছিল না,
বা কিছু, এবং কি bitwise অপারেটরদের হয় না?
বা কিভাবে হওয়া ASCII তারা কোন ভাবেই কহা?
[ছাত্র] আমি supersection ছিল কিন্তু আমি জানি কি bitwise অপারেটরদের হয়, না.
ঠিক আছে. আমি তখন তাদের মৌলিক উপর যেতে, না আছে কিন্তু আমি ব্যাখ্যা করব
যাও যাও এখানে ব্যবহার করতে চান তাহলে কি আমরা চলুন.
তাই 'এ': মূলধন একটি বাইনারি উপস্থাপনা, সংখ্যা হল 65.
আমি শুধু তাকান যাচ্ছে - 41 যাও 01000001 হবে.
যাতে 65 দশমিক মধ্যে হওয়া উচিত; তাই এই অক্ষর মূলধন এ বাইনারি এর উপস্থাপনা
এখন, চরিত্রের বাইনারি উপস্থাপনা 'একটি' ছোট হাতের অক্ষর
একই জিনিস হতে প্রায়, যাচ্ছে. যে - 6, হাঁ. এই অধিকার.
সুতরাং একটি বাইনারি মূলধন, বাইনারি ছোট 'একটি.'
তাই লক্ষ্য করা যে A এবং 'একটি' হল এই একক বিট. মধ্যে পার্থক্য
এবং এই 32 বিট, 32 বিট সংখ্যা প্রতিনিধিত্বমূলক হতে হবে.
এবং যে অর্থে তোলে থেকে একটি 65; 'একটি' হল 97.
তাদের মধ্যে পার্থক্য হল 32.
তাই এখন আমরা জানি যে আমরা একটি 'একটি' থেকে গ্রহণ করে রূপান্তর করতে পারেন
এবং bitwise ORing এটি সঙ্গে, - একটি 1 এর মতো দেখতে.
এটি একটি bitwise বা, 00100000 সঙ্গে, এবং যা আমাদের দেব 'একটি.'
এবং আমরা 'একটি' থেকে একটি bitwise ANDing পেতে পারেন
11 যে জায়গা, 11111, ২ 0.
তাই এই তারপর আমাদের ঠিক কি 'একটি' ছিল দেবে; কিন্তু এই ব্যক্তিগত বিট বাতিল আউট,
তাই আমরা 01000001 থাকবে; আমি যদি আমি ডান সংখ্যাত জানি না.
কিন্তু bitwise ORing এই পন্থা মূলধন ছোট হাতের অক্ষর থেকে পেতে,
এবং bitwise থেকে ছোট হাতের অক্ষর ব্যবহার মূলধন পেতে ANDing একচেটিয়া এ হয় না
সমস্ত অক্ষর, K বনাম ট, Z বনাম z,
তাদের সব ঠিক হয় এই একক বিট দ্বারা পৃথক যাচ্ছে.
এবং যাতে আপনি কোনো ছোট হাতের অক্ষর থেকে কোনো বড় হাতের অক্ষর এবং তদ্বিপরীত এই পরিবর্তনের জন্য ব্যবহার করতে পারেন.
ঠিক আছে. সুতরাং এই থেকে পাবার সহজ উপায় - তাই পরিবর্তে থাকার যাও
আউট লিখুন যাই হোক না কেন 1011111 হয় - এই সংখ্যা প্রতিনিধিত্বমূলক সহজ উপায়, এবং এই নয়
যে আমি supersection সালে উপর, কিন্তু টিল্ড (~) আরেকটি bitwise অপারেটর.
কি আছে ~ এটা বিট উপস্থাপনা দেখে.
যাক এর কোন নম্বর নিতে.
এই মাত্র কিছু বাইনারি সংখ্যা, এবং কি ~ হয় না এটা বিট সব ফ্লিপ.
তাই এই ছিল একটি 1, এখন একটি 0, এই হল 0 এখন, একটি 1, 010100.
সুতরাং যে সব ~ আছে. যে পরিত্রাণ পেতে - তাই 32 নম্বর হবে -
তাই 32 নম্বর 00100000 হবে, এবং এই তাই ~ হতে যাচ্ছে
এই সংখ্যা এখানে আপ যে আমি সঙ্গে 'একটি' ANDed.
সবাই কি দেখলে? এটি আপনি যখন চিন্তা করতে চান মত চমত্কার সাধারণ,
পরবর্তীতে যে আমরা যা দেখছি, হতে পারে যখন আমরা যদি দেখতে দিতে চান না -
অথবা আমরা জন্য 1 ছাড়া সবকিছু, প্রতি একক বিট সেট করতে চান
আপনি ঝোঁক যাও বিট সেট না যে আমরা কাজ করতে চান ~ না.
তাই আমরা 32 বিট সেট করতে চান না, তাই আমরা 32 এর ~ না.
ঠিক আছে. তাই আমরা যারা সব এখানে ব্যবহার করতে পারেন.
ঠিক আছে, তাই এটা সূক্ষ্ম যদি আপনি কাজ করছেন না, ধীরে ধীরে আমরা পদব্রজে ভ্রমণ উপর একসঙ্গে হইবে,
এই বা তার বেশী, তাই পায়চারি করা - এই মাধ্যমে. এই ভিতর দিয়ে হেটে যেতে.
সুতরাং আমরা আমাদের স্ট্রিং আছে, এবং আমরা চাই যে স্ট্রিং প্রতিটি অক্ষর উপর লুপ এবং এটি কোনো কিছু করতে.
তাই কেমন একটি স্ট্রিং উপর আমরা লুপ? আমরা কি ব্যবহার করা উচিত?
আমি এটা এখানে করতে যাচ্ছি না. হাঁ.
তাই আমি আমার iterator আছে, এবং তিনি বলেন, কিন্তু কিভাবে আমি জানি স্ট্রিং কতগুলি অক্ষর?
Strlen (গুলি), তারপর তোমার +.
তাই আমি এখানে সম্পন্ন করেছি জিনিসগুলি করার সর্বোত্তম উপায় হল না.
কেউ কি জানেন কেন?
কারণ আপনি স্ট্রিং প্রতি একক সময় ভাষা চেক করছি.
তাই আমরা যাও strlen সরাতে চান যাচ্ছি, আমি এখানে আপ বলতে পারে, int-দ্বারা = strlen (গুলি)
এবং তারপর তোমার <দ্বারা কি ক্ষেত্রে, এবং আপনি আগে দেখা যায় না,
আমি কি int i = 0, দৈর্ঘ্য = strlen (গুলি). পারে
এবং তাই এটি কিছুটা বাঞ্ছনীয়, এখন থেকে আমি সুযোগ সীমিত করেছি
পরিবর্তনশীল দৈর্ঘ্য মাত্র লুপ 'জন্য' এই পরিবর্তে, যাও আগে এটি প্রকাশক
এবং যে সবসময় উপস্থিত থাকে, এবং যদি আপনি কেন যে খারাপ না করে বললেন,
বা কেন আসল খারাপ ছিল, it's - লুপ জন্য শুরু করা হবে.
আমি শর্ত চেক. হয় তোমার s এর দ্বারা <?
সুতরাং s এর দ্বারা, যাক এর সঙ্গে "হ্যালো" পুরো সময় কাজ.
S এর দ্বারা সুতরাং, জ ই ঠ-l-O. দৈর্ঘ্য হল 5.
আমি = 0, দৈর্ঘ্য হল 5, তাই তোমার <5 হয় না, তাই লুপ চলতে.
তারপর আবার আমরা যান. আমরা অবস্থা পরীক্ষা. হয় তোমার হ্যালো দৈর্ঘ্য <?
সুতরাং আসুন হ্যালো দৈর্ঘ্যের চেক. H-ই-l-l-O. এটা 5; তোমার <5 নয়, তাই আমরা আবার অবিরত.
তাই আমরা, হিসাবী লুপ প্রতিটি পুনরাবৃত্তির জন্য আমরা হ্যালো গণনা করা হয়,,
এমনকি চিন্তা এটি পরিবর্তন হতেই থাকবে না; এটা সবসময় এর 5 হতে যাচ্ছে.
তাই আমরা ঠিক সামনে 5, মনে রাখবেন এবং এখন সবকিছু আরও ভাল.
সম্পূর্ণ পংক্তি উপর তাই iterating.
কি আমরা স্ট্রিং প্রতিটি অক্ষর জন্য কাজ করতে চান?
[ছাত্র ভাষাভাষী, অপাচ্য]
হাঁ. সুতরাং, যদি অক্ষর অ বর্ণানুক্রমিক তারপর, আমরা এটি উপর লাফালাফি করা ঠিক করতে চান.
কারণ আমরা শুধুমাত্র বর্ণানুক্রমিক অক্ষর যত্নশীল; আমরা একটি সংখ্যা না পুঁজিতে পারেন.
সুতরাং কিভাবে এই আমরা কি করতে পারি? আমাদের অবস্থা যাতে, যদি আমরা কিছু করতে চান - যদি এটা বর্ণানুক্রমিক চেক.
তাই কিভাবে আমরা এই না পরীক্ষা?
[ছাত্র] আপনি ঠিক ফাংশান ব্যবহার করা যেতে পারে, আলফা.
হয় এর মধ্যে, বা কোনো মধ্যে অন্তর্ভুক্ত মত, বা কিছু char.h অন্তর্ভুক্ত?
তাই আমরা গুলি [i] আছে, - এর যাক হয় আলফা ফাংশন, এবং স্পষ্ট ব্যবহার না
যে গুলি অষ্টম অক্ষর, মনে রাখবেন, যে একটি স্ট্রিংটি অক্ষরের একটি অ্যারের,
তাই গুলি অষ্টম অক্ষর.
এখন, যদি এটি একটি বড় হাতের অক্ষর, আমরা জানি এটা একটি নির্দিষ্ট সীমার মধ্যে হতে হবে.
কি যে পরিসীমা?
হাঁ. তাই আপনি যদি গুলি [i] ≥ 65 হয়, এবং গুলি [i] হল ≤ 90 কি, আমি পরিবর্তে কি করা উচিৎ?
হাঁ. সুতরাং, আপনি এমন কি নিছক কখনও উচিত কিছু কখনও এর ASCII মান জানা প্রয়োজন.
নম্বর 65, 90, 97 এবং 102, বা যাই হোক না কেন এটা মনে করবেন না.
112 - - আপনি না প্রয়োজন? আপনি কি সব সময়ে যারা জানেন না করার প্রয়োজন নেই. খুব ভুল.
শুধু একক উদ্ধৃতি অক্ষর, একক উদ্ধৃতি ধ্রুবক ব্যবহার. তাই 'এ' এবং 90 এর কম হয় 'জেড'
এবং এই উল্লেখযোগ্যভাবে ভালো - আমি আমার মাথার উপরের যে Z হয় 90 বন্ধ জানি না.
আমি আমার মাথার উপরের যে 'Z' হল মূলধন জেড জানি বন্ধ
তাই যতদিন এই মূলধনের একটি মূলধন Z, বা আমরা সীমার মধ্যে হয় ছোট আকারের জন্য চেক করতে পারেন,
অথবা যদি এর সীমার মধ্যে ≥ 'একটি' এবং z-≤.
যাতে আমাদের শর্ত.
যেখানে এই জিনিষ সবার জন্য শৈলী পরিবর্তিত হয়.
আমি ভালো তা করব.
এখন কি, আমরা কি করতে চান?
আমরা জানি এই অক্ষর একটি অক্ষর, একটি অলাভজনক অক্ষর.
সুতরাং আমরা কিনা এখন এই একটি বড় হাতের অক্ষর বা একটি ছোট হাতের অক্ষর উচিত মধ্যে বিকল্প প্রয়োজন.
কিভাবে আমরা ট্র্যাক যা এক আমরা এটা হতে চান রাখা?
[ছাত্র আওয়াজ, অপাচ্য]
তাই হ্যাঁ, কিন্তু আমাকে চেক.
মডিউল 0-2 বলা হয়েছিল, ছিল একটি প্রস্তাব অধ আউট, এবং আমি যে তার সাথে একমত.
যে, ভালো বিজ্ঞপ্তি ছাড়া - এই ক্ষেত্রে? হাঁ.
এটা প্রতি অন্য এক, কিন্তু আমরা তোমার মধ্যে মডিউল 2 করতে পারেন না, অথবা তোমার 2 mod, থেকে
লক্ষ্য করা হয় যে ই মূলধন এবং 'একটি' ছোট হাতের অক্ষর ব্যবহার করা হয়? কিন্তু তাদের পৃথক স্থান আছে?
সুতরাং তারা একই mod 2 হবে, কিন্তু করছেন তারা বিভিন্ন ক্ষেত্রে.
[ছাত্র প্রশ্ন, অপাচ্য]
হাঁ. সুতরাং আমরা একটি গণনা রাখা করছি যাচ্ছে.
আমরা এখানে যে যদি আমরা চেয়েছিলেন যেত না; যে একটু জবরজং পেতে পারে
লুপ ঘোষণা জন্য; আমি এটা করা এখানে নেব.
সুতরাং int-গণনা ঃ 0 = আরম্ভ করা হয়.
এবং এখন, তাই আমি কিভাবে অনেক বর্ণানুক্রমিক অক্ষর আমরা করিয়েছি গণনা যাচ্ছি.
সুতরাং অবশ্যম্ভাবী আমরা + যেহেতু আমরা অন্য বর্ণের অক্ষর পাওয়া গণনা করছেন না.
কিন্তু, এখন আপনি যদি গণনা mod 2 বলছে.
তাই যদি গণনা ঃ 2 mod? ওহ. আমি এখন জন্য == 0 করব.
আমরা যেতে উপর যে করব. তাই আপনি যদি গণনা mod 2 == 0, তারপরে কি?
[ছাত্র উত্তর, অপাচ্য]
সুতরাং আমরা এটা য়ের বড়হাতের অক্ষর ছোটহাতের শেষ আপ করতে চান.
2 মামলা আছে; য়ের বড়হাতের অক্ষর ছোটহাতের এবং ছোট হাতের অক্ষর ব্যবহার করা হয় 2 ক্ষেত্রে.
সুতরাং আমরা যদি ছোট হাতের মধ্যে আছেন আমরা বড়হাতের করা প্রয়োজন.
এটি যদি য়ের বড়হাতের অক্ষর ছোটহাতের আমরা কিছু করার প্রয়োজন নেই.
কিন্তু, একটি উপায় আছে - shouldn't ফ্লিপ করা আছে -
যে আমরা কিনা এটা য়ের বড়হাতের অক্ষর ছোটহাতের বা ছোট হাতের অক্ষর ব্যবহার চেক করার প্রয়োজন না?
সর্বদা নিশ্চিত যে সবসময় আমরা য়ের বড়হাতের অক্ষর ছোটহাতের সময়ে শেষ করতে কি আমরা করতে পারি?
তাই আমরা ছোট 'একটি' জন্য কি লক্ষ্য করা; কি যদি আমরা একটি বড়হাতের এই একই জিনিস কি সঠিক?
একটি পরিবর্তন বড়হাতের আছে, অথবা মান পরিবর্তন আছে?
হাঁ. কাজেই কোনো বড় হাতের অক্ষর bitwise ~ 32 ANDed যে একই য়ের বড়হাতের অক্ষর ছোটহাতের অক্ষর হবে
কারণ কোনো য়ের বড়হাতের অক্ষর ছোটহাতের অক্ষর জন্য 32nd বিট সেট করা হয় না.
তাই আপনি যদি আমরা চরিত্র গুলি [আমি], আমরা এটা ছোট হাতের বা য়ের বড়হাতের অক্ষর ছোটহাতের হতে চান আনতে চান.
তাই আপনি যদি তা ছিল ছোট আকারের, এটি এখন য়ের বড়হাতের অক্ষর ছোটহাতের হয়, যদি এটি ছিল য়ের বড়হাতের অক্ষর ছোটহাতের, এটি এখনও য়ের বড়হাতের অক্ষর ছোটহাতের, এবং যে এটি.
আমি supersection এই বলেন: 32 আপনি যদি ব্যবহার করতে চান, কিন্তু পারেন আমি করছেন 'একটি' পছন্দ ঝোঁক - এ,
পরিবর্তে শুধু সাধারণ 32 বলা, কারণ এটি অন্য কোন বিট হতে পারেন.
32 বিট পরে, এটি এর মধ্যে যে কোনো হতে পারে, অথবা আমরা যথেষ্ট না আছে করবে
নম্বর অক্ষরের সব চিত্রিত করা.
তাই আপনি যদি 32 বিট পাওয়া, এটা 64 বিট হতে পারে, এটা 128 বিট হতে পারে.
যারা বিট কোন বিট য়ের বড়হাতের অক্ষর ছোটহাতের এবং ছোট হাতের মধ্যে যে আলাদা হতে পারে.
আমি এটা 32 বিট জানা প্রয়োজন হবে না.
আমি এই 'একটি' ব্যবহার করতে পারেন - একটি বিট দুই মধ্যে যে পার্থক্য পেতে পারেন
জাদু ছাড়া নম্বরটি 32 নির্ভর করা প্রয়োজন.
তাই এখন অন্যথায়, ছিল অদ্ভুত গণনা, এবং তাই আমি কি করতে চান?
[ছাত্র উত্তর, অপাচ্য]
[ছাত্র] কি যে?
আমি 1 সেকেন্ডের মধ্যে এটি করবেন.
সুতরাং এখন যদি আমি চাই যাও - আমি নিশ্চিত অক্ষর এখন ছোট হাতের অক্ষর ব্যবহার করতে চাই,
এবং যাতে আমি দ্বারা 32 বা, করতে পারেন এবং 32 মানে 'একটি' - এ
কিন্তু আগের এক হিসাবে একই যুক্তি দ্বারা বিজ্ঞপ্তি,, যে যদি
ইতিমধ্যে ছোট হাতের অক্ষর ছিল, তারপর ORing 32 দ্বারা শুধুমাত্র ছোট হাতের অক্ষর রাখে এটি.
এটি মূল চরিত্র পরিবর্তন হয়নি.
কিন্তু এখন আমি বলতে চাইছে, "যদি এটা ছোট হাতের অক্ষর ব্যবহার, এটা ভুলে যাওয়া এড়াতে না,
যদি এটা য়ের বড়হাতের অক্ষর ছোটহাতের, তারপর. পরিবর্তন "
এটা আরো অনেক কিছু এই কাজের জন্য সুবিধাজনক.
[ছাত্র] ছোট হাতের কাজ থেকে য়ের বড়হাতের অক্ষর ছোটহাতের subtracting যদি এটি 32 ছিল না যে কি কৌশল?
যদি এটি ছিল, 34 অথবা কিছু চান,?
সুতরাং, আপনি যে 2 এর মধ্যে পার্থক্য জানতে হবে -? >> 1 বিট.
এটা 1 বিট হতে হবে, যতদিন এই অবস্থা নীচের বিট সব একই হতে পারে.
সুতরাং আমরা অন্তত 26 টি অক্ষর প্রয়োজন - বা, 26 টি অক্ষর আছে.
তাই আমরা পার্থক্য প্রতিনিধিত্ব কমপক্ষে 26 নম্বর প্রয়োজন -
A এবং 'একটি' কমপক্ষে 26 করা হয়েছে, এর মধ্যে পার্থক্য
বা অন্যথায় আমরা সমস্ত মূলধন সংখ্যা প্রতিনিধিত্ব করে না.
তার মানে যে A, যদি আমরা 1 শুরু করা হবে, এই সব বিট ব্যবহার করছেন,
এই প্রথম 5 বিট, যাও জেড মাধ্যমে সবকিছু প্রতিনিধিত্বকারী সব
এটা কেন পরের বিট, বা এই বিট, পরবর্তী বিট হল একটি এবং এর মধ্যে পার্থক্য নির্বাচিত 'একটি.'
ASCII টেবিলের যে এছাড়াও কেন,, 5 হরফ থেকে বড় হাতের অক্ষর আলাদা চিহ্ন আছে.
যেহেতু যারা হল চিহ্ন, অতিরিক্ত 5 যে বইয়ের 32 আপ হচ্ছে তাদের মধ্যে পার্থক্য.
[ছাত্র] সুতরাং আমরা এটা, কারণ ASCII ডিজাইন করা যে এর উপায় হতে পারে.
হ্যাঁ. কিন্তু ASCII - এ পার্থক্য করা এই বিট উভয় পারে.
মত, যদি একটি ছিল 10000001, এবং 'একটি' ছিল 11100001 - আমি ভুলবেন না, যাই হোক না কেন.
কিন্তু যদি এটি ছিল এই তারপর, আমরা এখনও ব্যবহার 'একটি' হতে পারে - এ
শুধু এখন A এবং 'একটি' এখনও এইসব 2 বিট মধ্যে পার্থক্য.
আমি মনে করি 48 এর লিখিত. এটা কি 32 + 64? আমার মনে হয় এটা?
এটা এখনও হতে 2 বিট করবে; প্রতি একক চরিত্র,, পছন্দ এবং z-Z, K ও k,
তারা এখনও একই সঠিক জন্য যারা 2 বিট ছাড়া বিট সেট করা হবে.
সুতরাং হিসাবে দীর্ঘ হিসাবে যে সবসময় সত্যি, নির্বিশেষে যদি আমরা ASCII বা অন্য কিছু সিস্টেম ব্যবহার করছেন,
যতদিন এর শুধুমাত্র একটি বিট আছে যা প্রতিটি অক্ষরের জন্য বিভিন্ন সেট নম্বর,
তারপর যে কাজ করে জরিমানা.
এটা ঠিক যে 32 সেট আপ না কারণ এটি প্রথম এক সম্ভবত আমরা ব্যবহার করতে পারেন ছিল. >> কুল.
আমি পছন্দ করেন, যদি আপনি, যদি ব্লক শুধুমাত্র একটি একক লাইন দেখা না দেয়,
আপনি কোঁকড়া ধনুর্বন্ধনী পরিত্রাণ পেতে পারেন; তাই আমি এই কাজ পছন্দ ঝোঁক.
উপরন্তু, আপনি কি জানেন কিভাবে আমরা গুলি [i] + = 1 ভালো জিনিস করতে পারেন?
আপনি কি গুলি [i] ও bitwise = 32. পারেন
এবং bitwise বা = 32.
এছাড়াও, mod 2 == 0 গণনা.
আমি এটা না লিখতে হবে - - যাতে মনে রাখবেন যে কোনো অ শূন্য মান সত্য হয়, এবং 0 মিথ্যা.
সুতরাং "যদি গণনা mod 2 == 0" হিসাবে একই হয় বলছে "যদি mod 2 গণনা করা হয় না."
আমি সম্ভবত লাইন করে বিপরীত এবং বলেন, "যদি গণনা mod 2,
বা 1, অন্যথায় না 1 ও না,. "যাতে আমি প্রয়োজন ছিল না" না "
কিন্তু এই কাজ ভাল হবে.
কি কি এবং আমি এখানে কি করতে পারি?
আপনি তিন সাথে যদি আপনি চেয়েছিলেন, একত্রিত করতে পারে কিন্তু ঐ জিনিষ ঠিক করতে Messier চাই
এবং সম্ভবত আরো পড়া কঠিন, তাই আমরা যে দেবে না.
কেউ অন্য কোন পরামর্শ আছে?
যে সমস্ত সমস্যার জন্য বলা? ওহ হ্যাঁ.
সুতরাং এই খালি লাইন পরিত্রাণ পেতে এখন, আমরা চ,% s-মুদ্রণ করব স্ট্রিং জন্য এক হচ্ছে,
আমরা চ মুদ্রণ, গুলি হবে.
এখন আমি কি এটি চালানোর জন্য. আমি কি কিছু ভুল করবেন?
এটা একটি \ "; আমি একটি n চান.
ঠিক আছে. এখন আমরা এটিকে চালাতে পারবেন. এটি সম্ভবত এ সম্পর্কে চিত্কার করব.
Strlen string.h হয়.
তাই এই ঝনঝন সম্পর্কে চমৎকার জিনিস এটা বলে আপনি কি এটা আছে,
পরিবর্তে যা জিসিসি শুধু বলে, "আরে, আপনি কিছু একটা ভুলে গেছি, আমি কি এটি ছিল. জানি না"
কিন্তু এই সম্পর্কে বলতে হবে, "আপনি string.h অন্তর্ভুক্ত ছিল."
তাই আমি কিছু জন্য, তাই না কি এটি লেখার অনুরোধ জানানো কিছু বলছে না.
কিন্তু আমরা তাদের উদাহরণ দেব, "4 অ্যাড ধন্যবাদ".
যে দেখে. কি আনন্দ.
আপনার প্রধান তাই ফিরে যাও, আমি এটা প্রায় কখনই.
এটা ঐচ্ছিক. এবং শুধুমাত্র প্রধান ফাংশন, যার জন্য এটা ঐচ্ছিক.
আপনি যদি মূল থেকে ফিরে না, তাহলে অনুগ্রহ 0 ফিরে বোঝানো অধিকৃত এর.
প্রশ্ন?
ঠিক আছে. তাই এখন দ্বিতীয় সমস্যা.
2 সপ্তাহ এর দ্বিতীয় বক্তৃতা যে 2 ভেরিয়েবল 'মান সোয়াপিং থেকে "পাশ দিয়ে রিকল
যারা একটি ফাংশন (এমনকি যদি swap 'র নামে) 2 ভেরিয়েবল কমপক্ষে না ছাড়া ঠিক কাজ করে না,' পয়েন্টার দেয়া হল. '"
এবং পয়েন্টার যতক্ষণ না আমরা তাদের পেতে উপেক্ষা.
আমরা 2 ভেরিয়েবল অদলবদল করতে চান; আমরা তা ব্যবহার করে একটি ফাংশন করছি না.
আমরা এখনও যাও প্রধান তা মত না বলে যাচ্ছে.
কিন্তু যারা 2 ভেরিয়েবলগুলি ব্যবহার, আমরা একটি অস্থায়ী ভেরিয়েবল ব্যবহার করতে চান না.
2 উপায়ে এই কাজ করতে হয়.
আপনি এটা আপনার প্রথাগত বাইনারি অপারেটর ব্যবহার করতে পারেন.
সুতরাং যে কেউ যে কোনো একটি কাজ দ্রুত এবং ময়লা উপায় জানেন?
এটা আসলে চিন্তা করতে এক মিনিট সময় লাগতে পারে. যদি আমি আছে -
আমি সমস্যা সেট আপ মত তারা জিজ্ঞাসা করব. সুতরাং যদি আমি 2 ভেরিয়েবল আছে, একটি, যা শুধুমাত্র একটি পূর্ণসংখ্যা
যে সম্পর্কে তারা দেওয়ার জন্য, এবং সমষ্টি পরিবর্তনশীল বি, যা অন্য একটি পূর্ণসংখ্যা যে আমি দেওয়া হবে.
সুতরাং যদি আমি এই 2 ভেরিয়েবল আছে এখন, আমি তাদের অদলবদল করতে চান.
ঐতিহ্যগত, আপনার নিয়মিত বাইনারি অপারেটর ব্যবহার করে, আমি বলতে চাচ্ছি, মত, +, -, ÷.
নেই bitwise অপারেটরদের বাইনারি যা কাজ.
, + +, ÷, এবং যারা সব - তাই ব্যবহার করে.
আমরা ভালো কিছু করে অদলবদল হতে পারে একটি = a + b, এবং খ = একটি - বো, একটি একটি = - বো.
সুতরাং, বৈধতা, চেক এবং তারপর আমরা কেন যে কাজ দেখতে পাবেন.
চলুন শুরু করা যাক বলে একটি = 7, খ = 3, তারপর একটা + খ 10 হবে.
সুতরাং এখন আমরা একটি = 10 সেটিং করছি, এবং তারপর আমরা বো = একটি করছেন - বো.
সুতরাং আমরা করছেন বো = একটি - বো, যা 7 হবে, এবং একটি বো = - বো আবার,
অথবা একটি = একটি - বো. 7 যা 3 - যা 10 হবে.
তাই এখন সঠিকভাবে বলতে গেলে, 'একটি' ছিল 7, বো ছিল 3, এবং এখন খ 7 এবং 'একটি' হল 3.
সুতরাং যে ধরনের ইন্দ্রিয় তোলে; 'একটি' হল 2 সংখ্যার সমন্বয়.
এই মুহুর্তে, 'একটি' হল সমন্বয়, এবং তারপর আমরা মূল বো subtracting করছি,
এবং তারপর আমরা আউট subtracting কি ছিল মূল 'একটি.' করছি
কিন্তু এই সব সংখ্যার জন্য কাজ করে না.
এই দেখুন, এর একটি সিস্টেম বিবেচনা করা যাক; যাতে আমরা সাধারণত 32 বিট পূর্ণসংখ্যা হিসাবে মনে করি.
যাক এর কিছু শুধুমাত্র 4 বিট ভালো যে এর কাজ.
আশা করি আমি একটি ভাল উদাহরণ চিন্তা অধিকার এখন.
সুতরাং, আমি জানি, এই সহজ হবে.
চলুন শুরু করা যাক আমাদের বলতে 2 সংখ্যা 1111, এবং 1111; যাতে আমরা বাইনারি আপনি আছেন এখন ডান.
প্রকৃত decimals, যদি আপনি এটি যে ভাবে চিন্তা করতে চান, একটি = 15 এবং খ = 15.
তাই আমরা আশা, পরে আমরা তাদের swap - তারা একই সংখ্যা হতে হবে না,
কিন্তু আমি এই উপায় এটি.
চলুন শুরু করা যাক তাদের একই সংখ্যা না. এর 1111 এবং 0001 করুক না.
সুতরাং একটি = 15 এবং খ = 1.
পরে আমরা তাদের swap, আমরা 'একটি' যাও 1 হতে 15 এবং বো বলে আশা করা.
তাই আমাদের প্রথম পদক্ষেপ একটি = a + b.
আমাদের সংখ্যা মাত্র 4 টি বিট ব্যাপী, তাই 'একটি,' যা 1111 + খ, যা 0001,
এবং শেষ হচ্ছে 10000 যাচ্ছে তবে আমরা শুধুমাত্র 4 বিট আছে.
তাই এখন একটি = 0.
খ - - প্রকৃতপক্ষে, এই এখনও কাজ পুরোপুরি এবং এখন আমরা বো = একটি সেট করতে চান.
একটি একটি = - খ - লেট এর যদি এই কাজ পুরোপুরি আউট দেখতে.
অতএব খ = 0 - 1 টি, যা এখনও 15 হবে, এবং তারপর একটি একটি = - বো, যা 1 হবে.
হয়তো এই কাজ করে.
আমার মনে একটি কারণ এটি ব্যবহার করে নিয়মিত কাজ হয় না আছে.
ঠিক আছে, এটা নিয়মিত ভাবনাটি হলো এই যে বাইনারি অপারেশন সঙ্গে কাজ করে না তাই কাজ,
আমি যদি সত্য হয় যে Google-কে দেখতে হবে - এবং আমি দেখব.
তাই আমরা এটা bitwise অপারেটর ব্যবহার করতে চান, এবং এখানে সুরুক XOR হয়.
সুতরাং, XOR (^) পরিচায়ক আপনি যদি এখনো দেখা যায় এটি নি.
এটা আবার,, একটি bitwise অপারেটর তাই এটি বিট, এবং it's অল্পে কাজ করে -
যদি আপনি বিট 0 এবং 1 থাকে, তখন এই 1 হতে হবে.
আপনি যদি 1 এবং 0 বিট থাকে, তাহলে 1 হবেন, আপনি বিট 0 এবং এটি 0 0 হবেন আছে,
এবং যদি আপনি বিট 1 টি এবং 1 টি আছে এটা 0 হবেন.
সুতরাং মত বা. যদি বিট হয় সত্য, এটা 1, কিন্তু OR অসদৃশ, এটি উভয় বিট যে সত্য হতে পারে না.
এই বা 1 হতে হবে, এই XOR 0 হতে হবে.
তাই আমরা এখানে XOR ব্যবহার করতে চান তাহলে চলুন.
এক মিনিটের জন্য সেটা ভাবুন; আমি Google-এ যাচ্ছি.
হ্যাঁ, আপনি যে পড়তে পারে না; আমি XOR swap 'র আলগোরিদিম পাতা বর্তমানে আছি.
আশা করি এই আমি কেন can't ব্যাখ্যা করবে -
এই অ্যালগরিদম ঠিক হয় যে আমরাও.
আমি এখনও কেন না - আমি কেবল একটি খারাপ উদাহরণ অবশ্যই চয়ন,
কিন্তু এই ক্ষেত্রে যেখানে 'একটি' যাও পেয়ে 5 বিট পরে হত্তয়া 0,, তাই এখন 'একটি' হল 0 ঘটেছে,
যে কি বলা হয় "পূর্ণসংখ্যা ওভারফ্লো."
যাও উইকিপিডিয়া অনুযায়ী XOR swap-র থেকে পৃথক, এই ", এই প্রকরণ প্রয়োজন যে এটা কিছু পদ্ধতি ব্যবহার করে
যে x + y একটি পূর্ণসংখ্যা ওভারফ্লো কারণ নিশ্চয়তা দেয় না. "
তাই এই সমস্যা আছে; এই ছিল পূর্ণসংখ্যা ওভারফ্লো, কিন্তু আমি কিছু একটা ভুল করেছিলাম.
আমি নিশ্চিত না. আমি অন্য একটি চিন্তা করার চেষ্টা করব.
[ছাত্র] আচ্ছা, যখন আপনাকে সেখানে একটি সংখ্যা লাগাতে চেষ্টা করছেন পূর্ণসংখ্যা ওভারফ্লো না
বিট পরিমাণ আপনি বরাদ্দ আছে চেয়ে বড়?
হাঁ. আমরা 4 টি বিট আছে. That's - আমরা 4 বিট ছিল, তারপর আমরা তা 1 যোগ চেষ্টা, তাই আমরা 5 বিট সঙ্গে শেষ.
কিন্তু মাত্র পঞ্চম বিট কেটে, হাঁ হয়.
এটা আসলে বল -
[ছাত্র] যে একটি ত্রুটি কি আপনি নিক্ষেপ করা, বা যে - কোনো ত্রুটি যে নিক্ষেপ করা হবে?
নং তাই কোন ত্রুটি আছে. আপনি যখন সমাবেশ স্তর পেতে, একটি বিশেষ বিট
কোথাও বলেন যে একটি ওভারফ্লো ছিল, কিন্তু C আপনাকে ঠিক কোন ধরনের সঙ্গে মোকাবিলা না সেট করা হয়.
আপনি আসলে তা মোকাবেলা করতে পারবেন না, যদি না আপনি বিশেষ সি মধ্যে সমাবেশ নির্দেশিকাটি ব্যবহার করুন
চলুন XOR swap 'র কথা চিন্তা করেছিলাম.
এবং আমি মনে করি যে উইকিপিডিয়ার নিবন্ধ হতে হয়েছে এই বলে -
তাই এটি আনা modular গাণিতিক আপ, তাই আমি অনুমান তত্ত্ব আমি ছিল,, modular পাটিগণিত করছেন
যখন আমি তাকে বললাম যে 0 - 1 হয় আবার 15.
সুতরাং যে আসলে বল - 1 = 15 - একটি নিয়মিত যে প্রসেসর 0 উপর আছে.
যেহেতু আমরা 0 আপ শেষ, আমরা 1 বিয়োগ, অতএব এটা প্রায় 1111 যাও গোপন করে ফিরে.
তাই আসলে এই অ্যালগরিদম কাজ, a + b, একটি হতে পারে - বো, বো - একটি; যে জরিমানা হতে পারে.
কিন্তু কিছু প্রসেসরের ক্ষেত্রে, যা করব না তা আছে, এবং তাই ঐ নির্দিষ্ট বেশী সূক্ষ্ম হবে না.
XOR swap-র কোনো প্রসেসরের কাজ হবে. ঠিক আছে.
ধারণা করা হয় যে এটি একই যদিও, অনুমিত এর.
যেখানে আমরা XOR যাও একরকম ভেরিয়েবল 1 মধ্যে উভয় তথ্য পেতে ব্যবহার করছেন,
এবং তারপর পৃথক ভেরিয়েবলের তথ্য বৈঠাচালনা আবার আউট.
তাই যে কেউ কিন্তু ধারনা / উত্তর আছে?
[ছাত্র উত্তর, অপাচ্য]
তাই এই, এবং এছাড়াও কাজ, XOR হয় বিনিময় করা উচিত.
তথাপি যা আদেশ এইসব 2 নম্বর আপ এখানে করা ঘটবে,
এই ফলাফল একই হবে.
সুতরাং একটি ^ ^ b হল বো একটি.
আপনি তাও দেখতে এই হিসাবে লিখিত হতে পারে একটি ^ = বো, বো ^ = একটি, একটি = ^ বো আবার.
সুতরাং এই অধিকার, এবং কেন এই কাজ বিট, মনে দেখুন.
একটি smallish নম্বর ব্যবহার করে, এর 11001, 01100 এবং বলা যাক.
তাই এই 'একটি'; এই বো.
সুতরাং একটি ^ = খ.
আমরা করা সেটিং এইসব 2 জিনিস XOR যাও 'একটি' = যাও চলুন.
^ 0 1 সুতরাং 1; 1 ^ 1 0; 0 ^ 1 টি 1 টি, এবং ^ 0 0 0; ^ 1 0 1.
সুতরাং 'একটি,' আপনি যদি দশমিক সংখ্যা তাকান, তা হতে যাচ্ছে -
আপনাকে মূল 'একটি' এবং নতুন মধ্যে একটি সম্পর্ক অনেক দেখতে একটি, 'করছেন যাচ্ছে না
কিন্তু বিট এ খুঁজছেন, 'একটি' তথ্য একটি জাল এখন ভালো হয়
উভয় মূল 'একটি' এবং মূল বো.
তাই আপনি যদি আমরা বো ^ একটি, আমরা দেখতে যে আমরা আসল সময়ে শেষ নেব 'একটি.' গ্রহণ করা
এবং যদি আমরা নিতে আসল 'একটি' ^ নতুন 'একটি,' আমরা দেখতে আমরা আসল বো আপ শেষ.
সুতরাং (একটি ^ খ) ^ বো = আসল 'একটি.'
এবং (ক ^ b) ^ = একটি মূল বো.
এখন পর্যন্ত - এইজন্য এই হল কিছু XOR নিজেই অন্য উপায় সর্বদা 0.
1101 সুতরাং ^ 1101, সমস্ত বিট একই হতে যাচ্ছে.
সুতরাং যাচ্ছে একটি কেস যেখানে 1 একটি 0 এবং অন্যান্য 1 আছে এর না.
তাই এই হল 0000.
এই একই সঙ্গে. (একটি ^ b) ^ b হয় ভালো একটি ^ (খ ^ খ).
(খ ^ খ) ২ 0 হতে হবে; একটি মাত্র ^ 0 to be 'একটি,' হবে যেহেতু সব বিট 0.
সুতরাং শুধুমাত্র লোক যে হতে যাচ্ছে যেখানে 'একটি' মূলত ছিল একটি 1 হয় - বেশী ছিল.
এবং এখানে একই ধারণা; আমি নিশ্চিত এটি প্রশংসনীয় এছাড়াও বিনিময়.
হাঁ. আমি আগে যে এটি ছিল বিনিময় বলে নি.
^ 'একটি,' এবং এটা মিশুক, তাই এখন (খ ^ একটি) ^ একটি.
এবং আমরা বো ^ (একটি ^ একটি). কি করতে পারেন
তাই আবার, আমরা মূল বো পেতে.
সুতরাং 'একটি' এখন 'একটি' এবং বো একসাথে সমন্বয়.
আমাদের নতুন কম্বো ব্যবহার করে 'একটি' আমরা বলতে বো = কম্বো 'একটি' ^ মূল বো, আমরা মূল পেতে 'একটি.'
এবং এখন একটি কম্বো = 'একটি' ^ নতুন বো, যা ছিল মূল - অথবা যা এখন কি ছিল 'একটি' বা বো.
যে এই কেস এখানে নিচে. এটি = খ, পুরানো বো.
তাই এখন আনা ক্রম সবকিছু ফিরে.
যদি আমরা আসলে বিট দিকে তাকিয়ে, খ = একটি ^ বো, এইসব 2 XOR যাচ্ছে,
এবং উত্তরটি এই হবে, এবং তারপর একটি একটি = ^ বো এইসব 2 XORing হয় এবং এই উত্তরটি.
প্রশ্ন? ঠিক আছে. তাই গত এক হয় কিছুটা উল্লেখযোগ্যভাবে আরো কঠিন.
[ছাত্র] আমার মনে হয় সে সম্পর্কে একটি প্রশ্ন আছে. >> ওহ, দুঃখিত.
[ছাত্র] কি আসলে দ্রুত? যদি আপনি এই XOR ব্যবহার, বা এটা যদি আপনি একটি নতুন ভেরিয়েবল ডিক্লেয়ার?
তাহলে প্রকৃতপক্ষে দ্রুত, একটি নতুন পরিবর্তনশীল প্রকাশক বা XOR যাও অদলবদল ব্যবহার করে?
উত্তর সমস্ত সম্ভাবনা হয়,, একটি অস্থায়ী পরিবর্তনশীল.
এবং যে কারণ হল, একবার এটা কম্পাইল ডাউন এর - তাই সমাবেশ পর্যায়ে,
কোন ভেরিয়েবল আছে স্থানীয় বা কোনো অস্থায়ী ভেরিয়েবল অথবা এই বিষয় নিয়ে কোনো যেমন জিনিস.
তারা শুধুমাত্র আপনার পছন্দ - স্মৃতি আছে, এবং নিবন্ধনের আছে.
নিবন্ধনের হয় যেখানে সক্রিয়ভাবে জিনিস ঘটছে.
আপনি কি যোগ মেমরির মধ্যে 2 জিনিষ না; আপনি নিবন্ধনের মধ্যে 2 জিনিস যুক্ত.
এবং আপনি নিবন্ধনের মধ্যে মেমরি থেকে জিনিষ পরে জুড়তে আনা,
এবং তারপর আপনি তাদের মেমরিতে রাখা ফিরে, হয়ত সমস্ত কর্ম নিবন্ধনের হতে থাকে.
সুতরাং যখন আপনি অস্থায়ী পরিবর্তনশীল পদ্ধতির ব্যবহার করছেন, সাধারণত কি হয়
এই 2 নম্বর নিবন্ধনের ইতিমধ্যেই আছে.
এবং তারপর থেকে যে পয়েন্ট, পরে আপনি তাদের আনা করেছি,
এটা শুরু অন্যান্য নিবন্ধন ব্যবহার করব.
আপনি কোথাও হয়েছে বো ব্যবহার করে, এটা যে ইতিমধ্যেই নিবন্ধন সংরক্ষণ 'একটি.' ব্যবহার করব
সুতরাং প্রকৃতপক্ষে swap 'র কি কিছু করতে না প্রয়োজন. হাঁ?
[ছাত্র] কিন্তু এটা আরো মেমরি লাগবে, ডান?
এটা আরো মেমরি শুধুমাত্র যদি এটি যে অস্থায়ী পরিবর্তনশীল সঞ্চয় প্রয়োজন নিতে হবে.
যদি পরে আপনি যে অস্থায়ী পরিবর্তনশীল আবার কোথাও ব্যবহার করতে চান,
তারপর - অথবা আপনি যে অস্থায়ী পরিবর্তনশীল কিছু নির্ধারণ করুন.
তাই আপনি যদি এ সময় 'একটি,' খ temp মধ্যে কোন বিন্দু স্বতন্ত্র মান বা কিছু আছে,
তারপর এটা মেমরির মধ্যে স্বতন্ত্র অবস্থানে আছে যাচ্ছে, কিন্তু এটা সত্য যে এর
অনেক স্থানীয় ভেরিয়েবল যা শুধুমাত্র নিবন্ধনের মধ্যে উপস্থিত করা হয়.
যে ক্ষেত্রে, মেমরির মধ্যে এটি, এবং কিছু করা না, তাই আপনার মেমরি নাশক না করছি.
ঠিক আছে. সর্বশেষ একটি প্রশ্ন আরো বিট.
এই CS50 প্রয়োগ তাই এখানে,, একটি অভিধান আছে.
এবং এই জন্য কারণ কারণ [?? B66] একটি বানান পরীক্ষক যেখানে আপনি লেখা হবে
হ্যাশ টেবিল বা করতে চেষ্টা করে অথবা কিছু তথ্য গঠন ব্যবহার করে.
আপনি এমন একটি বানান পরীক্ষক লেখা হবে, এবং সেটি আপনি এই অভিধান ব্যবহার করা হবে কি সেটা চলুন.
কিন্তু এই সমস্যার জন্য, আমরা আপ যদি একটি একক শব্দ অভিধানে দেখুন চেহারা হয় না.
সুতরাং পরিবর্তে কিছু তথ্য কাঠামো সম্পূর্ণ অভিধান সংরক্ষণ
এবং তারপর একটি সম্পূর্ণ নথি উপর যদি কিছু misspelled দেখতে খুঁজছেন,
আমরা শুধু 1 শব্দ খুঁজতে চান. সুতরাং আমরা স্ক্যান সম্পূর্ণ অভিধান উপর পারেন
এবং যদি আমরা সমগ্র অভিধানে শব্দ খুঁজে না, তারপর সেখানে ছিল না.
যদি সমগ্র অভিধান উপর আমরা এবং স্ক্যান শব্দ দেখতে না তারপর, আমরা ভাল, আমরা এটি পাওয়া গেছে.
এখানে বলছেন যে আমরা সি এর ফাইল নিয়ন্ত্রণ ফাংশন এ খুঁজছেন শুরু করতে চান,
যেহেতু আমরা অভিধান পড়তে চান,
কিন্তু আমি বুঝতে পারি যে ফাংশন আপনি মনে উচিত হিসাবে ইংগিত এখানে দিতে হবে.
আমি শূন্যস্থানের সেগুলি লিখতে হবে.
তাই প্রধান বেশী হয় চ খোলা এবং তারপর অবশ্যম্ভাবী,, চ বন্ধ তাকান আপনি করতে চাইবেন,
যা আপনার প্রোগ্রাম শেষে, এবং যান চ স্ক্যান চ হবে.
এছাড়াও আপনি ব্যবহার চ পড়া, কিন্তু পারে আপনি সম্ভবত না চান
কারণ যে - আপনি যে প্রয়োজন না শেষ.
ফল স্ক্যান চ কি করা অভিধান স্ক্যান উপর ব্যবহার করে যাচ্ছেন.
এবং তাই আপনার সমাধান কোড আপ না, প্রয়োজন শুধু আপনার চেষ্টা উপায় ছদ্ম - কোড চাই
একটি সমাধান, এবং তারপর আমরা আলোচনা করব.
এবং প্রকৃতপক্ষে, যেহেতু ইতিমধ্যে আমি আপনাকে এই দিয়েছেন, যদি আপনার কোন টার্মিনাল অথবা আপনার প্রয়োগ এর শেলে যান,
আমি চাই - আমি সাধারণত - আপনি যদি এখনো দেখা যায় না, আমি যদি আপনি বর্গ করেছিল জানি না,
কিন্তু মানুষ, তাই man পৃষ্ঠা, আছে কাছাকাছি কোন ফাংশন এ খুঁজছেন জন্য দরকারী প্রশংসনীয়.
সুতরাং আমি, চাই না মানুষ চ,, স্ক্যান করতে পারেন চ.
এটি এখন স্ক্যান কর্ম চ পরিবার সম্পর্কে তথ্য.
আমি মানুষ চ, খোলা, না পারে এবং যে যে সম্পর্কে বিস্তারিত দেব.
সুতরাং যদি আপনি কি জানেন যে আপনি ফাংশন, কোড ব্যবহার করে বা আপনি করছি পড়া হয়
এবং আপনি কিছু ফাংশন দেখতে এবং আপনি ভালো, "এই কি করবেন না?"
মানুষের যে ফাংশন নাম.
অদ্ভুত উদাহরণ কয়েক যেখানে আপনি বলতে হতে পারে
. পছন্দ যে ফাংশন নাম, বা মানুষের যে 3 ফাংশন নাম, মানুষ 2
কিন্তু আপনি যদি শুধুমাত্র যে ব্যক্তি ফাংশন নামের প্রথম সময় কাজ না ঘটবে না.
[ছাত্র] সুতরাং আমি খোলা জন্য man পৃষ্ঠা পড়া করছি, কিন্তু আমি এটা কিভাবে এবং প্রোগ্রাম ব্যবহার করছি এখনও বিভ্রান্ত.
ঠিক আছে. Man পৃষ্ঠাগুলি অনেক সহায়ক হয় কম.
এগুলি আরো সহায়ক যদি ইতিমধ্যে তারা কি জানেন না
এবং তারপরে আপনি আর্গুমেন্ট বা কিছু ক্রম মনে রাখা প্রয়োজন মাত্র.
অথবা তারা একটি সাধারণ ওভারভিউ দিতে, কিন্তু তাদের কিছু খুব অপ্রতিরোধ্য পারেন.
ভালো লেগেছে চ স্ক্যান চ, এছাড়াও. এটি আপনাকে এই ফাংশন জন্য সমস্ত তথ্য আপনি,
এবং নিচে 1 লাইন এখানে বলতে হবে, "ফল স্ক্যান চ স্ট্রিং বিন্দু বা প্রবাহ থেকে সার্চ."
কিন্তু খুলুন এব চ. সুতরাং, আমরা কীভাবে ব্যবহার চ খোলা হবে?
একটি প্রোগ্রাম যা ফাইল প্রয়োজন কি ধারণা, I / O হল
আপনাকে প্রথমে আপনি যে ফাইলটি যাও জিনিষ সঙ্গে কাজ করতে চান খোলার প্রয়োজন, এবং অবশ্যম্ভাবী,
যে ফাইল থেকে জিনিষ পড়া এবং তাদের সাথে স্টাফ না.
ফল খোলা কি আমরা ফাইল খোলার জন্য ব্যবহার.
জিনিস আমরা ফিরে পেতে, তাই কি ফাইল আমরা খুলতে চান না, এটি আপনাকে আমাদের -
এটি এখানে বলছেন "/ ব্যবহারকারী / ভাগ / অভি / শব্দ."
এই ফাইলটি যে আমরা খুলতে চাই, এবং আমরা খুলতে চাই -
আমরা স্পষ্টভাবে কিনা আমরা তা বা পড়তে হয় যদি আমরা খুলতে চান তা লিখুন খুলতে চান উল্লেখ আছে.
সমন্বয় এবং পণ্যদ্রব্য একটি দম্পতি আছে, কিন্তু আমরা পড়ার জন্য এই খুলতে চাই.
আমরা ফাইল থেকে পড়তে চাই.
কি আছে এই রিটার্ন? এটি একটি ফাইল তারকা (*) ফেরৎ,
এবং আমি ঠিক পরিবর্তনশীল চ সবকিছুই, যাতে * দেখাব,
আবার, যে এটা একটা পয়েন্টার, পয়েন্টার কিন্তু আমরা মোকাবেলা করতে চান.
আপনি f এর হিসাবে, চ এখন পরিবর্তনশীল আপনি ফাইলটি প্রতিনিধিত্ব ব্যবহার চলুন মনে করতে পারেন.
তাই আপনি যদি ফাইল থেকে পড়তে চান, তাহলে চ থেকে পড়া.
আপনি যদি ফাইল বন্ধ করতে চান, আপনি চ বন্ধ.
সুতরাং প্রোগ্রাম শেষে যখন আমরা অবশ্যম্ভাবীরূপে ফাইল বন্ধ করতে চান, আমরা কি করা উচিত?
আমরা চ বন্ধ করতে চান.
তাই এখন শেষ ফাইলটি যে আমরা ফাংশন ব্যবহার করতে চান সেটি চালু স্ক্যান চ, চ স্ক্যান চ.
এবং কি যে আছে এটা ফাইলটি একটি প্যাটার্ন মেলা খুঁজছেন উপর স্ক্যান করা হবে.
মানুষ এখানে পৃষ্ঠায় দেখার জন্যে, আমরা int চ স্ক্যান চ দেখতে, এখন বিনিময়ে মান উপেক্ষা করা.
প্রথম যুক্তি হল ফাইলটি * স্ট্রিম, তাই প্রথম যুক্তি আমরা প্রেরণ করতে ইচ্ছুক যাচ্ছে সেটি চ.
আমরা চ উপর স্ক্যানিং করছি.
দ্বিতীয় যুক্তি হল বিন্যাসে একটি পংক্তি.
আমি একটি ফরম্যাট স্ট্রিং অধিকার আপনাকে দিতে হবে এখন.
আমি মনে করি আমরা যাও 127s \ n, যে এর অপ্রয়োজনীয় অনেক বলে, এরকম.
কি যে বিন্যাসে স্ট্রিংটি ধারণা, আপনার স্ক্যান চ প্রিন্ট চ বিপরীত হিসাবে মনে করতে পারেন.
সুতরাং মুদ্রণ চ, মুদ্রণ চ আমরা বিন্যাসে পরামিতি এই ধরনের ব্যবহার,
কিন্তু আমরা কি করছেন মুদ্রণ চ হয় - এর একটি সমতুল্য যাক.
তাই চ, মুদ্রণ এবং এর আসলে সেখানে এছাড়াও চ মুদ্রণ চ, যেখানে প্রথম আর্গুমেন্টের চ হবে.
আপনি যখন চ মুদ্রণ, আমরা এরকম কিছু একটা বলবে "মুদ্রণ 127s \ n" পারে এবং তারপর যদি আমরা কিছু স্ট্রিং পাস করে,
এটি এই স্ট্রিং এবং তারপর একটি নতুন লাইন প্রিন্ট হচ্ছে.
127 মানে কি, আমি নিশ্চিত প্রশংসনীয়, কিন্তু আমি নিজেই করেছি সীমিত তা না,
এমনকি আপনি মুদ্রণ চ মধ্যে '127 'বলার প্রয়োজন হবে না,
কিন্তু এটি কি মানে প্রথম 127 অক্ষর প্রিন্ট হয়.
তাই আমি সুন্দর করে নিশ্চিত করুন যে এর ক্ষেত্রে. আপনি যে জন্য Google-পারেন.
কিন্তু আমি পরের এক আছি প্রায় ইতিবাচক এটা মানে হল.
তাই এই প্রথম 127 টি অক্ষর, একটি নতুন লাইন অনুসরণ মুদ্রণ.
ফল স্ক্যান চ এখন, পরিবর্তে খুঁজছি একটি পরিবর্তনশীল সময়ে এবং এটা মুদ্রণ,
এটি কিছু স্ট্রিং এ, যাও চেহারা এবং পরিবর্তনশীল মধ্যে প্যাটার্ন সংরক্ষণ করে যাচ্ছে.
চলুন আসলে একটি পৃথক উদাহরণে, স্ক্যান চ ব্যবহার.
সুতরাং আসুন আমরা বলতে কিছু ছিল int, x = 4,
এবং আমরা একটি স্ট্রিং তৈরি তৈরী করতে চান - যাও স্ট্রিং তৈরী করতে চান
যে মত ছিল, এই পর্যন্ত অনেক পরে আসবে,
কিছু ঠিক মত 4.jpg যে.
সুতরাং এই একটি প্রোগ্রাম যেখানে আপনি সমষ্টি পাল্টা থাকবে হতে পারে,
তোমার মোকাবেলায় যোগফল, এবং আপনি একটি ইমেজ গুচ্ছ সংরক্ষণ করতে চান.
সুতরাং আপনি i.jpg, যেখানে আমি আপনার লুপ কিছু পুনরাবৃত্তির সংরক্ষণ করতে চান.
তাই কিভাবে আমরা যে কোন JPEG জন্য এই স্ট্রিংটি করে?
আপনি যদি 4.jpg মুদ্রণ চেয়েছিল, আমরা শুধু মুদ্রণ চ,% d.jpg বলতে পারে,
এবং তারপর এটি যে কোন JPEG জন্য প্রিন্ট হবে.
কিন্তু যদি আমরা স্ট্রিং 4.jpg সংরক্ষণ করতে চান, আমরা স্ক্যান চ ব্যবহার.
তাই স্ট্রিং গুলি - আসলে আমরা can't - চরিত্র, গৃহস্থালির কাজ গুলি, যাক এর 100 যান.
তাই আমি শুধু 100 অক্ষরের কিছু অ্যারের ঘোষণা,
এবং যে কি অবশ্যম্ভাবী আমরা চলুন যে কোন JPEG ইন সংরক্ষণ করা হবে
তাই আমরা স্ক্যান চ ব্যবহার করতে যাচ্ছে, এবং সেটি বিন্যাস, কিভাবে আমরা% d.jpg বলতে হবে
যাতে 4.jpg প্রিন্ট, এই বিন্যাস যাও% d.jpg হবে.
সুতরাং বিন্যাস হল% d.jpg, আমরা সঙ্গে% ঘ প্রতিস্থাপন করতে চান হল x,
এবং এখন আমরা কোথাও যে পংক্তিটি সংরক্ষণ প্রয়োজন.
এবং অ্যারের মধ্যে গুলি যেখানে আমরা এই পংক্তিটি সংরক্ষণ চলুন হয়.
তাই পরে কোড, গুলি এই লাইন, যদি আমরা চ, পরিবর্তনশীল s এর% s মুদ্রণ,
এটা 4.jpg মুদ্রণ যাচ্ছে.
তাই চ স্ক্যান চ হয় এখন এটা এই ফাইলটি এর উপর খুঁজছেন ছাড়া স্ক্যান চ হিসাবে একই,
কি জন্য গুলি সঞ্চয় যাও.
যে এর কি শেষ আর্গুমেন্টের হবে.
বিন্যাস অনুযায়ী উভয় হিসাবে নীচের চেষ্টা মধ্যে "স্ক্যান ফাংশন স্ক্যান চ পরিবার - আমরা ধারণ করতে চান.
যদি কোনো অবস্থান পয়েন্ট মধ্যে সংরক্ষিত হয় প্রত্যাবর্তন করতে পারে - "
না, আমরা ভাল হতে পারে. আমাকে একটি দ্বিতীয় জন্য মনে করি.
তাই স্ক্যান চ আছে না - কি নরক হয় ফাংশন যা আছে?
তাই স্ক্যান চ একটি পূর্ণসংখ্যা এবং নিতে বিন্দু jpg করতে হবে না.
এটা [mumbles] যাও যাচ্ছে.
স্ট্রিং int-সি মধ্যে int-পরিবর্তনশীল সংরক্ষণ করুন
এই পরিবর্তনশীল কি, বা কি হয় এই ফাংশন হয়?
হ্যাঁ. That's - হ্যাঁ. তাই আগে কি আমি আপনার সংজ্ঞা ছিল গুলি মুদ্রণ চ,
যা - যে আরো অনেক অনুভূতি, কেন আমি আগেই বলেছি এটা ছিল মুদ্রণ চ মত আরো অনেক কিছু করে তোলে.
স্ক্যান চ এখনও ভালো মুদ্রণ চ ধরনের, কিন্তু গুলি মুদ্রণ চ এটি উপর স্ক্যান হবে
এবং ভেরিয়েবল এবং প্রতিস্থাপন এখন একটি স্ট্রিং তা সঞ্চয়.
এর পরিবর্তে এটি মুদ্রণ করুন, এটি একটি স্ট্রিং এটা সঞ্চয় করে.
যাতে সম্পূর্ণভাবে উপেক্ষা করুন. আপনি এখনও বিন্যাসে specifier মত মুদ্রণ চ যে হিসাবে মনে করতে পারেন.
সুতরাং এখন, যদি আমরা 4.jpg জিনিস করতে চেয়েছিল, আমরা গুলি মুদ্রণ চ করবেন, এই এক্স হবে.
তাই স্ক্যান চ করছে - কি ছিল আপনার প্রশ্ন হতে যাচ্ছে?
[ছাত্র] আমি কি আমরা অধিকার এখানে করতে চেষ্টা করছেন মাত্র করছি বিভ্রান্ত
যে কোন JPEG. যে 1 আরো সময় আপনি ব্যাখ্যা করতে পারেন?
তাই এই ছিল - এটা চ স্ক্যান চ এখন কম relevent; আশা, এটা কি ধরনের কিছু গিঁট ফিরে হবে.
তবে কি আমি প্রথমে দেখাতে ইচ্ছুক ছিল - এই আসলে এই [সরাসরি প্রাসঙ্গিক? F5]
আপনি গুলি মুদ্রণ চ ব্যবহার করা হবে যেখানে যাচ্ছেন,, বলে আমরা 100 ইমেজ উপস্থিত আছে,
এবং আপনি ইমেজ 1.jpg, 2.jpg, 3.jpg পড়তে চাই.
তাই যাতে না, আপনি চ খোলা প্রয়োজন, এবং তারপর আপনি স্ট্রিংটি আপনাকে খুলতে চান মধ্যে পাস করতে হবে.
তাই আমরা 1.jpg খুলতে চায়; যাতে স্ট্রিং যা 1.jpg তৈরি,
আমরা গুলি% প্রিন্ট চ d.jpg-আমরা int i = 0 জন্য করবেন না.
তোমার <40, তোমার +.
সুতরাং গুলি মুদ্রণ চ% তোমার মধ্যে d.jpg.
তাই এই লাইন পরে এখন, পরিবর্তনশীল বা অ্যারের গুলি 1.jpg যাচ্ছে.
অথবা, 0.jpg, 1.jpg, 2.jpg. এবং তাই আমরা ঘুরে খুলুন, পড়ার জন্য প্রতিটি ইমেজ, করতে পারেন.
সুতরাং যে কি গুলি মুদ্রণ চ আছে. আপনি কি দেখতে কি গুলি মুদ্রণ চ এখন করছে?
[ছাত্র] ঠিক আছে, তাই এটি গ্রহণ এর - এটি একটি স্ট্রিং তৈরি, something.jpg, তারপর দোকানে.
হ্যাঁ. এটা তৈরি - এই শুধুমাত্র স্ক্যান চ এবং মুদ্রণ চ মত আরেকটি বিন্যাসে স্ট্রিং,
যেখানে এটি দ্বিতীয় যুক্তি ভেরিয়েবলের মধ্যে সমস্ত টিপে, গুলি হিসাবে তোমার বিরোধিতা হতে পারে.
সম্ভবত - আমি বলতে চাচ্ছি, যে ক্ষেত্রে. কিন্তু যাহা আর্গুমেন্ট অর্ডার.
এটি ফরম্যাট স্ট্রিং ভেরিয়েবলের মধ্যে সব সন্নিবেশ যাচ্ছে
এবং তারপর আমাদের বাফারের মধ্যে সংরক্ষণ; আমরা যে একটি বাফার, এটা যেখানে আমরা পংক্তিটি সংরক্ষণ করছেন.
তাই আমরা ভেতরে গুলি সংরক্ষণ সঠিকভাবে-ফরম্যাট স্ট্রিং% ঘ 4 সাথে থাকার পুনঃস্থাপিত হয়.
[ছাত্র] সুতরাং যদি আমরা এই কি, পরিবর্তনশীল চ করছি করা reassigned যাও?
হ্যাঁ. সুতরাং আমরা এই কাজ করার আগে মূল চ বন্ধ করা উচিত.
কিন্তু - তারপর এবং এছাড়াও, যদি হয় একটি চ আপ এখানে খোলা না থাকে, তাহলে আমরা বলতে হবে -
হাঁ. কিন্তু এটি একটি শত বিভিন্ন ফাইল খুলতে হবে.
ঠিক আছে - [ছাত্র] কিন্তু আমরা বা অ্যাক্সেস করতে সক্ষম হবে না.
ঠিক আছে. তাই স্ক্যান চ, চ স্ক্যান চ, একই ধরণের ধারণা,
কিন্তু পরিবর্তে, এর পরিবর্তে একটি স্ট্রিং মধ্যে এটি সংরক্ষণ, এটি আরো আপনি এখন আছেন মত
যাচ্ছে একটি দংশন এবং প্যাটার্ন স্ট্রিং বিরুদ্ধে মেলা উপর এবং ভেরিয়েবলের মধ্যে সংরক্ষণ ফলাফল.
আপনি ভালো কিছু 4.jpg উপর, যাও পার্স এবং সমষ্টি int x এর মধ্যে পূর্ণসংখ্যা 4 সঞ্চয় স্ক্যান চ ব্যবহার করতে পারেন.
আমরা স্ক্যান চ জন্য ব্যবহার করতে পারেন.
ফল স্ক্যান চ কমান্ড লাইনে যে কি হবে.
আমি আসলে নিশ্চিত নই চমত্কার এই কি CS50 লাইব্রেরি আছে.
সুতরাং যখন আপনি বলে, "int-পেতে," এটি উপর এর স্ক্যান চ-ing - স্ক্যান চ এভাবে আপনি ব্যবহারকারীর ইনপুট পেতে.
ফল স্ক্যান চ একই জিনিস করে যাচ্ছে কিন্তু একটি ফাইল পুনরায় স্ক্যান ব্যবহার করা হয়.
এখানে তাই, আমরা এই ফাইলটি মাধ্যমে স্ক্যানিং করা হয়.
প্যাটার্ন আমরা মেলে চেষ্টা করা হয় কিছু পংক্তি, যা 127 টি অক্ষর দীর্ঘ
একটি নতুন লাইন অনুসরণ
তাই আমি নিশ্চিত প্রশংসনীয় আমরা কেবল বলতে পারে মধ্যে অভিধান থেকে "গুলি মেলে,"
আমরা আছে এরকম, আমরা কোন শব্দ হয় যে দীর্ঘ নিশ্চিত করছি,
এবং এছাড়াও চ স্ক্যান চ, আমি মনে করি, নতুন লাইনে কোন ব্যাপার কি থামাতে হবে.
কিন্তু আমরা ম্যাচের জন্য নতুন লাইন অন্তর্ভুক্ত, এবং করব -
[ছাত্র] যদি আমরা নতুন লাইন অন্তর্ভুক্ত ছিল না, এটি একটি শব্দ অংশ খুঁজে পেতে চাই?
এটা - প্রতিটি - অভিধান এ খুঁজছেন -
সুতরাং অভিধানে, এই হল আমাদের সব শব্দের.
প্রতিটি এক একটি নতুন লাইন হয়.
স্ক্যান চ এই শব্দ চয়ন করতে যাচ্ছে.
যদি আমরা নতুন লাইন অন্তর্ভুক্ত না করেন তাহলে, এটি সম্ভব যে পরবর্তী স্ক্যান চ শুধুমাত্র নতুন লাইন পড়তে হবে.
কিন্তু তারপর সহ নতুন লাইন নতুন লাইন মাত্র উপেক্ষা করা হবে.
কিন্তু আমরা একটি শব্দ অংশ পেতে না থেকে আমরা সবসময়ই নতুন লাইন আপ করা হয় পড়া কোনো ব্যাপার নয়, করব.
[ছাত্র] কিন্তু কি যদি আপনি শব্দ "cissa," cissa ভালো জন্য অনুসন্ধান.
এটা পাবেন, এবং বলতে হবে যে এটা একটা মিল?
তাই আমরা এখানে - এটা পড়তে হবে - এই প্রকৃতপক্ষে একটি ভাল পয়েন্ট.
আমরা বর্তমান ব্যবহার করছেন না - শব্দ আমরা খুঁজছেন সেটি প্রথম কমান্ড লাইন আর্গুমেন্ট.
তাই স্ট্রিং, শব্দ argv = 1.
সুতরাং আমরা স্ট্রিং খুঁজছেন সেটি argv 1.
আমরা আমাদের স্ক্যান চ সকল একটি শব্দ খুঁজছি হয় না.
আমরা কি স্ক্যান চ সঙ্গে কাজ ছিল অভিধানে হয় প্রতিটি শব্দ পেয়ে,
এবং একবার তারপর আমরা যে শব্দ আমরা strcmp তাদের তুলনা ব্যবহার চলুন আছে.
আমরা আমাদের শব্দ তুলনা যাচ্ছে এবং কি আমরা এখনো সদস্য না হয়ে পড়া করছি
সুতরাং অবশ্যম্ভাবী, আমরা শেষ পর্যন্ত স্ক্যান fs লেখা একটি গুচ্ছ করছেন চলুন
পর্যন্ত শুধু তাই যে স্ক্যান চ ফিরে আসবে -
এটি একটি ফিরে, যতদিন না পর্যন্ত এটি একটি নতুন শব্দ মিলেছে করেনি হবে,
এবং এটা অন্য কিছু ফিরে যত তাড়াতাড়ি এটা শব্দ মেলে ব্যর্থ হয়েছে হবে.
আমরা সমগ্র অভিধান উপর পড়া পাতিপাতি সংরক্ষণকারী পরিবর্তনশীল গুলি মধ্যে প্রতিটি শব্দ হয়.
তারপর আমরা s-এর সাথে তুলনা করে শব্দ হয়, এবং যদি তুলনা == 0,
strcmp যাও 0 যদি কোনো মিল হয়েছিল আনা হবে.
তাই আপনি যদি এটি ছিল 0 তারপর, আমরা চ মুদ্রণ করতে পারেন, মিলেছে,
বা অভিধানে শব্দটি হল, বা যাই হোক না কেন আপনি চ মুদ্রণ করতে চান.
এবং তারপর - আমরা চ উপর বন্ধ করুন এবং পুনরায় জুড়ে দিতে চান না.
এই ধরনের জিনিস আমরা যেতে চাই, এবং আমরা ঠিক হচ্ছে অভিধানে শব্দ জন্য না.
সুতরাং আমরা যে, যদি আমরা তাদের প্যাটার্ন, cissa জন্য সন্ধান করতে চেয়েছিলাম, পারিনি ভালো আপনি বলেন আগে,
যদি আমরা যে প্যাটার্ন জন্য চেহারা চেয়েছিলেন, তারপর ক্ষেত্রে কর্ম ব্যর্থ হবে
কারণ এটা আসলে একটি শব্দ, না কিন্তু অভিধান শব্দের মধ্যে যে এক তা আছে এরকম.
সুতরাং এই শব্দ মেলে, কিন্তু এই শব্দের সাবসেট একটি শব্দ নিজেই করবে না.
কিন্তু যে কীভাবে আমরা এটি ব্যবহার করছেন না; আমরা প্রতিটি শব্দ পড়ি
এবং তারপর শব্দ আমরা যে শব্দ সাথে তুলনা আছে.
তাই আমরা সবসময়ই পূর্ণ শব্দ তুলনা করছেন.
আমি চূড়ান্ত সমাধান আউট পরে পাঠাতে পারেন.
এটি প্রায় সঠিক উত্তরটি মত, আমি মনে করি.
[ছাত্র মন্তব্য নেই, অপাচ্য]
ওহ, আমি যে পরিত্রাণ পাইনি আগে? চর গুলি, আমি অনুমান আমরা 127 বলেন - আমি ভুলে গেলে কি বৃহত্তম.
আমরা মাত্র 128 করব; তাই এখন গুলি দীর্ঘ যথেষ্ট.
আমরা কিছু প্রিন্ট করার প্রয়োজন হবে না.
আমরা করছি যাও যাও যাও আমাদের ফাইল বন্ধ করা আছে সেটি হচ্ছে, এবং যে সঠিক উত্তরটি সম্পর্কে হওয়া উচিত.
CS50.TV