[Powered by Google Translate] [هفته 7]
[دیوید J. مالان - دانشگاه هاروارد]
[این CS50 است. - CS50.TV]
بسیار خوب. خوش آمدید. این CS50 است، و این است که شروع هفته 7.
به چند اطلاعیه های کوچک:
Pset5 است که در حال حاضر در حال پیشرفت است، و یا به زودی خواهد بود،
و اجازه دهید به من می گویند، کاملا صادقانه، این تمایل به در میان بیشتر به چالش کشیدن باشد
مجموعه های مشکل این دوره، پس اجازه دهید من ذکر این در حال حاضر
به طوری که این هفته بیش از هر زمان شما منتظر بمانید تا نیست، می گویند، چهارشنبه شب
یا پنجشنبه شب به شیرجه رفتن.
این است که قطعا جالب توجه pset. ما فکر می کنیم آن را سرگرم کننده است.
اگر شما در واقع آن را به طور کامل درست است و می تواند پس از آن به چالش هیئت مدیره به اصطلاح بزرگ،
شما یک فرصت برای مطابقت با عقل با برخی از کارکنان دوره
و برخی از همکلاسی های شما.
هیئت بزرگ است این است که هنگامی که شما غلط گیر املا کار خود را،
شما قادر خواهید بود برای رفتن به cs50.net پس از یک فرمان در حال اجرا،
صرفا انتخاب کردن، و پس از آن مقدار زمان و مقدار RAM و بیشتر
که شما را در اجرای خود را مورد استفاده قرار خواهد شد بر روی صفحه اصلی این دوره به نمایش گذاشته شده است.
شما متوجه خواهید شد که تمام یک دسته از این مردمی که در اینجا به عنوان کارکنان ذکر شده است
از آنجا که در طول تعطیلات آخر هفته، کارکنان فکر کردم این امر می تواند سرگرم کننده را امتحان کنید به شکست دادن یکدیگر.
به طوری که هدف در اینجا این است که برای شکست دادن کارکنان تحقق بخشند.
حتی من در اینجا در شماره 13.
صرفا در انتخاب کردن، اما این فرصت برای دیدن فقط کمی RAM
و چگونه چند ثانیه CPU شما می توانید در مقابل یک برابر برخی از همکلاسی های خود استفاده کنید.
>> و من که کوین مایکل Schmid در اعتراف،
در حال حاضر در شماره 1 و موقعیت به عنوان یکی از TFS،
این پیاده سازی است که ما به آن امکان پذیر نیست
با توجه به این که او را با استفاده از تقریبا 0 RAM و تقریبا 0 ثانیه برای بارگذاری.
بنابراین ما باید مراقبت از آفلاین کوین کنند. [خنده]
مهارت های خاصی است که کوین قرار دادن به آزمون در اینجا وجود دارد.
یکی از چیزهایی که ما فکر می کنیم می خواهم انجام بیش از حد است که در حال حاضر CS50x است یک هفته در حال پیشرفت است،
و شما بچه ها به عنوان بخشی از این آزمایش به عنوان کسانی که دانش آموزان هستند.
ما آنها را به عنوان بخشی از pset0 خود را خواسته بود که به همین ترتیب برای ارائه یک پروژه ابتدا
علاقه به آنها - بازی، قطعه تعاملی هنر، انیمیشن، و یا مانند -
1 - ویدئو 2 دقیقه ای، اگر آنها می خواهم، گفت: سلام به جهان است و کسی که آنها واقع می شوند.
من فکر کردم من می خواهم با شما در میان بگذارم فقط یک زن و شوهر از فیلم ها ارائه شده اند که تا کنون
چرا که برای ما، در هیات حداقل، آن را واقعا بوده است هیجان انگیز
و الهام بخش برای دیدن این مردمی از سراسر جهان - کشور در سراسر جهان -
تنظیم، از همه چیز، به یک دوره علوم کامپیوتر در اینترنت،
که آیا به این دلیل است که آنها می خواهند برای ادامه مطالعات خود را،
آنها می خواهند را به فرصت های شغلی خود را در یک مسیر جدید،
آنها می خواهند که در شکاف ها در دانش خود را شروع کرد به پر کردن آن،
به طوری که بعضی از همان دلایلی که شما بچه ها شاید اینجا بوده است.
>> پس من به شما یک دانش آموز را در اینجا. شما می توانید افزایش حجم فقط یک کمی.
در اینجا است که یکی از دانش آموزان ما 1 دقیقه ارسالی است.
خوش آمدید، جهان است. من یک دانشجوی مهندسی صنعتی در مالاگا، اسپانیا.
من در مورد این دوره آنلاین بسیار هیجان زده هستم چرا که من عاشق علم کامپیوتر، من واقعا نمی،
و من واقعا قدردانی است که من به آن پرداخت.
و این واقعیت که من می توانم همه شما بچه ها را یاد بگیرند
اما به جای این که در دانشگاه هاروارد من در مالاگا هستم، چگونه جذاب است؟
خب، من فرناندو، و این CS50. شما بچه ها را ببینید.
[خنده] یکی دیگر از کلیپ ما به خصوص "دوست دارم، شما که انگلیسی این آقایان آنقدر قوی نیست.
به نظر می رسد که او آن را به حال ماشین ترجمه، ترجمه خود را کمی ناقص است،
اما این یکی از مورد علاقه ما بود تا کنون و همچنین.
[♪ ♪]
خوش آمدید، جهان است. [صحبت کردن در زبان ژاپنی]
[I در ژاپن خوش آمد می گوید چون انگلیسی من بسیار غیر قابل اعتماد است.]
[من این پیام را از شهر گیفو، ژاپن به شما تحویل داده می شود.]
[I می تواند به دانش آموز برای اولین بار در 20 سال گذشته، به عنوان دیده می شود.]
[من بسیار سپاسگزار به دانشگاه هاروارد که به من این فرصت و EDX.]
[گلف گیتار است و چیزی که مورد علاقه من در حال اجرا است.] [خنده]
[♪ ♪]
چرا شما فکر می کنم من در تلاش بود برای شرکت در cs50x.]
[دانشگاه هاروارد، این آرزوی من است.]
به ویژه اگر حضور از راه دور من در ژاپن زندگی می کردند.]
[من می خواستم سعی کنید بلافاصله پس از آگاهی از وجود چنین EDX وقتی که.]
[آیا شما فکر می کنم تا شما به سن یادگیری I.]
[cs50 اشتیاق من است. نام من Kazu است، و این cs50.]
[♪ ♪] [کف زدن و تشویق]
یکی دیگر از مورد علاقه ما ارسال مقاله در اینجا از کسی بود.
[♪ ♪] [مالان] گوگل آن را اگر شما با این الگوی رفتاری نا آشنا هستیم.
>> و پس از آن در نهایت، یک زن و شوهر از دیگران است که که شاید برنده شدن جایزه شایستگی کردم.
[دانش آموزان] وای! >> [مالان] ما باید به گوش کند. این کوتاه است، به طوری که نزدیک گوش دهید.
[زن سخنران] نام شما؟ >> لویی.
[زن سخنران این چیست؟ >> [giggles] CS50. [خنده]
[مالان] او دو طول می کشد، هر چند.
در اینجا ما به گذشته است.
نام من لویی است، و این CS50.
[خنده] پس از آن CS50x است.
تشکر کرده اند از شما را به همه کسانی که از شما در حالی که به دنبال همراه در خانه
شده اند که گروهی تا کنون.
امروز، ما نتیجه گیری بحث ما از ساختارهای داده ای،
حداقل برخی از اساسی ترین،
و سپس صحبت ما در مورد HTML و برنامه نویسی وب سایت ما ادامه خواهد داد.
در واقع، ما صرف حدود هفت هفته گذشته به دنبال در اصول برنامه نویسی -
الگوریتم، ساختمان داده، و مانند آن -
و C، همانطور که شما ممکن است تجربه کرده اند تا کنون،
است و نه لزوما در دسترس ترین زبان
که با آن به اجرای برخی از این ایده است.
و بنابراین شروع این هفته و هفته آینده و پس از آن به شرح زیر است:
ما در نهایت قادر خواهید بود به انتقال از C است که به طور کلی به عنوان یک زبان نسبتا سطح پایین شناخته شده است،
به همه چیز در سطح بالاتر است، در میان آنها پی اچ پی، جاوا اسکریپت، و مانند آن،
کنیم که رسم بر درس همان است که ما در طول چند هفته گذشته، آموخته ها را ببینید.
اما پیدا خواهید کرد که با اعلام چیزهایی مانند آرایه ها و جداول هش و جستجو و مرتب سازی
تبدیل بسیار ساده تر است زیرا به زبان خود، ما را شروع می کنیم با استفاده از
تبدیل شدن به قوی تر.
اما در ابتدا، استفاده از درختان.
این بسیار معمول است این روزها نیاز به فشرده سازی اطلاعات.
در چه زمینه ای می خواهید برای فشرده سازی نوعی از اطلاعات دیجیتال؟
>> آره. >> [دانشجوی] هنگامی که شما نیاز به آن را بر روی وب ارسال.
بله، زمانی که شما می خواهید برای ارسال هر چیزی بر روی وب است.
اگر شما می خواهید برای دانلود فایل های بزرگ، ایده آل اگر کسی در انتهای دیگر
که فایل فشرده با استفاده از فرمت ZIP و یا چیزی شبیه به آن
به طوری که شما در حال ارسال بیت کمتر از در غیر این صورت ممکن است منتقل شده است.
پس چگونه می توانم اطلاعات شما فشرده سازی؟
آن همه جوش پایین با استفاده از بیت کمتر از به طور پیش فرض مورد نیاز است.
اما این نوع از چیزی کنجکاو به این دلیل است که فکر می کنم به هفته های 0 و 1
هنگامی که ما در مورد صحبت ASCII و باینری و ما صحبت در مورد ASCII به طور خاص
با استفاده از 8 بیت برای نشان دادن حروف الفبا
به طوری که این نامه شده توسط 65 نشان داده شده است، کوچک است که شماره 97،
و با این حال شما نشان دهنده 65 یا 97، شما با استفاده از 7 یا 8 بیت است.
اما گرفتن این است که برخی از حروف در الفبای انگلیسی وجود دارد
که به عنوان به عنوان محبوب دیگران نیست.
Z که محبوب نیست، Q است که همه محبوب نیست، اما A و E فوق العاده محبوب است.
و در عین حال برای همه این نامه ها، به طور پیش فرض با استفاده از همان تعداد بیت، فقط 8.
بنابراین آن را نمی دقیق اگر به جای استفاده از 8 بیت برای هر نامه،
حتی بیشتر از به ندرت مانند Q و Z استفاده می شود،
چه می شود اگر ما از بیت های کمتری برای E و S و محبوب ترین نامه استفاده
و بیت های بیشتری برای حروف کمتر محبوب استفاده می شود،
ایده بهینه سازی بیایید برای مشترک،
که موضوع در علوم کامپیوتر در تلاش برای بهینه سازی به چه چیزی اتفاق خواهد افتاد ترین
و صرف زمان کمی بیشتر، کمی فضای بیشتر در چیزهایی است که، آره، ممکن است رخ دهد
اما نه لزوما به عنوان اغلب.
بنابراین به عنوان مثال به شما اجازه می دهد تا.
>> فرض کنید که ما می خواهیم برای رمزگذاری اطلاعات نسبتا موثر است.
شما ممکن است رشد کرده دانستن یک چیزی کمی در مورد کد مورس،
و شانس شما کد واقعی نمی دانم،
اما شما ممکن است به یاد آورید که آن را حداقل در این مجموعه ای از نقطه و خط تیره است.
به عنوان مثال، E - برنامه نویسی نسبتا کارآمد، و توجه داشته باشید که نامه محبوب ترین است -
با استفاده از کوتاهترین بوق.
کد مورس است که همه چیز در مورد بوق، بوق، بوق، بوق، بوق، بوق و برگزاری زنگ
یا برای دوره های کوتاه زمان یا دوره های طولانی از زمان.
E، به عنوان نقطه نشان داده شده است، یک بوق کوتاه فوق العاده، فقط بوق است، و این که می E. نمایندگی
در مقابل، T خواهد بود بوق طولانی تر، مانند بوق [طولانی صدا]
و لازم است که T. نمایندگی
اما این هنوز هم خیلی کوتاه است، زیرا در مقابل، اگر شما در Z
به بیان Z شما می توانید بوق، بوق [دیگر] صدا، بوق، بوق [کوتاهتر صدا].
پس از آن دیگر به دلیل آن کمتر شایع است.
اما مارپیچ این است که کد مورس کمی ناقص است
که در آن بلافاصله decodable نیست.
به عنوان مثال، فرض کنید که شما در برخی از انتهای سیم بوق می شنوید [کوتاه]، بوق طولانی مدت.
چه پیام من فقط؟ یک نقطه و یک فاصله است. چه می کند که نشان دهنده؟
[دانشجوی] A. >> [مالان] شاید.
همچنین می تواند E توسط T.
به عبارت دیگر، کد مورس، هر چند آن از این اصل بهینه سازی در مورد گوشه ای،
آن را نشانی از خود را به decodability فوری قرض دادن نیست.
است، انسانی که در حال شنیدن یا دریافت این نقطه و خط تیره
به نحوی که در آن معافیت بین حروف،
چرا که اگر شما نمی دانید که این معافیت هستند، شما ممکن است برای ET یا بالعکس اشتباه است.
>> بنابراین آنچه که ممکن است به شما انجام دهم؟ در کد مورس به شما فقط می تواند بین هر یک از حروف تامل است.
اما توقف نوع مقابله با نقطه تمام سرعت تا چیز است.
پس چه می شود اگر در عوض ما با یک کد آمد که در آن این وضعیت بد وجود ندارد
که در آن E یک پیشوند است، به عنوان مثال، از -
به عبارت دیگر، اگر ما می تواند مطمئن شوید که الگوهای هنوز کوتاه برای نامه های مردمی
طولانی حروف کمتر محبوب است، اما هیچ سردرگمی وجود دارد؟
مردی به نام هافمن سال پیش اختراع این طرح به نام کدگذاری هافمن
که در واقع اهرم یکی از ساختارهای داده ایم صرف کمی وقت صحبت کردن در مورد
هفته گذشته، که از درختان، درختان دودویی به طور خاص -
یک درخت دودویی به معنی آن است که بیش از 2 فرزند است.
این شاید یک کودک سمت چپ، شاید یک کودک سمت راست، و این آن است.
پس فقط به خاطر بحث فرض کنید که کسی که می خواهد برای ارسال پیام
که به نظر می رسد شبیه به این. این مزخرف کامل است، اما آن را از به عنوان تشکیل شده، BS، CS، DS، و بنیادی است.
و اگر شما در واقع شمارش به عنوان کارشناس، CS، DS، و Es
و سپس با تعداد کل حروف تقسیم می شوند،
این نمودار کمی در اینجا می گوید که 45 درصد از نامه ها ES، 20 درصد به عنوان
10 درصد کارشناسی، و غیره.
بنابراین به عبارت دیگر، فرض کنیم که رشته به نقل وجود دارد
فقط برخی از پیام است که شما می خواهید برای ارسال است.
آن اتفاق می افتد مزخرف بنابراین ما می توانیم عنوان نامه چند که ممکن است استفاده از،
اما این در واقع مورد که E محبوب ترین باقی می ماند،
و B و C هستند که کمترین محبوبیت، حداقل از این 5 حرف از حروف الفبا.
پس چگونه می تواند به ما در مورد آینده را با رمزگذاری،
کدگذاری دودویی، یک الگوی از 0s و 1S برای هر یک از این حروف
به گونه ای که E است که یک الگوی کوتاه و شاید B و C هستند کمی طولانی تر الگوهای،
دوباره، این ایده است که ما می خواهیم به استفاده از کمتر بیت بیشتر از زمان
و چند بیت تنها یک بار در در حالی که.
با توجه به کدگذاری هافمن، شما می توانید جنگل از درختان ایجاد کنید.
مرتب کردن بر اساس یک خط داستان وجود دارد که شامل درختان و همچنین فرایند ساخت آنها را.
اجازه بدهید شروع کنیم.
>> من پیشنهاد می کنم که شما با این جنگل شروع می شود، پس به صحبت می کنند، از 5 درخت،
که هر کدام از آنها در یک درخت بسیار احمقانه است.
درخت تنها یک گره می باشد، در اینجا با یک دایره نشان داده شده تشکیل شده است.
بنابراین هر یک از این چیزها ممکن است یک ساختار C
و در داخل ساختار C ممکن است شناور به نمایندگی از تعداد فرکانس
و پس از آن شاید یک کاراکتر به نمایندگی از نامه.
پس از این گره فقط به عنوان ساختار قدیمی C فکر می کنم اما، در حال حاضر، سطح بالاتر است.
این جنگل از 5 درختان، هر یک که فقط یک گره منفرد است.
هافمن پیشنهادی این است که ما شروع به ترکیب آن درختان
که دارای کوچکترین فراوانی به درختان کمی بزرگتر
با اتصال آنها را با یک گره جدید است.
بنابراین در میان حروف که در اینجا، توجه کنید که برای راحتی من آنها را از چپ به راست مرتب شده اند،
هر چند که به شدت لازم است، و متوجه نیست که کوچکترین گره
در حال حاضر 10٪ و 10٪ است.
بنابراین هافمن پیشنهاد کرد که ما با یکدیگر ادغام می شوند که 2 کوچکترین گره به یک درخت جدید
با معرفی یک گره جدید پدر و مادر و پس از آن که پدر و مادر فرزند چپ و فرزند راست
که در آن B خودسرانه در سمت چپ و C خودسرانه حق است.
و پس از آن هافمن بیشتر پیشنهاد کرد که بیایید فکر می کنم در حال حاضر فقط از فرزند چپ
در یکی از این درختان همیشه توسط 0 نشان داده شده
و فرزند راست همیشه به عنوان شماره 1 نشان داده شده است.
>> مهم نیست که اگر شما آنها را تلنگر تا زمانی که شما سازگار است.
بنابراین در حال حاضر ما دارای چهار درختان در این جنگل است.
و من می گویم 4 چرا که در حال حاضر درخت در سمت چپ -
و آن را بسیار درخت به این معنا که در آن رشد می کند در این راه،
آن را بیشتر شبیه به درخت خانواده که در آن در حال حاضر 0.2 مرتب سازی بر اساس از پدر و مادر دو فرزند -
توجه کنید که در آن پدر و مادر ما کشیده شده ام .2.
ما تعداد فراوانی از دو فرزند است و با توجه به گره جدید مجموع.
بنابراین در حال حاضر ما فقط این روند را تکرار کنید.
پیدا کردن دو کوچکترین گره ها و سپس آنها را به پیوستن به یک درخت جدید
و پس از آن روند را تکرار کنید.
در حال حاضر ما چند نامزدها، 20٪، 15٪، و 20٪ دیگر.
در این مورد، ما باید برای شکستن کراوات. ما می توانیم آن را خودسرانه انجام دهد.
ما فقط باید آن را به طور مداوم انجام دهید.
در این مورد، من خودسرانه را با یکی در سمت چپ بروید،
و من در حال حاضر 20٪ و 15٪ به من یک پدر یا مادر جدید به نام 35٪ را ادغام،
که سمت چپ کودک 0 است، که حق کودک است 1، و در حال حاضر ما تنها سه درخت در جنگل است.
شما شاید می تواند که در آن این است که رفتن را ببینید.
اگر ما تکرار این بار زن و شوهر بیشتر، ما در حال رفتن به یک بزرگتر درخت،
همه که لبه ها با 0s و 1S برچسب.
بیایید دوباره آن را انجام دهد.
35٪ ریشه آن درخت است. 20٪ و 45٪ است، بنابراین ما در حال رفتن به ادغام 35٪ و 20٪ است.
در حال حاضر ما این درخت در اینجا. اضافه می کنیم کسانی که با هم، ما 55 درصد است.
در حال حاضر تنها دو درخت در جنگل وجود دارد.
ما این کار را زمان نهایی، و امیدوارم ریاضی تمام فرکانس های
زیرا آنها از ما باید آنها را از محاسبه کنید اضافه کردن به 100٪ است.
و در حال حاضر ما یک درخت.
پس این درخت هافمن برنامه نویسی است.
این نوع از زمان است در حالی که برای رسیدن به آنجا شفاهی است، اما واقعیت این است که با یک حلقه for
و یا با یک تابع بازگشتی، شما می توانید از این چیز بسیار سریع خواهد ساخت.
بنابراین در حال حاضر ما باید یک گره جدید، و همه از این گره درونی malloc'd شده اند،
احتمالا، در طول راه.
بنابراین در حال حاضر در بالای این درخت ما باید 100٪، اما در حال حاضر متوجه ما یک مسیر
از این بزرگ بزرگ بزرگ پدربزرگ و مادر بزرگ بزرگ بزرگ بزرگ نوه
تمام راه را در پایین، به همه از برگ.
>> آنچه ما قصد داریم برای انجام این کار در حال حاضر این است که پیشنهاد می کنند که به منظور نشان دادن حرف E،
ما به سادگی از شماره 1 استفاده کنید. چرا؟
زیرا اگر این درخت به ما گذشتن از ریشه نهایی را به برگ شناخته شده به عنوان E،
ما به دنبال فقط یک لبه، لبه سمت راست، و این البته در 1 بالا سمت راست برچسب.
بنابراین مفهوم در اینجا برای هافمن بود که رمزگذاری E در باینری فقط باید 1.
و این که خیلی لعنتی کارآمد است. واقعا نمی تواند کوچکتر از آن است.
در مقابل، A می شود نشان داده شده است، اگر شما به دنبال منطق،
چه الگوی بیت به جای؟ 01.
بنابراین به یک، ما در ریشه شروع شده و ما به سمت چپ و پس از آن ما به حق،
که به معنی ما به دنبال یک 0 و سپس 1 (یک) است.
بنابراین ما باید این نامه را با الگوی 0 و 1 باشد.
و در حال حاضر متوجه ما در حال حاضر اموال decodability فوری
که ما در کد مورس وجود ندارد.
حتی اگر هر دو از این الگوها خیلی کوتاه - E 1 بیت، A 2 بیت است -
توجه کنید که می توان آنها را به اشتباه یکی یا دیگری،
چرا که اگر شما یک 1 آن باید به E، اگر شما یک 0 و سپس 1 آن را به وضوح رو به A.
به طور مشابه، D چیست؟ 001.
C چیست؟ 0001.
و آنچه که B؟ 0000.
و دوباره، چرا که همه حروف ما در مورد مراقبت در برگ ها
و هیچ یک از آنها نوع واسطه در این مسیر از ریشه به برگ،
هیچ خطر از conflating رمزنگاریهای مختلف 2 حروف وجود دارد
چرا که همه از این الگوهای بیتی قطعی است.
0000 همیشه B. باشد
هیچ گره جایی در میان است که شما ممکن است یک نامه را برای دیگر اشتباه وجود دارد.
پس چه مفهوم در اینجا این است؟
>> محبوب ترین نامه - در این مورد E - و بعد فورا رفت واز کوتاهترین رمزگذاری،
و بعد فورا رفت واز کوتاهترین بعدی را پشتیبانی می کند،
و B و C، که ما در حال حاضر از گرفتن، بروید نوع از محبوب حداقل می دانستند
در فرکانس 10٪ در هر، و بعد فورا رفت واز طولانی ترین رمزگذاری شده است.
و بنابراین، آنچه که این به این معنی در حال حاضر این است که اگر شما می خواهید برای ارسال یک پیام که فشرده
بر روی اینترنت و یا در یک ایمیل و یا مانند آن،
به جای استفاده از ASCII استاندارد، شما می توانید یک پیام هافمن رمزی ارسال
به موجب آن اگر شما می خواهید برای ارسال E نامه، ارسال تنها یک بیت است.
اگر شما می خواهید برای ارسال، شما ارسال 2 بیت، 01، به جای ارسال 8 بیت
و پس از آن یکی دیگر از 8 بیت 8 بیت دیگر و غیره.
اما اینجا یک مارپیچ وجود دارد.
این کافی نیست که فقط ساخت این درخت و سپس شروع به ارسال از آلیس به باب
الگوی کمی کوتاه تر، رشته از ASCII،
چون آلیس نیز برای اطلاع از باب چه
اگر باب خواهد بود قادر به خواندن پیام های فشرده خود را؟
[پاسخ دانش آموز نامفهوم] >> که؟
[پاسخ دانش آموز نامفهوم] >> از چه درخت است.
و یا حتی بیشتر به طور خاص، چه آن رمزگذاری هستند،
به خصوص از آنجا که در طول این داستان ما تماس قضاوت در یک نقطه ساخته شده است.
به یاد داشته باشید که ما تا به حال به انتخاب خودسرانه مختلف بین 2 گره 20٪؟
پس از آن پرونده که باب، گیرنده، فقط می تواند درخت خود را بازسازی
چرا که شاید او درخت را تا کنون کمی متفاوت از آلیس ایجاد کنید.
علاوه بر این، باب حتی نمی دانند آنچه پیام اصلی این است
زیرا تنها چیزی که آلیس او را ارسال، البته، این پیام را فشرده است.
>> بنابراین گرفتن با فشرده سازی شبیه به این است که، بله، آلیس می توانید تعداد زیادی از بیت صرفه جویی
با ارسال 1 E و 01 برای و غیره،
اما او نیز به اطلاع باب نگاشت بین حروف و بیت
چرا که آنها به وضوح نمی تواند تکیه بر فقط ASCII دیگر اگر ما در حال استفاده نمی ASCII.
بنابراین او هم می تواند او را به فرستادن درخت به نوعی -
نوشتن، آن را ذخیره سازی آن را به عنوان داده های باینری و یا چیزی شبیه به آن -
و یا فقط او را کمی ورق بازی، فایل اکسل، نشان می دهد که تعیین است.
بنابراین اثر فشرده سازی واقعا فرض بر این است که پیام هایی که شما ارسال
بسیار بزرگ، حداقل متوسط،
چرا که اگر شما در حال ارسال یک پیام کوتاه فوق العاده،
اگر شما فقط می خواهم به ارسال پیام BAD، که اتفاق می افتد به یک کلمه که ما در اینجا می توانید طلسم،
B-A-D، شما احتمالا به استفاده از بیت کمتر،
اما گرفتن است اگر شما نیز به اطلاع باب چه درخت است
و یا آنچه که آن رمزگذاری هستند، شما در حال رفتن به احتمالا مهمتر تمام پس انداز
از داشتن چیزهایی فشرده برای شروع با.
بنابراین آن را در واقع می تواند مورد است که اگر شما سعی می کنید فشرده سازی
حتی با چیزی شبیه به فرمت های ZIP و یا فایل های شما ممکن است با آن آشنا -
فایل های بسیار کوچک، حتی خالی فایل ها -
گاهی اوقات این فایل ها ممکن است بزرگتر و کوچکتر نیست.
اما در واقع، که تنها برای اندازه فایل کوچک اتفاق می افتد،
پس از آن را به یک فایل گیگابایت 2 گیگابایت؛
ما واقعا صحبت بایت یا کیلوبایت زن و شوهر است.
>> برخی از برنامه ها مانند فایل های فشرده به قدر کافی هوشمند به درک که،
"شما قصد دارید به صرف بیت فشرده سازی این است."
"اجازه بده تا من را خسته نکنید فشرده سازی آن را برای شما در تمام."
بنابراین این تنها یکی از راه های پس از فشرده سازی قالب متن است.
ما می تواند چیزی شبیه به این در C. پیاده سازی
به عنوان مثال، در اینجا این است که چگونه ممکن است یک گره در این درخت باشد
که در آن ما باید یک کاراکتر برای نماد، ارزش شناور فرکانس،
و ما با ساختارهای داده ای دیگر، 2 اشاره گر دیده می شود،
1 به کودک چپ، 1 به سمت راست، یا که می تواند NULL،
اما اگر نه، آن را به فرزند چپ و فرزند راست اشاره دارد.
بنابراین این کدگذاری هافمن است، و آن را یکی از راه های که شما می توانید در مورد فشرده سازی اطلاعات،
و آن را قطعا یکی از مهم ترین آسان به پیاده سازی
در زمینه، می گویند، ساختارهای داده ای در هفته گذشته،
هر چند حتی الگوریتم های پیچیده تر وجود داشته باشد
است که می تواند جهش های حتی پیچیده تر از داده های خود را انجام دهد.
هر گونه سؤال و سپس بر روی درختان، درخت باینری، یا فشرده سازی از متن؟
[دانشجو] برخی از ابهام وجود دارد، اگر [نامفهوم] تقسیم به 01
سپس 011 خواهد بود مبهم، درست است؟
[نامفهوم] >> سوال خوب. ابهام.
اجازه بدهید خلاصه با مراجعه به این تصویر.
از آنجا که شخصیت شما فشرده سازی، نمایندگی،
با تعریف این الگوریتم همیشه برگ باقی می ماند،
شما به طور تصادفی به هرگز با استفاده از الگوی همان بیت برای پیشوند نامه های متعدد است.
بنابراین به عبارت دیگر، شما نگران، آن را مانند، ابهام ناشی برای تلفن های موبایل
به موجب آن 001 ممکن است از شروع B و یا شروع C و یا چیزی شبیه به آن است.
اما این نمی تواند مورد به علت توجه کنید که تمام حروف الفبا ما را پشتیبانی می کند
در برگ هستند.
>> ابهام فقط می توانید در مورد کد مورس بوجود می آیند،
اگر، برای مثال، C در جایی در طول مسیر از ریشه به B. بود
[دانشجو] درست است. بنابراین در این صورت، می گویند دارای 2 برگ است. >> می گویند است - می گویند که دوباره.
[دانشجو] بگو: دارای 2 برگ، F و G و سپس G - >> خوب است. اما این نمی تواند.
خود می تواند برگ F و G زیرا این حروف F و G
خود را در جایی به سمت چپ B یا حق E. برگ
بنابراین تعریف، آنها باید برگ.
در غیر این صورت، شما دقیقا درست است، ما مشکل این است که کد مورس با حل نشده است.
خوب سوال. سوال دیگر؟ بسیار خوب.
این مفهوم بیت، آن را تبدیل کرده ایم به حال انرژی در تمام طول که ما در واقع نه مورد استفاده قرار می گیرد.
هنگامی که آن را به دستکاری و این 0s و 1S آمد.
ما در این مورد در یکی از قدیمیترین مجموعه مشکل پرسید:
یعنی، چگونه می توانم شما را در مورد تبدیل حروف بزرگ به کوچک یا بالعکس؟
یا مشخص تر، یکی از اولین کسانی که psets پرسید:
چگونه بسیاری از بیت شما در واقع به منظور تغییر و یا بالعکس به کوچک تلنگر؟
در اینجا یادآوری سریع از آنچه در 65 و 97 شبیه در باینری است.
و حتی در صورتی که سوال به نوعی در حافظه شما پژمرده،
شما می توانید دوباره در اینجا می بینید که چگونه بسیاری از بیت باید بدبختانه
برای تغییر پایتخت به کوچک؟ فقط یک است.
>> آنها فقط در یک مکان، بیت سوم از سمت چپ متفاوت است.
در حالی که یک 010، کمی 011.
تا به نوعی، ما نیاز داریم که فقط قادر به تلنگر که کمی،
و ما پس از آن می تواند به سرمایه گذاری و یا حروف کوچک.
ما این را در گذشته انجام می شود در صورتی که در واقع با استفاده از شرایط
و بررسی در صورتی که نامه بین سرمایه و سرمایه Z،
سپس خروجی مثل - + 26 و یا چیزی شبیه به آن است.
شما احتمالا تغییر حسابی به حروف الفبا.
اما چه می شود اگر ما فقط می تواند که بیت تلنگر؟
چگونه می تواند شما را در مورد در نظر گرفتن ارزش بیت است، بنابراین 8 بیت یک بایت از مثل 01،000،001 و 01،100،001؟
اگر شما تا به حال آن دسته از الگوهای بیت، چگونه می تواند به ما در مورد تغییر تنها یکی از آنها برود؟
چه می شود اگر ما به رنگ زرد در اینجا این الگوی دیگر از بیت؟
اگر من کل 0s و رشته ای زرد رنگ به جز یک بیت که من می خواهم به تغییر
و پس از آن یک اپراتور جدید شناخته شده است به عنوان یک عملگر بیتی را معرفی کنم -
بیتی به این معنا است که آن را بر تک بیت عمل،
در کل بایت یا چهار کلمه در ادامه متن همه در یک بار.
وجود دارد، این نوار عمودی به رنگ زرد نشان می دهد که چه می شد اگر ما را به نمایندگی از سرمایه
و بیتی یا آن را با رشته بیت های زرد؟
به عبارت دیگر، فکر می کنم به بحث ما از عبارات بولی در ابتدا و پس از آن در C.
>> انجام بولی یا به این معنی است که درست باشد، یا اولین چیزی که درست باشد
یا چیز درست باشد و یا هر دو آنها درست باشد،
و سپس نتیجه خروجی به خودی خود درست است.
در این مورد در اینجا، چه چیزی ما اگر ما را 0 "یا" ED با 0؟ نادرست یا نادرست؟
هنوز هم غلط، به طوری حروف کوچک باقی مانده به عنوان انتظار می رود.
چه می شود اگر به جای 1 یا 0؟
این در حال حاضر 1 باقی می ماند، اما متوجه آنچه اتفاق می افتد در اینجا.
اگر ما با سرمایه شروع شده و ما را به ادامه "و یا" بیت های فردی خود را به عنوان ما در حال انجام
0 یا یکی از رنگ زرد به ما می دهد که چه چیزی را در اینجا؟ این به ما می دهد: 1.
در واقع، فرض کنید ما نمی دانستیم که چه نسخه بزرگ کوچک واقع بود.
اجازه دهید به انجام این کار. بازگشت حرکت من در اینجا.
اجازه دهید این کار را دوباره. 0 یا 0 به من می دهد 0.
0 یا 1 به من می دهد 1.
0 یا 0 به من می دهد 0. 0 یک بعدی، یک بعدی 0 است، یک بعدی 0 است.
0 یا 1 به من می دهد 1.
و بنابراین حتی اگر ما در پیشبرد دانم که چه کوچک بود،
به سادگی با "یا" نشستند با این الگوی بیت ایم که در اینجا زرد،
شما می توانید یک سرمایه توسط کوه در می رم که کمی کوچک است.
ما استفاده از این هفته بیان پیش: کوه در می رم کمی است.
چگونه می توانم به شما در واقع انجام این کار برنامه نویسی؟
شما با استفاده از آنچه به طور کلی گفته می شود ماسک، دنباله ای از بیت ها
که در این مورد خیلی اتفاق می افتد مانند این شماره را در اینجا نگاه کنید.
و سپس شما "و یا" آن هم با استفاده از این عملگر C،
نه | |، شما با استفاده از تک | و شما در واقع این پاسخ در اینجا به دلیل چرا؟
این محل 1S، 2S محل، 4S، 8s، 16S، 32S است.
پس از آن معلوم است که اگر حرف شما را و بیتی یا آن را با 32 عدد صحیح،
به این دلیل که 32 عدد صحیح، هنگامی که شما آن را به عنوان بیت نگاه کنید، به نظر می رسد، مثل این:
این بدان معنی است که شما می توانید کمی است که شما در واقع می خواهید تلنگر.
و به همین ترتیب - و ما در کد فقط در یک لحظه نگاه -
فرض کنید ما می خواهیم به جهت دیگر است.
>> چگونه می توانم شما را از حروف کوچک سرمایه به پیش برود؟ که کمی نیاز به تغییر است؟
این یکی از همان است.
ما می خواهیم که بیت سوم از 1 به 0 تغییر دهید.
و چگونه ممکن است ما در مورد انجام این کار؟
چگونه می توانم خاموش یک بیت است؟ با چه الگوی بیت می تواند ما را خاموش بیتی؟
چه می شود اگر ما برعکس ماسک مرتب سازی بر اساس؟
در حالی که قبل از ما ساخته شده است که تمام 0s و ماسک زرد
به جز یک بیت ما می خواستیم به نوبه خود بر روی،
چه می شد اگر این زمان، ما را از تمام 1S ماسک به جز کمی که ما می خواهیم برای خاموش کردن
و پس از آن چه اپراتور استفاده کنید؟
چه می شود اگر ما "و" همه چیز؟ بیایید نگاهی به.
اگر ما در حال حاضر به این تلنگر، فرض کنید که دوباره یک ماسک ایجاد کنم که تمام 1S
به جز یک بیت که من می خواهم برای خاموش کردن
و پس از آن به جای "یا" شماره های سفید تا بالا با شماره های زردی که به پایین،
چه می شود اگر من به جای "و" آنها را با هم؟ این بیتی نامیده می شود.
منطقی، آن است که همان چیزی که به عنوان یک بولی.
این به من می دهد 0 & 1 0 است. بنابراین به غلط و درست است غلط است.
درست است درست است.
و در اینجا است که سحر و جادو: درست و نادرست در حال حاضر غلط، به طوری ایم که کمی خاموش است.
و حالا بقیه داستان است که تا حدودی ساده است.
از آنجا که بقیه از ماسک 1S است، مهم نیست که چه تعداد به رنگ سفید هستند.
هنگامی که شما "و" کاری با درست، شما در حال رفتن به تغییر ارزش خود را.
اگر درست است، باقی می ماند درست است. اگر آن را نادرست بود، باقی خواهد ماند، اشتباه است.
>> اما سحر و جادو اتفاق می افتد که شما را به چیزی که درست بود
و شما پس از آن "و" آن را با غلط است.
این است اثر خاموش کردن که بیت است.
بنابراین کمی مرموز وجود دارد.
اجازه دهید در واقع در برخی از کد نگاه کنید، که در واقع نگاه ممکن است حتی بیش از مرموز،
اما اجازه دهید نگاهی به اینجا در tolower.
اگر من در tolower نگاه، رفتن از پایتخت به کوچک،
بیایید ببینید که ما چگونه ممکن است این برنامه را اجرا کنید.
اینجا اصلی، و آن را هر گونه استدلال خط فرمان نیست.
من اعلام ج شخصیت این نامه که کاربر در حال رفتن به تایپ شوید.
من پس از انجام آشنا در حالی که حلقه فقط مطمئن شوید که کاربر قطعا به من می دهد سرمایه
و یا B یا C. .. Z، به طوری که آنها به من چیزی بین یک و زهرا
و حالا چه هستم من در اینجا انجام است؟
من "یا" در این مورد با 0x20، اما این در واقع همان -
و ما دوباره به این در یک لحظه - 32.
تا دوباره، 32 این الگوی بیت اینجا است. چرا که ما می دانیم؟
فقط پشت به هفته 0 فکر می کنم.
این محل 1S، 2S محل، 4S، 8s، 16S، 32S محل است.
پس این عدد زرد اتفاق می افتد 32.
من پس از آن می توانید یک نامه مانند کاراکتر در اینجا را، بیتی "یا" این به معنای واقعی کلمه با شماره 32،
و آنچه را می توانم به عقب بر گردیم؟ نسخه حروف کوچک که کاراکتر.
یک لحظه پیش، هر چند، من این کار را در نماد پایه های مختلف بیان شده است.
چه این نمایندگی؟ >> [دانشجو] هگزادسیمال.
[مالان] این اتفاق می افتد به نمایندگی از مبنای شانزده است.
ما در مورد هگزادسیمال که بسیار صحبت کردیم،
اما در واقع مناسب در موارد شبیه به این.
>> حتی اگر آن را پیچیده تر به نظر می رسد و حتی اگر آن را مانند 20 و نه 32 به نظر می رسد،
معلوم می شود که مبنای شانزده است که در واقع نماد فوق العاده مناسب
چرا که در هر رقم مبنای شانزده بعد از 0x - و این به این معنی است؛
این کنوانسیون فقط انسان است که می گوید: در اینجا می آید یک عدد هگزادسیمال -
هر یک از این رقم، 2 و سپس 0، خود را می توانید به نمایندگی
دقیقا 4 بیتی.
بنابراین اگر ما این کار، به من اجازه باز کردن یک ویرایشگر متنی در اینجا - عجیب و غریب تکمیل خودکار -
اگر ما می توانم در یک ویرایشگر متن کوچک در اینجا، 0x20 شماره به این معنی است 4 بیت است، در اینجا یکی دیگر از 4 بیت است.
اجازه دهید از 4 سمت راست بیت اول است.
0 زمانی که با 4 بیت نشان داده شده است؟ فوق العاده آسان است. 0s و.
SO 4 بیت به عنوان 0s و.
چگونه می توانم شما 2 را نشان می دهد؟ آن شده است در حالی که از ما این است، اما آن را به 0100 است.
بنابراین این محل 1S، این محل 2S است، و بعد از آن مهم نیست که چه جاهای دیگر است.
به عبارت دیگر، در مبنای شانزده شما ممکن است بگویید 0x20،
اما اگر شما فکر می کنم در مورد 2 چه است و چگونه آن را در دودویی،
چه شده است 0 و چگونه آن را در دودویی،
پاسخ به این سوالات و این، بود.
بنابراین 0x20 اتفاق می افتد از 8 بیت برای نشان دادن این الگو،
که دقیقا ماسک که ما می خواستیم.
پس این است که برای لحظه ای فقط یک ورزش فکری،
اما واقعیت این است در کد آن به طور معمول شایع تر است برای نوشتن ثابت مثل این
در مبنای شانزده به خاطر پس برنامه نویس می تواند نسبتا به راحتی،
حتی اگر آن را نیاز به برخی از کاغذ و مداد، کشف کردن آنچه که الگوی بیت است
دلیل این که شما فقط می توانید و بیان 0s و 1S به طور معمول در کد.
شما می توانید 00،010 رفتن نیست و غیره.
>> شما باید برای انتخاب نمادهای دهدهی و یا هگزادسیمال یا هشت هشتی یا دیگر.
اکثر مردم تمایل دارند به انتخاب هگزادسیمال به سادگی به طوری که هر یک از رقم نشان دهنده 4 بیت
و شما می توانید این ریاضیات سریع انجام دهد.
و من از دست من در toupper، که تقریبا همان موج آن تقریبا یکسان به نظر می رسد.
Toupper اتفاق می افتد به استفاده از اپراتور و یا بلکه این پسر و DF.
چه DF نمایندگی؟ DF؟ هر کس؟ >> [دانشجو] 255.
255؟ نه 255. خواهد بود که FF.
ما این را به عنوان یک ورزش کمی ترک کنید.
اما اگر شما از 0، 1، 2، 3، 4، 5، 6، 7، 8، 9 و پس از آن چه می آید بعد از 9؟
ما نوع از رقم دهدهی است، اما در مبنای شانزده می آید بعد از 9؟
[دانشجو]. >> بنابراین A، B، C، D.
شما می توانید شکل از چه الگوی بیت D در واقع نشان دهنده.
و اگر ما در انجام محاسبات ریاضی، خواهیم دید که ماسک شما را تا پایان گرفتن بازگشت یکسان است به این.
این F، تمام 1S است، و این است که D است. بنابراین DF نشان دهنده که ماسک. بسیار خوب.
و در نهایت، به همه چیز صدای فوق العاده، فوق العاده فنی،
اما فرض کنید ما می خواستیم برای نوشتن برنامه ای است که این کار را.
اجازه بدهید من بروم جلو و دودویی است که یک برنامه را در یک فایل به نام binary.c.
و در حال حاضر باینری اجرا من و یک عدد صحیح غیر منفی را به من بدهید.
شروع آسان و نوع در 0 است.
این در حال حاضر برنامه ای است که چاپ یک عدد صحیح در نمایش دودویی آن است.
پس اگر من این بازی را دوباره تایپ کنید و در تنها 1، من باید یک نمایش 32 بیتی از 1.
اگر من این کار را دوباره با 2، من باید آن را دریافت کنید.
اگر من 7، من باید 1S چند در پایان دریافت کنید و غیره.
این معلوم میشود که این ذکر دلیل با عملیات بیتی
شما در واقع می تواند یک چیز دیگر را به خوبی انجام دهد.
شما می توانید از این ماسک را به صورت پویا ایجاد کنید.
نگاهی به در این مثال نهایی مربوط به عملیات بیتی.
در اینجا است که بخش اول از کد، سریع کاربر برای یک عدد،
و اصرار دارد که شما به من یک عدد صحیح غیر منفی است.
به طوری که مرتب سازی بر اساس مسائل مدرسه قدیمی است.
اما در اینجا چیزی است که در نوع جالب است.
>> چگونه می توانم در مورد چاپ یک شماره در دودویی؟
من برای اولین بار از آنچه که به آنچه تکرار؟
به اندازه یک int به طور معمول، حداقل در دستگاه؟ >> [دانشجو] 4.
آن 4 است. بنابراین 4 * 8 32 - 1 31 است.
پس اگر من شروع به شمارش از 31، که نشان دهنده، که معلوم است،
فقط مفهومی، 31 بیتی یا بالاترین کمی نظم، که این پسر در اینجا،
در حالی که این امر به 0 باشد کمی.
پس این است که کمی 01 ... بیت 31.
بنابراین آنچه که این کد انجام شده است؟
توجه داشته باشید که این کار را برای حلقه، حتی اگر آن را مرموز به نظر می رسد، فقط از 31 پایین تا 0، تکرار. همین.
بنابراین قسمت جالب در حال حاضر باید در این 5 خط باشد.
توجه کنید که در این خط من اعلام ماسک یک متغیر به نام
سازگار با داستان ما از این اعداد به رنگ زرد است.
و پس از آن چیزی است که این انجام شده است؟
این یکی دیگر از عملگر بیتی دیده ایم نه قبل از آن، به احتمال زیاد می باشد.
این عملگر شیفت به چپ است.
این عملگر می کند این است.
در اینجا شماره 1، و اگر شما از کلید های SHIFT سمت چپ، شیفت به چپ،
چه چیزی به شما فکر می کنم که در اثر انجام این کار که 1 فرد؟
به معنای واقعی کلمه آن را تغییر بیش از.
بنابراین در صورتی که شماره 1 آن چیزی است که شما را در سمت چپ است و شما با مقدار دهی اولیه من تا 31 شروع می شود،
چه چیزی است که می خواهم کاری انجام دهید؟ این را به این شماره 1 و 31 مکان تغییر در اینجا.
زیرا بدیهی است که هیچ رقم دیگر در پشت آن وجود دارد،
کسانی که به طور پیش فرض با 0s و جایگزین کرد.
بنابراین شما شروع به شماره 1، که البته مثل این به نظر می رسد -
و اجازه دهید آن را رسم من در اینجا در مرکز.
و سپس به عنوان چیزهایی که شما تغییر جهت به سمت چپ، این مرد در اصل می رود این راه است.
اما به محض این که شما انجام این کار، یک 0 می شود پر شوید.
اگر شما آن را برای بار دوم تغییر آن می رود، در این راه است و یک 0 دیگر می شود پر شوید.
>> شما آن را تغییر دوباره و پس از آن یکی دیگر از 0 پر می شود شوید.
بنابراین اگر شما این کار چیزی از 1 << 31 مکان، شما را تا پایان گرفتن یک ماسک
که 32 کاراکتر طولانی است، یکی از سمت چپ از آن است که 1.
همه از بقیه از آن 0.
و معلوم، به عنوان به کنار، تغییر شماره در سمت چپ مثل این
نیز تصادفا، و گاهی اوقات به راحتی،
اثر انجام آنچه به این تعداد است؟ >> [دانشجو] دو برابر کند.
دو برابر آن را به دلیل هر یک از ستون ها - محل 1S، 2S محل، محل 4S،
محل 8s، محل 16S - آنها در حال تمام دو برابر به عنوان شما را به سمت چپ بروید.
یا نه، هنگامی که شما تغییر 1S شما برای پایان دادن به دو برابر ارزش از شماره.
شما می توانید تا پایان انجام تحولات جالب از رقم
با تغییر همه چیز را در این راه با قدرت 2.
پس چگونه کار می کند؟
پس از آن به من می دهد ماسک که همه 0s و به جز 1 در دقیقا همان جایی است که من آن را می خواهم،
و پس از آن این عبارت است که از toupper.c به سرقت رفته است،
به سادگی گفت: گرفتن شماره N که کاربر در تایپ،
»و« آن را که با ماسک، و آنچه که شما رفتن به؟
شما در حال رفتن به گرفتن 1 اگر یک 1 در آن محل نقاب،
یا قصد دارید برای دریافت 0 اگر نیست وجود دارد.
و به این ترتیب این برنامه به طور موثر آن را به یک حلقه،
و آن ایجاد یک ماسک با 1 در اینجا، و سپس یک 1 در اینجا، پس از آن 1 در اینجا،
و آن را با استفاده از این بیتی و فوت و فن برای گفتن یک بیت 1 در ورودی کاربر در اینجا وجود دارد؟
>> آیا یک بیت 1 در ورودی کاربر در اینجا وجود دارد؟ و اگر چنین است، به معنای واقعی کلمه 1، چاپ دیگری چاپ 0.
ما در حال انجام این کار با نوع داده int فقط به خاطر این است که به همین دلیل ما در حال انجام 32 بیت به جای 8،
اما آنچه که ما معرفی کرده ایم و سپس این بیتی، و این بیتی OR است،
و این عملگر شیفت به چپ، که اغلب وحشتناکی مفید نیست،
اما به نظر می رسد از آنها می تواند باشد.
در واقع، اگر شما برای نشان دادن چیزی شبیه به آرایه ای از Booleans
فقط برای نشان دادن درست یا غلط، فرض کنید که می خواهید می خواست برای پیگیری یا نه
یک اتاق پر از 300 دانشجو در حال حاضر،
شما می توانید مجموعه ای از حجم 300 از نوع بولی به طوری که شما می توانید 300 bools اعلام،
و شما می توانید هر True را اگر کسی است که در اینجا و در غیر این صورت نادرست است.
چرا که نمایندگی در ساختار داده ها است که ناکارآمد است؟
چه بد در مورد طراحی ساختار داده ها، مجموعه ای از 300 bools؟
بولی است، در واقع، در زیر هود؟
این، بیش از حد، و این چیزی است که ممکن است آشنا شده است.
به نظر می رسد این است که هیچ بولی وجود دارد.
به یاد داشته باشید که مرتب سازی بر اساس ایجاد که با فایل cs50.h،
که خود شامل استاندارد بولی.
C از نوع گنگ، هر چند، هنگامی که آن را به بولی می آید.
با استفاده از 8 بیت برای نشان دادن هر بولی است که کاملا بی فایده
زیرا بدیهی است، که چگونه بسیاری از بیت شما نیاز به نمایندگی بولی؟ فقط 1.
بنابراین معلوم می شود که اگر شما در حال حاضر توانایی اپراتورهای بیتی
به دستکاری بیت های فردی حتی در کاراکتر، حتی در یک بایت،
که معلوم است شما می توانید از حافظه مورد نیاز برای نشان دادن به چیزی احمقانه را کاهش دهد
مانند مدل دهید که حضور ساختار داده ها توسط یک عامل از 8.
در عوض با استفاده از هشت بیت برای نشان دادن درست یا غلط، به معنای واقعی کلمه می تواند یک استفاده از
با استفاده از یک بایت برای هر هشت دانش آموز در کلاس
toggling از 0 به 1 بیت های فردی با استفاده از این نوع از کلاهبرداری های سطح پایین است.
که واقعا پایان دادن به انرژی است. آیا هر گونه سوال در مورد عملیات بیتی وجود دارد؟
>> آره. >> [دانشجو] اپراتور منحصر به فرد و یا؟
بله. اپراتور منحصر به فرد و یا است که به نظر می رسد مثل این، ^، نماد هویج وجود دارد،
که به معنی تنها چیزی که اولین یا دومین چیزی که می تواند یک (1) برای خروجی به 1 (یک) است.
نیز وجود دارد که نه، ~، که به شما این امکان را می دهد که شما یک 0 به 1 یا بالعکس و همچنین به معکوس.
و همچنین اپراتور شیفت سمت راست، >>، است که در مقابل ما شاهد وجود دارد.
بسیار خوب. بیایید همه چیز در حال حاضر به یک سطح بالاتر است.
ما با صحبت کردن در مورد متن آغاز شده است و سپس آن را فشرده سازی
و به نمایندگی از متن را با تعداد کمتری از بیت؛
ما کمی در مورد چگونه ما در حال حاضر می توانید شروع به دستکاری چیزهایی را بر روی یک سطح بیتی صحبت کردیم.
اکنون بیایید به عقب بزرگنمایی تا 10،000 فوت به نمایندگی
از همه چیز پیچیده تر مانند کارت گرافیک است.
در اینجا ما باید پرچم آلمان، در اینجا ما باید یکی از فرانسه.
این ممکن است در فرمت های فایل های شما ممکن است بدانید نمایندگی - های gif، به عنوان مثال.
اگر شما تا کنون یک تصویر را بر روی وب سایت است که به پایان می رسد در قاب دیده می شود،
این قالب مبادله گرافیک است.
این دو پرچم در اینجا مرتب کردن بر اساس از خود را با قرض دادن به فشرده سازی
برای آنچه که شاید واضح دلیل؟ >> [پاسخ دانش آموز نامفهوم]
تعداد زیادی تکرار وجود دارد، درست است؟
به منظور ارسال به پرچم آلمان، از این فکر می کنم به عنوان یک تصویر بر روی صفحه نمایش
پشت در روز ابتدا خود را.
شما ممکن است به یاد آورید که پیکسل یا نقطه که تشکیل یک تصویر وجود دارد.
>> یک ردیف از نقطه های سیاه و دیگری ردیف کامل از نقاط سیاه و سفید وجود دارد.
یک دسته از ردیف از نقطه های سیاه و سفید است که ما می توانیم اگر ما واقعا در زوم وجود دارد،
خیلی هنگامی که ما در صورت راب در فتوشاپ بزرگنمایی می خواهم.
به محض این که ما عمیق تر و عمیق تر و عمیق تر به تصویر،
شما شروع به دیدن pixelation، همه از مربع است که چشم خود را در این مورد تشکیل شده است.
قرارداد اینجا کلیک کنید. اگر ما در کمی بزرگنمایی شده است، شما می توانید نقطه فردی را ببینید.
خب، این نوع از اتلاف بیت است.
اگر یک سوم از پرچم های سیاه و سفید و یک سوم از پرچم زرد و غیره است.
چرا ما نمی توانیم به نوعی فشرده سازی در این پرچم؟
و حتی پرچم فرانسه را می توان فشرده حتی اگر این الگو کمی متفاوت است.
تبدیل فرمت فایل های GIF است که فرمت های فشرده سازی lossless،
که به این معنی است که شما می توانید یک تصویر مانند پرچم آلمان را،
شما می توانید دور انداختن مقدار زیادی از بیت خود را بدون فدا کردن کیفیت.
این است که در مقایسه با چیزی شبیه به عکس JPEG،
که با آن بسیاری از ما احتمالا بیشتر آشنا هستند.
عکس و عکس فلیکر فیس بوک و مانند
تقریبا همیشه به عنوان عکس JPEG ذخیره شده زمانی که آنها در حال آپلود
فرمت به موجب آن شما دور انداختن بیت - اتلاف - عکس JPEG اتلاف است
اما شما همچنین دور انداختن کیفیت.
بنابراین اگر شما فشرده سازی عکس ها با فتوشاپ و یا ارسال آنها را به فیس بوک
و یا آنها را بر روی یک گوشی واقعا پیش فرض،
شما می دانید که تصویر شروع به لکه لکه و pixelated،
و این به دلیل آن که توسط کامپیوتر و یا تلفن های فشرده
به معنای واقعی کلمه پرتاب اطلاعات دور.
اما GIF شگفت انگیز است که در آن می توانید بیت کمتر از آن ممکن است به طور پیش فرض استفاده کنید
بدون از دست دادن هر گونه اطلاعات.
>> و اساسا این کار را به شرح زیر است.
به جای ذخیره در یک فایل مانند BMP، سه گانه RGB برای سیاه و سفید، سیاه و سفید، سیاه و سفید، سیاه و سفید،
سیاه و سفید، سیاه و سفید، سیاه و سفید، سیاه و سفید، سیاه و سفید، سیاه و سفید، سیاه و سفید، سیاه و سفید و غیره،
در عوض، فرمت GIF است که می گویند، "سیاه و سفید،
و پس از آن، "تکرار این 100 بار،" و یا چیزی شبیه به آن است.
"سیاه و سفید، تکرار این 100 بار، سیاه و سفید، تکرار این 100 بار ..."
"زرد، تکرار این 100 بار."
و پس از آن به یاد می آورد، در اصل، پیکسل سمت چپ
و پس از آن کد می نحوی مفهوم تکرار دوباره و دوباره که پیکسل است.
بنابراین پس از آن فایل های gif می توانند خود را بدون از دست دادن هر گونه اطلاعات فشرده.
اما اگر شما تا به حال به حدس زدن، در صورتی که الگوریتمی که فایل های gif استفاده،
که از این پرچم ها، حتی اگر آنها در اندازه یکسان به نظر میرسند،
رفتن به کوچکتر، زمانی که بر روی دیسک به عنوان یک GIF ذخیره؟ >> [دانشجوی] آلمان است.
آلمان رفتن کوچکتر می شود؟ چرا؟
[دانشجو] از آنجا که شما آن را تکرار بسیاری، چند بار به صورت افقی
و پس از آن یکی دیگر از زمانی که شما تکرار کنید. >> دقیقا.
از آنجا که مردم که اختراع GIF فقط نوع از خودسرانه تصمیم گرفت
که تکرار خواهد شد به صورت افقی و جانبی قوی تر شده است.
خیلی بیشتر از تکرار جانبی در پرچم آلمان از در پرچم فرانسه وجود دارد.
بنابراین اگر ما در واقع باز کردن یک پوشه بر روی هارد دیسک است که این فایل های gif،
شما در واقع می تواند که پرچم آلمان در اینجا 2 کیلوبایت و فرانسه است 4 کیلوبایت را ببینید.
آن اتفاق می افتد یک تصادف که یکی دو بار دیگر،
اما در واقع این مورد است که پرچم فرانسه است بسیار بزرگتر است.
>> حتی اگر ما در حال صحبت کردن در اینجا در مورد گرافیک، ایده های مشابه می تواند به درخواست
مانند پرچم ها اما این تصاویر که کمی پیچیده تر هستند، همه چیز نیست.
اگر یک تصویر از یک سیب شما را، قطعا بسیاری از تقلید وجود دارد،
بنابراین ما به نحوی است که می تواند در پس زمینه به طور پیش فرض آبی است به یاد داشته باشید
و نه به عنوان تصویر سمت راست نشان می دهد،
رنگ هر پیکسل تنها در این تصویر به خاطر داشته باشید.
بنابراین ما می توانیم بیت دور پرتاب وجود دارد بدون از دست دادن اطلاعات.
اپل هنوز هم به نظر می رسد همان است.
در این مثال در اینجا، شما ممکن است ببینید که چه اتفاقی می افتد در یک فیلم است.
این نشان دهنده قدیمی مدرسه قرقره فیلم که به موجب آن در بالا وجود دارد
شما باید رانندگی RV گذشته یک خانه و یک درخت.
که ون درایوهای گذشته از چپ به راست، چه به وضوح در حال تغییر نیست؟
خانه هر جا، و درخت هیچ جا نمی رود.
تنها چیزی که حرکت ون در این مورد است.
بنابراین به عنوان پس زمینه تغییری نشان می دهد، آنچه که شما می توانید در فیلم
به همین ترتیب فقط دور پرتاب اطلاعاتی است که آیا در بین فریم ها را تغییر نمی دهد.
این است که به طور کلی عنوان فشرده سازی interframe شناخته شده
به موجب آن در صورتی که این قاب تقریبا یکسان به نظر می رسد به این یکی،
اجازه دهید ذخیره سازی بر روی دیسک هر یک از اطلاعات یکسان را خسته نکنید
بر روی این فریم های میانی، اجازه دهید تنها استفاده از فریم های کلیدی یک بار در در حالی که
که در واقع این اطلاعات redundantly فقط به عنوان بررسی سلامت عقل کوچک ذخیره کنید.
>> در مقابل، رویکرد دیگر برای فشرده سازی ویدیو در این مثال دوم و پایین،
که در آن به جای فروشگاه 30 فریم، چرا شما نه فقط 15 فریم در ثانیه به جای ذخیره؟
و نه از نوع فیلم از جریان زیبایی، کاملا،
آن ممکن است شبیه آن را در لکنت زبان یک کمی، یک مدرسه کوچک قدیمی،
اما اثر خالص خواهد بود، به استفاده از بیت به مراتب کمتر از در غیر این صورت ممکن است لازم باشد.
تا جایی که نشانی از این پس ما را؟
که کمی به کنار در جایی که دیگری شما می توانید با فشرده سازی بود.
برای اطلاعات بیشتر بر روی آن، یک کلاس مانند CS175 اینجا.
در اینجا یک مثال دیگر در داخل ویدئو.
اگر زنبور تنها چیزی که در حال حرکت است،
شما واقعا می تواند در دور انداختن اطلاعات در آن از فریم های متوسط
چون گل و آسمان و برگ در حال تغییر نیست.
اما اجازه دهید در حال حاضر در نظر گرفتن یک چیز گذشته.
در 5 دقیقه ما را ترک C پشت برای همیشه لطفا برای در سخنرانی؟ بله. در psets نیست.
داستان در مورد C و پس از آن ما را به مسائل بسیار مورد علاقه
شامل HTML و وب سایت و وو هو. بسیار خوب.
در اینجا ما بروید. این انگیزه است.
به نظر می رسد تمام این مدت که ما باید به نوشتن برنامه های ما اجرا صدای جرنگ جرنگ.
و صدای جرنگ جرنگ، ما از هفته اول بسیار گفته شده است، طول می کشد کد منبع
و آن را تبدیل به کد شیء.
طول می کشد C و تبدیل آن به 0s و 1S.
من به نوعی دروغ گفتن به شما برای چند هفته به دلیل آن را کاملا به عنوان به عنوان ساده نیست.
>> خیلی بیشتر از رفتن در زیر هود هنگامی که یک برنامه را اجرا می کنید مانند صدای جرنگ جرنگ وجود دارد.
در واقع، فرایند تدوین برنامه واقعا می تواند خلاصه شود،
به عنوان شما ممکن است از فیلم راب در کامپایلرها به یاد،
به این 4 مرحله: قبل از پردازش، کامپایل (Compile) به خودی خود، مونتاژ، و ارتباط است.
اما ما در کلاس و اکثر مردم در جهان به طور معمول تمام این مراحل به طور خلاصه
فقط به عنوان "تدوین".
اما اگر ما با کد منبع مثل این شروع، به یاد می آورم این است که شاید ساده ترین برنامه C
ما تا کنون نوشته ام، به یاد داشته باشید که زمانی که وارد شده به پایان می رسد تا به دنبال شبیه به این.
اما در واقع یک مرحله میانی وجود دارد، و این مراحل به شرح زیر هستند.
اول این چیز وجود دارد از این و بسیاری از برنامه های ما بسیار بالا،
# شامل
چه # برای ما باشد؟
این تا حد زیادی کپی و چسباندن محتویات stdio.h را در فایل به طوری که چرا؟
چرا من در مورد محتویات stdio.h مهم است؟ در مورد علاقه وجود دارد؟
اعلامیه Printf، نمونه آن، به طوری که پس از آن کامپایلر می داند منظورم چیست
زمانی که این تابع اشاره printf است.
بنابراین 1 در تدوین مرحله پیش پردازش شده است، که در آن یک برنامه مانند صدای جرنگ جرنگ
و یا برخی از برنامه های کمکی که صدای شیپور همراه با کد بالا خود را به پایین می خواند،
از چپ به راست و در هر زمان آن را می بیند نماد # به دنبال یک کلمه کلیدی مانند عبارتند از:
انجام این عمل، کپی و چسباندن در stdio.h این مورد را به فایل خود را.
این مرحله 1 است.
سپس شما باید بسیار بزرگتر از فایل C به دلیل کپی کار بزرگ، رب است که فقط اتفاق افتاده است.
>> پله 2 در حال حاضر تدوین شده است.
اما معلوم کامپایل کد منبع که به نظر می رسد مثل این طول می کشد
و آن را تبدیل به چیزی است که به نظر می رسد مثل این،
که برای کسانی که آشنا نامیده می شود؟ >> [دانشجو] مجمع. >> زبان اسمبلی.
این است که در واقع چیزی است که اگر شما را CS61 شما فرو رفتن در جزئیات بیشتر است.
این فقط در مورد به عنوان نزدیک به عنوان شما می توانید به نوشتن 0s و و 1S خود را دریافت کنید
اما نوشتن این چیز ها را در گونه ای که هنوز باعث میشه که حداقل یک کمی از حس.
این دستورالعمل دستگاه، و اگر ما در پایین حرکت به تابع اصلی در اینجا،
توجه داشته باشید که این دستور فشار وجود دارد، حرکت آموزش، آموزش تفریق،
تماس آموزش، و غیره.
وقتی شما می شنوید که کامپیوتر شما در داخل اینتل،
شما باید CPU اینتل در مک یا PC خود را، به چه معنا است؟
CPU می آید توسط شرکت هایی مانند اینتل درک دستورالعمل خاصی ساخته شده است.
آنها هیچ ایده چه توابع مانند مبادله و یا اصلی در جنوب شرقی،
اما آنها نمی دانند چه بسیار سطح پایین دستورالعمل مانند اضافه کردن، تفریق، فشار،
حرکت، تماس و غیره هستند.
بنابراین، هنگامی که شما کامپایل کد C به زبان اسمبلی،
بسیار کاربر پسند خود، به دنبال کد را به چیزی که به نظر می رسد مثل این تبدیل،
که به معنای واقعی کلمه حرکت بایت یا 4 بایت در اطراف در واحدهای کوچک در داخل و خارج از CPU است.
اما در نهایت، هنگامی که صدای شیپور آماده است را به این برنامه خود را
به 0s و 1S، و سپس مرحله به نام مونتاژ اتفاق می افتد،
و این دوباره همه در یک چشم بر هم زدن اتفاق می افتد زمانی که در حال اجرا صدای جرنگ جرنگ.
ما شروع کنید، خروجی فایل شبیه به این، و سپس آن را تبدیل به و این 0s و 1S.
و اگر شما می خواهید برای رفتن به عقب در برخی از نقطه، و در واقع این کار را در عمل،
- اگر من به hello1.c این است که یکی از اولین برنامه ما در نگاه به
به طور معمول ما این کار را با hello1.c صدای جرنگ جرنگ کامپایل و این به ما a.out را.
اگر در مقابل شما به جای آن-S پرچم را، چه خواهید hello1.s
و شما در واقع به زبان اسمبلی را ببینید.
>> من برای انجام این کار برای یک برنامه بسیار کوتاه است، اما اگر شما بازگشت تقلا
و یا بازیابی یا هر برنامه ای که شما نوشته ام و فقط از روی کنجکاوی.
می خواهم برای دیدن آنچه که آن را در واقع به نظر می رسد، مانند آنچه در واقع در حال وارد شدن به CPU تغذیه،
شما می توانید پرچم که S با صدای جرنگ جرنگ.
اما پس از آن در نهایت، هنوز هم وجود دارد یک مارپیچ است.
در اینجا 0s و 1S که نشان دهنده اجرای من خوش آمدید، جهان است.
اما من با استفاده از تابع شخص دیگری در برنامه های من است.
بنابراین حتی اگر این روند بوده است را hello.c،
آن را به کد اسمبلی وارد شده است، و سپس آن را می شود به 0s و 1S مونتاژ،
تنها 0s و و 1S که در این نقطه در زمان خروجی
آنهایی که از کد من هستند.
اما کسی که نوشت printf، آنها را وارد کد خود را در 20 سال پیش
و آن را در حال حاضر در جایی بر روی دستگاه نصب شده است،
بنابراین ما به نوعی مجبور به ادغام خود و یا خود را 0s و 1S با 0s و من و 1S،
و این که ما به مرحله 4 و نهایی از تدوین، شناخته شده به عنوان ارتباط به ارمغان می آورد.
بنابراین در سمت چپ تصویر دقیق همان قبل از:
hello.c تبدیل کد اسمبلی 0s و و 1S می شود.
اما به یاد داشته باشید که من کتابخانه استاندارد I / O در کد من استفاده می شود،
و این بدان معناست که در جایی بر روی کامپیوتر یک فایل به نام stdio.c وجود دارد
یا حداقل از نسخه کامپایل شده آن، زیرا کسی که چند سال پیش
stdio.c را به کد اسمبلی کامپایل شده و سپس یک دسته کامل از 0s و 1S است.
این همان چیزی است که به عنوان یک استاتیک و یا پویا کتابخانه شناخته شده است.
برخی از آن فایل در جایی نشسته در دستگاه است.
>> اما در نهایت، من را 0s و 1S من و آن فرد 0s و 1S
و به نوعی آنها را لینک کنید با هم، به معنای واقعی کلمه ترکیب و کسانی که 0s و 1S
به یک فایل واحد به نام a.out یا hello1 و یا هر آنچه به من به نام برنامه
به طوری که نتیجه نهایی همه 1s و 0s است که باید به برنامه من نوشتن است.
بنابراین تمام این مدت این ترم وقتی که شما با استفاده از صدای جرنگ جرنگ
و حتی به تازگی در حال اجرا را به منظور اجرای صدای جرنگ جرنگ،
تمام این مراحل اتفاق می افتد نوع از آنی است اما بسیار به عمد.
و به این ترتیب اگر شما در علم کامپیوتر ادامه پیدا کند، یعنی CS61،
این لایه است که شما را به ادامه پوست پشت کردن وجود دارد
صحبت کردن در مورد بازده، مفاهیم امنیت، و مانند این جزئیات سطح پایین تر.
اما با آن، ما را ترک C پشت سر هستید.
اجازه دهید به جلو و 5 دقیقه استراحت ما در حال حاضر،
و هنگامی که ما آمده ایم پشت اینترنت می باشد.
بسیار خوب. ما برگشت.
در حال حاضر نگاه ما آغاز خواهد شد، زیرا نه تنها در HTML به عنوان خواهید دید،
HTML خود است که در واقع بسیار ساده است
اما واقعا در برنامه نویسی وب به طور کلی، شبکه به طور کلی،
و چگونه از این تکنولوژی ها گرد هم می آیند
اجازه می دهد تا ما را به ایجاد برنامه های بسیار پیچیده تر در بالای اینترنت
از تا کنون کرده ایم قادر به در این ویندوز سیاه و سفید بوده است.
در واقع، در این نقطه در ترم حتی اگر ما زمان نسبتا کمتری صرف
در PHP، HTML، CSS، JavaScript در مرورگر، SQL و بیشتر،
بسیاری از دانش آموزان تا پایان انجام پروژه های نهایی هستند که مبتنی بر وب
چرا که همانطور که خواهید دید، پس زمینه شما در حال حاضر در C
بسیار به این زبان سطح بالاتر است.
>> و به عنوان شما شروع به فکر کردن در مورد پروژه نهایی خود را،
که بسیار شبیه به تنظیم مشکل 0، که در آن شما را تشویق
برای انجام هر کاری بیشتر مورد علاقه شما در ابتدا،
پروژه نهایی فرصت خود را به دانش تازه کشف شده و تجارت خود را با C
یا PHP یا جاوا اسکریپت یا برای چرخش
و ایجاد قطعه بسیار خود را از نرم افزار برای دیدن دنیا را.
و به دانه ای که با ایده، می گویم بدانید که شما در اینجا می تواند سر، projects.cs50.net.
هر سال، ایده از اعضای هیات علمی و کارکنان و گروه های دانشجویی در محوطه دانشگاه ما التماس
فقط به ارائه ایده های خود را برای چیزهای جالب است که با استفاده از کامپیوتر می تواند حل شود،
با استفاده از وب سایت ها، با استفاده از نرم افزار است.
بنابراین اگر شما در حال تلاش برای آمد تا با ایده از را آن گونه که مایلید تغییر دهید،
با تمام معنی از طریق ایده های حرکت وجود دارد از این سال و آخرین.
برای مقابله با یک پروژه است که پنجه قبل از این کاملا درست است.
ما برنامه های زیادی را برای دیدن وضعیت لباسها در محوطه دانشگاه دیده می شود،
بسیاری از برنامه ها برای مرور منو سالن غذاخوری،
برنامه های زیادی را برای مرور فروشگاه دوره و مانند.
و در واقع، در یک سخنرانی در آینده و در سمینارهای آینده،
ما شما را به برخی از رابط های برنامه کاربردی در دسترس عموم معرفی، هر دو صورت تجاری در دسترس
و همچنین در اینجا در دسترس از CS50 در محوطه دانشگاه به طوری که شما دسترسی به داده ها
و پس از آن می توانید چیزهای جالب را با آن انجام دهد.
بنابراین بیشتر در مورد پروژه های نهایی در چند روز زمانی که ما را آزاد مشخصات،
اما در حال حاضر، می دانم که شما می توانید انفرادی و یا کار کردن با یک یا دو نفر از دوستان
در هر پروژه مورد علاقه شما.
اینترنت می باشد.
شما جلو بروید و لپ تاپ خود را بیرون بکشد، شما برای اولین بار به facebook.com بروید،
اخیرا یک عضو وارد نشده اید و آمار را وارد کنید. دقیقا چه اتفاقی می افتد؟
>> وقتی که شما وارد بر روی کامپیوتر خود رسید، یک دسته کامل از مراحل
شروع به مرتب کردن بر اساس جادویی اتفاق می افتد.
بنابراین شما در اینجا در سمت چپ، سرور های وب مانند فیس بوک است که در اینجا در سمت راست،
و به نحوی که شما با استفاده از این زبان به نام HTTP، پروتکل انتقال ابرمتن.
HTTP یک زبان برنامه نویسی نیست. آن را بیشتر از یک پروتکل است.
این مجموعه ای از کنوانسیون که مرورگرهای وب و سرویس دهنده وب استفاده از زمانی که intercommunicating است.
و این بدان معنی است به شرح زیر است.
بسیار شبیه به دنیای واقعی، ما باید این کنوانسیون
جایی که اگر برخی از انسان برای اولین بار شما را ملاقات، اگر شما از ذهن نیست humoring من در اینجا،
من ممکن است به شما، می گویند، "سلام، نام من است دیوید." >> سلام، دیوید. اسم من سامی است.
"سلام، دیوید اسم من سامی است."
بنابراین در حال حاضر ما فقط درگیر در این نوع از پروتکل احمقانه بشر
جایی که من از آغاز این پروتکل، سامی پاسخ داده شده است.
ما دست زده ام، و معامله کامل است.
HTTP است بسیار مشابه در روح.
هنگامی که مرورگر وب درخواست خود را www.facebook.com،
مرورگر شما است که واقعا انجام شده است گسترش دست خود را، پس به صحبت می کنند،
به سرور و ارسال آن پیام است.
و این پیام معمولا چیزی شبیه به - چه چیزی می خواهید؟ -
من صفحه اصلی، است که به طور معمول توسط از علامت ممیز تنها در پایان یک URL استفاده می شود.
و بنابراین شما می دانید به چه زبانی من صحبت کردن، من مرورگر می خواهم به شما بگویم
که من صحبت کردن نسخه HTTP 1.1،
و همچنین برای اندازه گیری خوب، من قصد دارم به شما بگویم که میزبان است که من می خواهم صفحه اصلی
facebook.com است.
به طور معمول، مرورگر وب، بدون اطلاع شما، انسان،
می فرستد این پیام را در سراسر اینترنت هنگامی که شما به سادگی تایپ کنید www.facebook.com،
>> را وارد کنید، در صفحه مرورگر خود.
و چه فیس بوک با پاسخ؟
آن را با برخی از جزئیات، به دنبال مشابه مرموز بلکه خیلی بیشتر پاسخ می دهد.
اجازه بدهید من به جلو بروید به صفحه اصلی فیس بوک در اینجا.
این صفحه نمایش است که بسیاری از ما احتمالا هرگز اگر شما به سیستم وارد شده باشد در همه زمان اقامت است،
اما این در واقع صفحه اصلی خود است.
اگر ما این کار را در Chrome، توجه کنید که شما می توانید بکشید تا این منوهای بافت کمی.
با استفاده از کروم، چه در سیستم عامل مک، ویندوز، لینوکس، و یا مانند،
اگر شما کنترل کلیک کنید و یا کلیک سمت چپ، شما معمولا می توانید جلو و یک منو است که به نظر می رسد مثل این،
که در آن چند گزینه در انتظار، که یکی از آنها صفحه نمایش مبدأ است.
شما همچنین می توانید به طور معمول به این چیز ها را با رفتن به منوی View و مجبور باشید.
به عنوان مثال، در اینجا تحت مشاهده، توسعهدهنده چیز همان است.
من قصد دارم به جلو بروید و نگاه کردن به صفحه نمایش به منبع.
آنچه شما خواهید دید HTML است که علامت گذاری به عنوان نوشته شده است به نمایندگی از facebook.com است.
این یک ظرف غذا کامل است، اما خواهیم دید که این را حس می کند کمی بیشتر قبل از اینکه طولانی است.
اما برخی از الگوهای در اینجا وجود دارد. اجازه بدهید پایین به این مسائل.
این سخت است برای یک انسان به خواندن، اما توجه داشته باشید که وجود دارد این الگوی براکت زاویه دار
کلمات کلیدی مانند گزینه، کلمات کلیدی مانند ارزش، برخی از رشته ها به نقل از.
این جایی است که، زمانی که شما برای اولین بار مشخص سال تولد خود را به امضا رساند.
که منوی کشویی سال تولد به نحوی کد گذاری
در این زبان به نام HTML، زبان نشانه گذاری ابرمتن.
به عبارت دیگر، هنگامی که مرورگر خود درخواست یک صفحه وب،
آن را صحبت می کند این کنوانسیون نامیده می شود HTTP است.
اما چه facebook.com به این درخواست پاسخ دهد؟
>> آن را با برخی از این پیام مرموز پاسخ، همانطور که ما را در یک لحظه را ببینید.
اما بیشتر پاسخ خود را در قالب HTML، زبان نشانه گذاری ابرمتن است.
که زبان واقعی است که در آن یک صفحه وب نوشته شده است.
و یک مرورگر وب واقعا پس از آن است، پس از وصول چیزی است که به نظر می رسد مثل این،
می خواند از آن بالا به پایین، از چپ به راست، و در هر زمان آن را می بیند یکی از این براکت زاویه دار
به دنبال یک کلمه کلیدی مانند گزینه، آن را نشان می دهد که زبان نشانه گذاری در راه مناسب است.
در این مورد، آن را از منوی کشویی سال را نشان می دهد.
اما باز هم، این ظروف سرباز یا مسافر در نگاه به است.
دلیل این است که توسعه دهندگان فیس بوک آشکار 0 برای 5 سبک، به عنوان مثال.
دلیل این است که بسیاری از کد است که آنها می خواهند بنویسند، در واقع، نوشته شده است به زیبایی،
به خوبی اظهار نظر، به سادگی فاصله دار، و مانند آن،
اما از ماشین، کامپیوتر، مرورگر واقعا لعنتی نمی دهد
اینکه کد خود را به خوبی مدل دهید.
و در واقع، آن را کاملا بی فایده به ضربه زدن به کلید تب تمام کسانی که بار
و برای قرار دادن نظرات در تمام طول کد شما و انتخاب نام متغیر واقعا توصیفی
چرا که اگر به مرورگر ربطی ندارد، شما در حال انجام در پایان روز از به هدر رفتن بایت.
>> بنابراین به نظر می رسد آنچه که بسیاری از وب سایت انجام دهید این است حتی اگر کد منبع برای facebook.com،
برای cs50.net و همه از این وب سایت بر روی اینترنت
معمولا به خوبی نوشته شده و به خوبی اظهار نظر و به سادگی فاصله دار و مانند آن،
به طور معمول قبل از وب سایت بر روی اینترنت قرار داده، کد minified
که در آن HTML و CSS - چیز دیگری که به زودی خواهید دید -
کد های جاوا اسکریپت ما به زودی خواهید دید فشرده
به موجب آن نام متغیر طولانی تبدیل به X و Y و Z
و تمام که فضای خالی است که باعث می شود همه چیز را اینقدر قابل خواندن است که همه دور انداخته،
چرا که اگر شما در مورد آن را در این راه فکر می کنم، فیس بوک یک صفحه میلیارد بازدید در روز می شود -
چیزی دیوانه می خواهم که - پس چه می شود اگر یک برنامه نویس فقط به مقعد می شود
ضربه نوار فضایی وقت اضافه فقط برخی از خط از کد را به دندانه دار کردن تا به حال خیلی بیشتر؟
مفهوم اگر فیس بوک را حفظ که فضای خالی
در همه کلمه در ادامه متن آنها ارسال بازگشت به مردم بر روی اینترنت؟
ضربه نوار فضا یک بار به شما می دهد بایت اضافی در فایل شما است.
و اگر یک میلیارد نفر از مردم و سپس در صفحه اصلی برای دانلود به ادامه آن روز،
چقدر بیشتر اطلاعات شما را از طریق اینترنت منتقل می شود؟
گیگابایت بدون هیچ دلیل خوبی است.
و اعطا شده، برای بسیاری از وب سایت ها این چنین یک مسئله مقیاس پذیر نمی باشد،
اما برای فیس بوک، گوگل، برای برخی از محبوب ترین وب سایت های
انگیزه ای بزرگ وجود دارد مالی را به کد خود را شبیه به یک ظرف غذا
به طوری که شما با استفاده از به عنوان بایت چند که ممکن است علاوه بر سپس آن را فشرده سازی
با استفاده از چیزی شبیه به فایل های فشرده، یک الگوریتم به نام GZIP،
که مرورگر را برای شما به صورت خودکار. اما این دردناک است.
ما هرکاری می کنم هرگز در مورد وب سایت های دیگر را از مردم یاد بگیرند و چگونه می توان به طراحی صفحات وب
اگر ما باید به آن شبیه این است.
>> خوشبختانه، مرورگرها مانند کروم و IE و Firefox این روزها
به طور معمول با ابزار پیشرفته ساخته شده است در آمده است.
در واقع، اگر من به پایین در اینجا به بازرسی عنصر یا اگر من به، توسعه دهنده،
و به ابزارهای توسعهدهنده صراحت،
این پنجره در پایین صفحه نمایش من در حال حاضر بالا میآید.
آن در ابتدا کمی تهدید آمیز است چرا که بسیاری از زبانه های ناآشنا در اینجا وجود دارد،
اما اگر من روی عناصر کلیک کنید تمام راه را در قسمت پایین سمت چپ،
کروم واضح است که بسیار هوشمند است. این می داند که چگونه به تفسیر همه این کد.
و بنابراین، آنچه که کروم آن را پاک HTML در فیس بوک است.
حتی اگر فضای خالی وجود نداشت، دندانه دار وجود نداشت،
در حال حاضر که من این صفحه وب می توانید شروع به حرکت همه بیشتر سلسله مراتبی اطلاع می دهد.
به نظر می رسد که هر صفحه وب نوشته شده در یک زبان به نام HTML5 باید با این شروع،
این اعلام DOCTYPE است، پس به صحبت می کنند: <! DOCTYPE HTML غیر فعال>
این نوع از نور و خاکستری وجود دارد، اما این اولین خط از کد در این فایل،
و که فقط به مرورگر می گوید: "با سلام، در اینجا می آید برخی از HTML5. در اینجا می آید یک صفحه وب است."
براکت باز برای اولین بار فراتر از آنچه که اتفاق می افتد به این چیز، براکت باز تگ HTML،
و پس از آن اگر من در عمیق تر شیرجه - این فلش هستند کاملا بی معنی است؛
آنها تنها به خاطر ارائه آنها در فایل در واقع نیست -
توجه کنید که در داخل تگ HTML در فیس بوک، هر چیزی را که شروع می شود با یک براکت باز
و پس از آن یک کلمه به نام یک تگ است.
بنابراین در داخل تگ HTML است که ظاهرا سر یک تگ و برچسب بدن است.
داخل تگ head در حال حاضر یک ظرف غذا برای فیس بوک است
چرا که آنها بسیاری از ابرداده و چیزهای دیگر را برای بازاریابی و تبلیغات است.
>> اما اگر ما حرکت به پایین، پایین، پایین، پایین، بیایید ببینید که در آن است. در اینجا آن است.
این یکی حداقل تا حدودی آشنا است.
عنوان صفحه اصلی فیس بوک، اگر شما تا به حال در برگه در نوار عنوان خود را نگاه کنید،
خوش آمدید به سایت فیس بوک - ورود، ثبت نام و یا بیشتر بدانید.
این چیزی است که شما می توانید در نوار عنوان کروم،
و این که چگونه آن را در کد نشان داده شده است.
اگر ما چشم پوشی از هر چیز دیگری در سر، بیشتر از جرات از یک صفحه وب در بدن هستند،
و معلوم است که کد در فیس بوک رفتن به نگاه پیچیده تر است
نسبت به اغلب چیزهای ما در ابتدا خواهم نوشت فقط به خاطر آن بوده است تا در طول سال ها ساخته شده است،
اما زیادی از تگ های اسکریپت، کد جاوا اسکریپت وجود دارد،
باعث می شود که وب سایت های تعاملی:
دیدن به روز رسانی وضعیت بلافاصله با استفاده از زبان هایی مانند جاوا اسکریپت.
چیزی به نام یک دیو، که یک بخش از یک صفحه وجود دارد.
اما قبل از ما که به جزئیات، اجازه دهید سعی کنید به زوم کردن
و نگاه کردن به نسخه ساده از فیس بوک 1.0، پس به صحبت می کنند.
در اینجا سلام، جهان را از صفحات وب می باشد.
آن است که اعلام DOCTYPE بسیار بالا
است که کمی متفاوت از هر چیز دیگری است.
چیز دیگری که ما در یک صفحه وب ارسال به شروع با <! جز این که خط وجود دارد
و به جز چیزی به نام نظر در HTML است.
اما در اکثر موارد، همه چیز را در یک صفحه وب باز براکت، کلید واژه ها، براکت نزدیک است.
>> در این مورد شما می توانید از ساده ترین صفحات وب ممکن را ببینید.
تگ های HTML شامل تگ سر و آن شامل یک تگ body
اما توجه کنید که این مفهوم تگ های شروع و متوقف کردن وجود دارد.
این تگ شروع HTML، تگ نزدیک و یا تگ پایان است.
توجه داشته باشید که آنها مرتب سازی بر اضداد به این معنا که تگ نزدیک و یا تگ پایان
تا به این رو به جلو در داخل از خود بریده بریده.
در همین حال، سر یک تگ باز و تگ سر در اینجا وجود دارد.
>> عنوان باز و یک تگ عنوان نزدیک در اینجا وجود دارد.
واقعیت این است که من به عنوان یک خط کاملا خودسرانه قرار داده است.
این فقط شبیه آن را به سادگی در یک خط جا، بنابراین من زحمت نیست با ضربه را وارد کنید یک بار زن و شوهر است.
در همین حال، بدن من انجام تورفتگی فقط تا کنون روشن است.
توجه کنید که HTML یک زبان بسیار گنگ است.
در واقع، در روز قبل از ویرایشگرهای WYSIWYG وجود دارد
و مایکروسافت ورد که در آن شما می توانید می گویند، "این را جسورانه، کج (ایتالیک)،"
شما در واقع دستورات کمی در مقالات تایپ 20 + سال پیش
به موجب آن شما می گویند، "شروع به ساختن این متن bold است. توقف ساخت این متن bold است."
"شروع به ساختن این کج (ایتالیک) متن. توقف ساخت این کج (ایتالیک) متن.
>> این چیزی است که HTML و یا هر زبان نشانه گذاری است.
این برچسب اول می گوید، "هی، مرورگر در اینجا می آید برخی از HTML است."
تگ بعدی می گوید، "هی، مرورگر در اینجا می آید سر، هدر صفحه وب من است."
"هی، مرورگر. در اینجا می آید عنوان.
و پس از آن در اینجا، "هی، مرورگر که آن را برای این عنوان است."
بنابراین این مرورگر می داند که چگونه به دیگر نمایش کاراکتر بیش از خوش آمدید، جهان
در نوار عنوان.
در همین حال، این می گوید: "که آن را برای سر."
این می گوید: "در اینجا می آید بدن است که بدن واقعی است." - به معنای واقعی کلمه، کلمات سلام، جهان است.
و می گوید: در اینجا، "که آن را برای بدن است. که آن را برای HTML است."
بنابراین مرورگرهای بسیار گنگ است.
آنها فقط این مسائل بالا به پایین، از چپ به راست، خواندن و انجام دقیقا همان چیزی است که به آنها گفته شود به انجام.
اجازه دهید در واقع یک مثال کوچک در اینجا.
اجازه دهید من باز کردن ساده ترین برنامه ها در مک من در اینجا، یعنی TextEdit.
در ویندوز شما می توانید تا notepad.exe را استفاده کنید.
اما این همه شما نیاز به شروع به ساخت صفحات وب می باشد.
من قصد دارم به جلو بروید و فقط کپی کنید و این کد را در این فایل است.
من قصد دارم به جلو بروید و ذخیره آن بر روی میز من،
و من قصد دارم به نجات این hello.html،
و در حال حاضر فایل به نام hello.html.
در اینجا آن را بر روی میز من است.
اجازه دهید من در حال حاضر به یک مرورگر و کشیدن فایل به داخل مرورگر است.
و voila، در اینجا اولین صفحه وب من است.
توجه داشته باشید که به عنوان تب خوش آمدید، جهان به عنوان هر تگ عنوان،
و توجه داشته باشید که سلام جهان است که بدن از صفحه وب من است،
و وو هو، من در اینترنت هستم.
>> من واقعا، درست نیست، چرا که این فایل بر روی اینترنت است.
این اتفاق می افتد بر روی دیسک سخت محلی که در آن مسیر خاص می باشد.
اما این ایده همان است. همه ما در حال حاضر نیاز به یک سرور وب که به آن آپلود شده است.
اما در ابتدا در واقع معرفی پیچیدگی کمی بیشتر و کمی بیشتر مد به شما اجازه می دهد تا.
این ساده است، اگر خسته کننده، صفحه وب است.
به نظر می رسد از انواع دیگر از تگ ها می توانید استفاده کنید وجود ندارد.
به عنوان مثال، در اینجا زرد من معرفی 2 برچسب ها جدید است.
ما خیلی با این امروز بازی نمی کند، اما توجه کنید که برچسب لینک
به نوعی به نظر می رسد متفاوت از هر چیز دیگری است.
تگ لینک به طول می انجامد، آنچه که به نام صفات،
و صفت چیزی است که تغییر رفتار از یک تگ است.
در این مورد بهترین انتخاب نام، لینک نیست، چرا که نوع آن بی معنی،
اما این تگ لینک می گوید، در اصل، شامل فایل CSS درون صفحه وب من به نام.
شما می توانید فکر می کنم از این به عنوان شبیه به C # شامل بخشنامه.
CSS قرار است با اشاره به زبان های مختلف در دسترس نباشد که ما نمی خواهد بازی با امروز،
اما آن را برای زیبایی شناسی: اندازه فونت، رنگ، پد، دندانه دار، حاشیه،
و همه از این نوع زیبایی شناسی از جزئیات.
در همین حال، برچسب اسکریپت عملکرد مشابه،
اما به جای عبارتند از CSS، آن زبان، شامل زبان دیگر، جاوا اسکریپت می باشد.
بنابراین به عبارت دیگر، با این 2 برچسب ها من در نهایت قادر خواهد بود برای نوشتن صفحه وب خود من باشد
بلکه در کد بکشد که من یا شخص دیگری نوشته شده است
به طوری که ما می توانیم بر روی شانه های مردم دیگر ایستاده، ما می توانیم طراحی خوب تمرین
مقاطعه خارج کد رایج است.
اگر من 10 صفحات وب مختلف، این به این معنی است که برخی زیبایی شناسی من
را می توان از عامل، بسیار همانند # include، به یک فایل جداگانه است.
بنابراین ما در حال گرفتن وجود دارد.
اما اجازه دهید در واقع اولین چیزی جالب تر شده که این فایل را گزارش کنید.
>> باز هم، این است که فقط TextEdit است. من در اینترنت از لحاظ فنی هنوز رتبهدهی نشده است، اما ما وجود دارد.
من می خواهم به خوش آمدید، جهان کمی جسورانه تر از آن است.
پس سلام، اجازه دهید می گویند خودسرانه برای ضخیم.
باز هم داستان همان است: سلام، کاما، شروع به ساخت این ضخیم،
پس از آن جهان می شود ضخیم چاپ شده، و این به معنی توقف چاپ های پررنگ (bold) متعلق است.
اجازه دهید من به جلو بروید و ذخیره فایل، به بازگشت به Chrome، من فقط در بنابراین ما می توانیم آن را بهتر زوم،
و مجدد، و شما خواهید دید که دنیا در حال حاضر در ضخیم.
وب همه چیز در مورد لینک، پس جلو بروید و اجازه دهید این کار را انجام
وب سایت مورد علاقه من است، اجازه دهید می گویند، youtube.com.
ذخیره، بارگذاری مجدد. باشه. مشکلات زن و شوهر در حال حاضر علاوه بر زشتی از وب سایت وجود دارد.
1، من کاملا مطمئنم که من ضربه را وارد کنید در اینجا. و من.
من نه تنها ضربه را وارد کنید، من هم فاصله دار، تمرین آنچه که ما موعظه در مورد سبک،
اما من درست در کنار به جهان است.
پس چرا؟ مرورگرها تنها آنچه به شما می گویند آنها را به انجام.
من به مرورگر گفته، "خط فرار از اینجا. قرار دادن بند شکستن در اینجا."
بنابراین مرورگر، مهم نیست که اگر من به آمار بازگشت 30 برابر،
هنوز هم برای قرار دادن حق من به جهان است.
چیزی که من واقعا باید به انجام چیزی می گویند مانند در، قرار دادن یک خط شکسته است.
>> و در واقع، به یک خط نوع یک چیز عجیب و غریب است
دلیل این که شما واقعا نمی تواند شروع به حرکت به خط دیگر، پس از آن چیزی را انجام دهید،
و پس از آن در حال حرکت به یک خط جدید را متوقف کند. این نوع از عملیات اتمی است.
شما هم آن را انجام دهید و یا نه. به شما ضربه وارد کنید و یا شما نمی کنند.
بنابراین برزیلی کمی از برچسب های مختلف است، و بنابراین من نیاز به مرتب کردن بر اساس از هر دو باز و بستن آن
همه در یک بار.
نحو برای آن است.
با مشخصات فنی، شما می توانید چیزی شبیه به این را انجام دهید، در برخی از نسخه های HTML
اما این فقط احمقانه است چون هیچ دلیلی برای شروع و متوقف کردن چیزی وجود دارد
اگر شما به جای آن می توانید آن را همه در یک بار انجام دهید.
این را فهم کنید که HTML5 به شدت نیاز به این علامت ممیز،
بنابراین شما کتاب های درسی و منابع آنلاین است که آن را نمی خواهد،
اما برای اندازه گیری خوب به شما اجازه می دهد تا عمل تقارن که ما تا کنون دیده ایم.
این به این معنی است که هر دو تگ باز و بسته است.
بنابراین در حال حاضر فایل را ذخیره کنید، بروید به اینجا.
خوب، پس از آن شروع به نگاه بهتر، به جز وب من می دانم که از نوع قابل کلیک،
و در عین حال YouTube را در اینجا به نظر نمی رسد که منجر به هر چیزی.
دلیلش این است که حتی اگر آن را مانند یک لینک به نظر می رسد، این مرورگر که در هر سه را نمی دانم،
بنابراین من باید به مرورگر بگویید که این یک لینک است.
>> راه برای انجام این کار این است که به استفاده از یک برچسب Anchor:
<یک عکاس هنگام عکسبرداری مرجع، بیش از حد است که راه مدرسه قدیمی گفت: یک لینک،
= "http://www.youtube.com">
و اجازه دهید این حرکت من به یک خط جدید فقط تا آن را کمی بیشتر قابل خواندن است،
و من اندازه فونت کوچک.
من انجام نشده است؟ خیر قصد دارد به این دوگانگی است.
این برچسب، برچسب Anchor، در واقع یک صفت را،
که به تغییر رفتار خود، و ارزش آن صفت است ظاهرا URL یوتیوب.
اما متوجه دوگانگی این است که فقط به خاطر اینکه که URL شما در حال رفتن به
این به آن معنا نیست که به کلمه ای که شما تاکید و ساخت یک لینک است.
در عوض، که می تواند چیزی شبیه به این.
بنابراین باید بگویم توقف ساخت این کلمه یک لینک با استفاده از برچسب Anchor نزدیک است.
توجه داشته باشید که من این انجام نمی دهد.
1، این فقط می خواهد اتلاف زمان هر کس باشد و لازم نیست.
>> برای بستن یک تگ، شما فقط به نام از تگ دوباره اشاره کرد.
شما به هر یک از ویژگی ها اشاره نمی کند.
بنابراین صرفه جویی اجازه دهید که به عقب برگردید. خوب، voila، در حال حاضر آن را در آبی و لینک است.
اگر من آن را کلیک کنید، من در واقع به یوتیوب بروید.
بنابراین حتی اگر صفحه وب من است که بر روی اینترنت نیست، آن را حداقل HTML غیر فعال است
و اگر ما اجازه اینترنت عقب، ما در واقع تا پایان در اینجا در youtube.com.
و من می تواند به عقب برگردد و در اینجا صفحه وب من است. اما متوجه این.
اگر تا کنون بدست هرزنامه و یا یک حمله فیشینگ،
در حال حاضر شما از این توانایی پس از فقط پنج دقیقه برای انجام همان.
ما در اینجا می توانید بروید و چیزی شبیه به www.badguy.com
یا هر وب سایت ناقص است، و پس از آن شما می توانید می گویند تأیید حساب پی پال خود.
[خنده] و در حال حاضر این است که برای رفتن به badguy.com، که من قصد ندارم با کلیک بر روی
چرا که من هیچ ایده که در آن است که منجر شده است. [خنده]
>> اما ما در حال حاضر توانایی در واقع تا پایان وجود دارد.
بنابراین ما واقعا شروع به خراش سطحی است.
ما در هر سه برنامه نویسی نیست، ما در حال نوشتن زبان نشانه گذاری است.
اما به محض اینکه ما دور از واژگان ما را در HTML
خواهیم PHP، زبان برنامه نویسی واقعی را معرفی
است که به شما این امکان را می دهد که ما برای تولید HTML به صورت خودکار، ایجاد CSS به صورت خودکار،
به طوری که ما می توانیم در روز چهارشنبه آغاز خواهد شد به پیاده سازی، می گویند،
موتور جستجوی خود ما و بیشتر.
اما بیشتر در که در چند روز. ما شما را به پس از آن را ببینید.
>> [CS50.TV]