>> DAVID J مالان: درست است، بنابراین این CS50.
و روشن است که این جمعه.
و این پایان هفته است.
بنابراین شما ممکن است به یاد آورید که ما را ترک کردن، زمان گذشته، با یک داستان جالب از انواع.
به موجب آن ما این دروغ را برملا، که هیچ ماده در حال رشد چه به شما آموزش داده شده است
تا، 1 تقسیم بر 10 است، در واقع، 0.1 و یا 0.100 یا 0.10000.
در واقع، اگر ما این را کامپایل برنامه، به عنوان ما دیروز بود، با،
را عدم دقت، و سپس انجام نقطه، بریده بریده، عدم دقت،
ما آموخته است که این همان چیزی است 1 تقسیم بر 10 واقع است.
به طوری که واقعا بسیار مورد نیست.
اما این به آن اشاره در برخی از محدودیت های اساسی کامپیوتر.
و در واقع، در میان چیزهایی که ما قصد داریم برای انجام
امروز نگاهی به این است اتفاق افتاده است، چه پیامدهای این است،
چگونه انسانیت شکست خورده است به درک این در برخی بسیار
situations-- جدی در نتیجه از که
شده است کاملا غم انگیز و expensive-- و همچنین
نگاهی به چگونه ما در واقع می تواند دفاع
در برابر این نوع از محدودیت.
تا به طور مستقیم، شاید، به همین دلیل است 1 تقسیم بر 10،
با توجه به کامپیوتر من در اینجا، نه فقط 1/10، 0.10؟
آره.
شما چی فکر میکنید؟
>> مدعو: مبنا متفاوت است؟
>> DAVID J مالان: چیست؟
اوه، مبنا متفاوت است؟
بنابراین نه کاملا.
این در واقع بیشتر اساسی به سخت افزار.
دیگر افکار؟
آره.
مدعو: آنها اعداد متفاوت؟
DAVID J مالان: پس they-- راست.
آنها نشان دهنده متفاوت اعداد.
اشتباه، ظاهرا.
به طوری که is-- خوب، متفاوت از آنچه؟
و یا از چه کسی؟
از ما؟
مدعو: آره.
آنها از اعشار استفاده نمی سیستم را به [نامفهوم].
DAVID J مالان: OK.
بنابراین به یک معنا، آنها نمی استفاده از سیستم دهدهی است.
در زیر هود، همه چیز است، در واقع، باینری،
و این که مرتبط، در واقع.
اما آن را حتی ساده تر توضیح از آن است.
آره.
>> مدعو: آنها تنها بسیاری از بیت داشته باشد.
آنها فقط می توانند ذخیره تا برخی از میزان، می خواهم با اعشار.
>> DAVID J مالان: آره.
این چیزی است که واقعا در آن است.
به نظر می رسد که کامپیوتر به طور معمول، همیشه تنها خواهد شد
استفاده از یک مقدار محدود از اطلاعات برای نشان دادن چیزی.
درست؟
پس از همه، ما تنها یک ثابت را داشته باشند مقدار فضای هارد دیسک.
ما فقط یک مقدار ثابت دارند رم، و یا حافظه کامپیوتر است.
و اگر شما فقط یک دارند مقدار ثابت از چیزی،
مطمئنا شما در واقع نمی تواند تعداد بالا تا بی نهایت و یا هر تعداد که می خواهید.
شما، نوع، به انتخاب کنید و را انتخاب کنید چه محدوده
از ارزش شما در حال رفتن برای حمایت از.
>> و بنابراین، برای مثال، یک یا دو هفته پیش، زمانی که ما در مورد ASCII صحبت کردیم،
و ما در مورد صحبت 8 بیت، و یا یک بایت، پس به صحبت می کنند،
بزرگترین عدد ما می تواند نمایندگی با 8 بیت چه بود؟
255.
و ما می توانیم 256 کل ارزش نشان اما اگر ما صرف یکی از آنها
در 0-- خوب، اما اگر ما صرف یکی از آنها در 0،
پس از آن بزرگترین عدد است، البته، 255.
>> پس از آن می رسد، که این است مورد بیش از حد، در این زمینه.
ما صحبت کردن در، زمان گذشته آغاز شده، در مورد اعداد ممیز شناور، که
از اعداد صحیح هستند، در که آنها یک نقطه اعشار
و امیدوارم، برخی از اعداد پس از آن، اما آنها بیش از حد.
یک کامپیوتر است تنها به طور معمول رفتن به استفاده از 32 بیت، 64 بیت شاید
برای نشان دادن یک مقدار ممیز شناور.
بنابراین حتی اگر ما رشد کرده ام تا یادگیری ریاضیات و دانستن
است که شما کاملا می توانید تعداد نامتناهی از اعداد
بعد از نقطه اعشار، نه اگر شما حافظه محدود است.
شما، نوع، باید به دور، و یا انتخاب و انتخاب کنید که
اعداد را که در حال رفتن به نمایندگی کند.
و به این ترتیب شما می توانید از فکر می کنم، به یک معنا، این که کامپیوتر نزدیکترین
تقریب به ارزش 1/10 که آن را می توانید دریافت کنید، تنها با 32 یا بیت است.
و آن را فقط 1/10 است.
>> برای مثال، اگر این تغییر به 1/3، که ما فکر می باشد حتی ساده تر.
بنابراین 1 تقسیم بر 3.
اجازه دهید من فایل را ذخیره کنید.
اجازه بدهید به جلو و کامپایل مجدد آن.
و اجازه دهید من دوباره آن را اجرا کنید.
در اینجا نیز، ظاهرا، 1/3 است 0.3 نیست و پس از آن به تعداد نامحدود از 3
پس از آن.
شما باید این عدم دقت در پایان.
بنابراین ما انسان ها درست است، و آنچه شما به دست، در واقع، درست است،
اما ما در حال تداوم تا در برابر برخی از محدودیت.
>> و آنچه من فکر کردم ما امروز است، شروع
با نگاه، صادقانه بگویم، عواقب فاجعه بار از این
گاهی اوقات، زمانی که انسان کاملا پیاده سازی نیست
برای این واقعیت و این محدودیت ها.
و ما یک سری از عکس های شرح داری را ببینید از کانال تاریخچه که طول می کشد
نگاهی که چگونه همه چیز خطا رفته اند.
آن را در مورد 8 دقیقه، و ما بعد از این آمده
و نگاهی به دقیقا چه چیز دیگری می تواند به اشتباه.
اگر ما می تواند lights-- کم نور
>> [پخش ویدئو]
>> -Computers، ما همه آمده ام تا قبول مشکلات اغلب نا امید که
با آنها بروید.
اشکالات، ویروس ها، و نرم افزار اشکالات قیمت های کوچک
برای راحتی پرداخت.
اما در تکنولوژی بالا و با سرعت بالا نظامی و برنامه های فضایی برنامه های کاربردی،
کوچکترین مشکل می تواند به فاجعه بزرگ است.
در 4 ژوئن 1996، دانشمندان آماده برای راه اندازی یک بدون سرنشین موشک Ariane 5 موشک.
آن را حمل علمی ماهواره
به ایجاد دقیقا چگونه تعامل میدان مغناطیسی زمین
با بادهای خورشیدی.
راکت برای ساخته شد آژانس فضایی اروپا
و خاموش برداشته از امکانات خود در ساحل گویان فرانسه.
>> البته حدود 30 ثانیه به پرواز، آنها برای اولین بار
چیزی متوجه شد که اشتباه است.
که نازل شد آهنی در راه آنها واقعا باید نیست.
حدود 40 ثانیه به پرواز، به وضوح خودرو دچار مشکل شد،
و این زمانی که آنها ساخته شده تصمیم به نابود کردن آن.
افسر ایمنی با محدوده جرات فوق العاده فشار دادن دکمه،
منفجر موشک قبل از آن می تواند یک خطر برای امنیت عمومی تبدیل شده.
>> -این قبل از ازدواج بود سفر از موشک Ariane 5،
و تخریب آن را گرفت به دلیل یک نقص مشخصات
جاسازی شده در نرم افزار موشک است.
بانک مشکل در آریان بود که وجود دارد
یک شماره است که مورد نیاز بود 64 بیت بیان می شوند،
و او می خواست برای تبدیل آن را به تعداد 16 بیتی.
گمان می کردند که تعداد هرگز به بسیار بزرگ،
که بسیاری از کسانی رقم در تعداد 64 بیتی بود 0 است.
آنها در اشتباه بودند.
>> بانک ناتوانی یک برنامه نرم افزار به قبول
نوع تعداد تولید شده توسط دیگر در ریشه شکست بود.
توسعه نرم افزار تبدیل شده بود بخش بسیار پر هزینه از تکنولوژی جدید است.
آریان 4 موشک بسیار بوده است موفق است، بنابراین بسیاری از نرم افزار
ایجاد شده برای آن بود در موشک Ariane 5 استفاده می شود.
>> بانک مشکل اساسی این بود که آریان 5 سریعتر بود، شتاب سریع تر است.
و نرم افزار بود اختصاص دارد.
>> بانک نابودی موشک یک فاجعه مالی بزرگ بود،
همه به دلیل یک خطای نرم افزار دقیقه است.
اما این اولین نیست زمان مشکلات تبدیل داده ها
فن آوری موشکی مدرن به ستوه آورده بود.
>> -در سال 1991، با شروع از جنگ اول خلیج فارس،
موشک یک نوع مشابه تجربه
از مشکل تبدیل عدد است.
در نتیجه، 28 نفر، 28 سربازان آمریکایی
در مورد کشته و 100 تن دیگر زخمی شدند،
زمانی که Patriot، که قرار بود برای محافظت در برابر scuds ورودی،
موفق به آتش موشک.
>> هنگامی عراق به کویت حمله و امریکا در اوایل سال 1991 آغاز طوفان صحرا،
موشک پاتریوت مستقر شدند برای حفاظت از عربستان سعودی و اسرائیل
از حملات موشکی اسکاد عراق است.
پاتریوت آمریکایی، میان برد است سطح به هوا سیستم
تولید شده توسط شرکت ریتون.
>> بانک اندازه از رهگیر پاتریوت، خودی خود، در مورد، حدود 20 فوت طول.
و وزن آن حدود 2000 پوند است.
و آن را حمل یک کلاهک از about-- من فکر می کنم تقریبا 150 پوند است.
و کلاهک، به خودی خود، یک ماده منفجره بالا است،
که قطعات در اطراف آن.
محفظه از کلاهک است طراحی شده به مانند ساچمه درشت عمل می کنند.
>> بانک موشک ها انجام شده، 4 در هر ظرف،
و توسط یک نیمه تریلر منتقل می شود.
>> -روز سیستم ضد موشکی پاتریوت حداقل 20 سال در حال حاضر به عقب می رود.
این اصل طراحی شده بود به عنوان یک موشک دفاع هوایی
به شلیک کردن هواپیما دشمن.
در جنگ اول خلیج فارس، وقتی که جنگ آمد همراه،
ارتش خواست به استفاده از آن را به شلیک کردن scuds، نه هواپیما.
نیروهای عراقی بود خیلی از یک مشکل،
اما ارتش در مورد scuds نگران بود.
و به طوری که آنها به محاکمه ارتقاء پاتریوت.
>> -Intercepting دشمن موشک سفر در ماخ پنج
قرار بود به چالش کشیدن به اندازه کافی.
اما زمانی که پاتریوت را به خدمت عجله شد،
ارتش بود از آگاه نیست اصلاح عراق ساخته شده است که
scuds خود تقریبا غیر ممکن است به ضربه.
>> چه اتفاقی افتاده است، که scuds در سال های آینده، ناپایدار بودند،
آنها لرزش شد.
دلیل این امر این، مردم عراق بود، به منظور
برای به دست آوردن 600 کیلومتر از یک موشک برد 300 کیلومتر،
وزن خارج از کلاهک مقابل و جو در زمان و کلاهک سبک تر.
بنابراین در حال حاضر، این پاتریوت در تلاش برای رسیدن در حرکت تند و سریع، و بسیاری از زمان،
اکثریت قریب به اتفاق از زمان، آن را فقط توسط اسکاد پرواز.
>> هنگامی اپراتورهای سیستم پاتریوت متوجه پاتریوت از دست رفته هدف خود را،
منفجر کلاهک پاتریوت، برای جلوگیری از تلفات احتمالی اگر
به سقوط به زمین اجازه داده شد.
>> یعنی چیزی بود که بسیاری از مردم را دیدم، آن گوی های آتشین بزرگ در آسمان،
و اشتباه به عنوان ره گیری از کلاهک اسکاد.
اگر چه در شب آسمان، میهن پرستان ظاهر شد
به موفقیت شود از بین بردن scuds، در ظهران،
می تواند بدون اشتباه وجود دارد در مورد عملکرد آن است.
وجود دارد، سیستم رادار پاتریوت از دست داده مسیر یک حرکت تند و سریع ورودی،
و هرگز راه اندازی شد، به دلیل نقص نرم افزار است.
این اسرائیلی هایی که اولین بار کشف شد که دیگر سیستم بر روی بود،
بیشتر اختلاف زمان شد، با توجه به یک ساعت تعبیه شده
در کامپیوتر سیستم است.
>> -درباره 2 هفته قبل فاجعه در ظهران،
اسرائیلی ها به گزارش وزارت دفاع،
که سیستم شد زمان از دست دادن، که پس از حدود 8 ساعت از در حال اجرا،
آنها متوجه است که این سیستم تبدیل شدن به طرز محسوسی کمتر دقیق است.
وزارت دفاع در پاسخ به گفتن تمام پاتریوت
سیستم به ترک برای مدت زمان طولانی.
آنها هرگز گفت: چه مدت زمان طولانی بود.
8 ساعت؟
10 ساعت؟
1000 ساعت؟
هیچ کس نمی دانست.
بانک پاتریوت مستقر در پادگان
در ظهران و ناقص داخلی آن ساعت، در بیش از 100 ساعت بوده است
در شب 25 فوریه.
>> آن را زمان ردیابی با دقت در حدود 1/10 ثانیه.
در حال حاضر 1/10 ثانیه است تعداد جالب
چون نمی توان آن را بیان شده در دودویی، دقیقا.
که بدان معنی است، نمی تواند بیان شود، دقیقا،
در هر کامپیوتر مدرن دیجیتال.
آن را سخت به این باور، اما استفاده از این به عنوان مثال.
بیایید تعداد، 1/3.
1/3 را نمی توان بیان شود در اعشاری، دقیقا.
1/3 0.333 در جریان بی نهایت است.
هیچ راهی برای انجام این کار وجود دارد، با دقت مطلق، در دهدهی.
که دقیقا همان نوع است مشکل این است که در پاتریوت اتفاق افتاده است.
دیگر سیستم زد، بدتر از خطای زمان تبدیل شد.
>> -After 100 ساعت پس از عمل، خطا در زمان تنها در حدود 1/3 از یک ثانیه بود.
اما از نظر هدف قرار دادن موشک سفر در ماخ 5،
آن را در یک ردیابی منجر خطا از بیش از 600 متر است.
این امر می تواند یک خطای مهلک برای سربازان در ظهران.
>> چه اتفاقی افتاده است، راه اندازی اسکاد است تشخیص داده شده توسط ماهواره های هشدار،
و آنها جدید است که حرکت تند و سریع بود آینده در جهت خود را.
آنها دانم که در آن بود در آینده.
>> آن را در حال حاضر تا رادار بود بخشی از سیستم پاتریوت،
دفاع از ظهران، به کردهاید و حفظ آهنگ از موشک دشمن وارده.
>> بانک رادار بسیار باهوش بود.
در واقع عملا پیگیری موقعیت اسکاد
و پس از آن پیش بینی که احتمالا خواهد بود،
زمان بعدی، رادار پالس ارسال می شود.
که دروازه محدوده نامیده می شد.
>> سپس،، یک بار پاتریوت تصمیم می گیرد زمان کافی
گذشت به عقب برگردید و بررسی بعدی محل برای این شی تشخیص داده،
آن را به عقب می رود.
بنابراین، هنگامی که آن را رفت و برگشت به اشتباه محل، آن را پس از آن می بیند هیچ شی
و آن تصمیم می گیرد که هیچ وجود دارد جسم، آن را تشخیص نادرست بود،
و قطره مسیر.
ورودی اسکاد ناپدید شد از صفحه رادار،
و ثانیه بعد، آن را ناودان به سربازخانه.
اسکاد 28 کشته و آخرین یکی در طول جنگ اول خلیج فارس بخوره.
متأسفانه، نرم افزار به روز رسانی روز بعد در ظهران وارد شدند.
نقص نرم افزار به حال شده ثابت، بسته شدن
یک فصل در مشکل تاریخ موشک.
>> [END پخش]
>> DAVID J مالان: پس ما یک نگاه برخی از محدودیت های مشابه در فقط یک کمی.
اما در ابتدا، اجازه دهید انتقال به چند FYI است.
بنابراین one-- این آخر هفته، وجود دارد خواهد بود بخش های فوق العاده،
که به معنای جایگزین بخش طور منظم برنامه ریزی، که
شروع خواهد شد تا یک هفته از این رو.
نگاهی به وب سایت CS50 را برای اطلاعات بیشتر بر روی آن.
آنها همچنین فیلم برداری می شود و جریان برای کسانی که قادر به شرکت در زندگی می کنند.
مجموعه مسئله 1 در وب سایت البته در حال حاضر،
و ما یک نگاه که در فقط یک کمی.
و ساعات اداری بیش از حد، را مشخصات این از دوشنبه تا پنجشنبه.
>> بنابراین این متعارف بود برنامه ما در زمان گذشته بود.
آن را مانند ساده ترین است برنامه شما می توانید در C ارسال،
و حتی این که یک بیت از یک ادعای جسورانه است.
درست؟
از آنجا که بسیاری از وجود دارد به نظر می رسد پیچیدگی به این.
بنابراین اجازه دهید یک نگاه سریع در چه برخی از این عناصر
و سپس سعی در ارائه یک مدل ذهنی برای
این ساده ترین برنامه کار می کنند، و پس از آن ما شروع
به دنبال چیز پیچیده تا کنون بیشتر.
بنابراین این خط در اینجا، برجسته در حال حاضر، در رنگ های زرد، چه ما می گویند، زمان گذشته،
که این کار را برای ما؟
هدف آن را در خدمت چه خبر؟
هر کسی که از دورتر پشت؟
آره.
>> مدعو: [نامفهوم]
DAVID J مالان: خوب.
پس از آن شما می دهد دسترسی به دستورات، و یا اجازه دهید
آنها پاسخ توابع، که کسی دیگری نوشت، که اعلام می شوند،
پس به صحبت، در برخی از فایل های دیگر.
بنابراین ما دقیقا همان چیزی است فایل .h ببینید است در مقابل یک فایل C، در نهایت.
اما در حال حاضر، فقط می دانم که printf، برای مثال،
در زمره که بوده اند و اعلام شده در برخی از دیگر فایل، در جایی
دیگری بر روی هارد دیسک ابر که اجازه می دهد تا ما برای دسترسی به تابع () printf و استفاده از آن
بدون نیاز به دوباره اختراع که خودمان چرخ.
در همین حال، اصلی است.
آنالوگ اصلی، هفته گذشته چه بود؟
آره.
>> مدعو: پرچم سبز کلیک است.
>> DAVID J مالان: آره.
ابتدا، زمانی که پرچم سبز کلیک.
آن را مانند قطعه پازل است که لگد چیز خاموش است.
و به این ترتیب به طور مشابه، آیا جهان چند سال پیش که در C تصمیم گرفت،
و یک دسته از زبان های دیگر، اگر شما می خواهید برای نوشتن یک برنامه،
اولین تابع خود را تا به آن می شود، اصلی است.
و آن را به شبیه به این.
اما ما می گردم، زمان دیگر، به آنچه که، هوشمند،
و، از درجه اعتبار ساقط، منظور در این زمینه.
در حال حاضر، آکولاد از نوع از مانند شکل قطعه پازل خراش است
که کپسوله برخی از تعدادی از خطوط.
و در میان در خط در اینجا، این یکی در اینجا است.
تابع () printf یک تابع است که هدف در است زندگی این است که چاپ یک رشته فرمت.
و با فرمت شده، منظور من شما می توانید در ارزش حفره یا سوراخ پلاگین،
و شما می توانید بسیاری از اعشار مشخص چگونه نقاط، چگونه بسیاری از اعداد به چاپ
بعد از نقطه اعشار و مانند آن.
و تابع () printf، البته، طول می کشد یک و یا استدلال و یا پارامترهای بیشتر،
در غیر این صورت شناخته شده است، به سادگی بیشتر، به عنوان ورودی.
>> بنابراین تابع () printf، مانند بسیاری از توابع، طول می کشد ورودی.
و کسانی که ورودی ها را در آغوش گرفت توسط دو پرانتز در اینجا.
و در داخل از آن یک ورودی است.
این یک رشته است، به عنوان ما آن را به نام، که فقط یک دنباله ای از کاراکتر ها است،
مانند یک کلمه یا یک عبارت یا یک کل مقاله حتی در بین دو علامت.
و این چیزی است که رفتن به نفوذ در رفتار تابع () printf چرا که، البته،
آن را فقط یک تابع print عمومی است.
آن را به دانستن آنچه که به چاپ، مگر اینکه شما آن را بگویید.
و پس از آن، برخی از جزئیات.
آنچه ما می گویند این عجیب و غریب دنباله ای از نمادها است؟
آره.
>> مدعو: خط جدید.
>> DAVID J مالان: خط جدید.
پس از آن معلوم است، شما فقط نمی تواند ضربه، را وارد کنید، زمانی که شما در حال نوشتن برنامه است.
به طور کلی، کامپایلر است رفتن به دریافت کمی گیج به منظور شما چیست.
در عوض، شما به معنای واقعی کلمه می گویند، من یک خط جدید در اینجا به من بدهید.
و به این ترتیب / N چیزی است که ما به طور کلی شخصیت فرار است.
بنابراین نفر، برای خط جدید.
و کامپایلر می داند که زمانی که آن / N را می بیند،
در واقع باید آن را وادار به کامپیوتر، در نهایت، یا printf، در این مورد،
برای چاپ کردن نمونه جدیدی از واقعی خط، مانند ضربه، را وارد کنید،
کلید در صفحه کلید خود را.
و در آخر، چیزی که ما می گویند این قطعه از نحو است؟
این نمایانگر چیست؟
آره.
>> مدعو: [نامفهوم]
>> DAVID J مالان: این فقط پایان خط.
این پایان بیانیه است.
و متوجه است که ما نمی قرار داده و آنها در همه جا.
ما قطعا آنها را قرار داده نشده در انتهای هر خط.
به عنوان مثال، هیچ کدام بر روی وجود دارد خط اول، هیچ یک را در یک خط وجود دارد
با، اصلی، هیچ کدام وجود دارد پس از آکولاد،
اما شما شروع به دیدن و دریافت با که در آن نامیده می شود.
و آن را تقریبا همیشه بعد از یک تابع تماس بگیرید و یا بیانیه ای، برخی از اقدام
که شما در واقع در نظر گرفتن.
>> و در حال حاضر می دانیم، به خصوص اگر در میان کسانی که کمتر و راحت،
این نوع از چیزهایی که احمق هستند که شما در نهایت به طور تصادفی کوبیدن
سر خود را در مقابل دیوار بیش از.
از آنجا که شما منطقی می شود اعتماد به نفس در بعضی از مشکل
شما برای یک حل مشکل مجموعه، و چیز لعنتی فقط
نمی کامپایل و یا حتی اجرا.
و بنابراین اغلب، در اوایل، آن را به ممکن است به خاطر شما از دست رفته یک پرانتز،
و یا شما از دست رفته یک نقطه و ویرگول.
و به این ترتیب فقط به فکر باشد از این نوع از همه چیز،
و سعی کنید به نا امید شده توسط آنها به دلیل به سرعت این
تبدیل قدیمی کلاه.
اما آن را بسیار آسان برای به دست آوردن نا امید در اوایل، به عنوان یک نتیجه.
>> بنابراین در حال حاضر، اجازه دهید نگاهی به چگونگی این خط است که در واقع کار
و سپس در کمی نگاه یکی از پیچیده تر است.
بنابراین ما در اینجا، بیش از توانایی قرعه کشی در این صفحه نمایش.
و بیایید فرض کنیم که این صفحه نمایش کامپیوتر من است،
اما من نوشتن هستم، سلام برنامه، و من اجرا نمی کند، printf است.
شخص دیگری را اجرا کرده است، printf است.
چه کسی می خواهم به ادعای اجرا کرده اند، تابع () printf؟
اگر ما ممکن است؟
همه حق است، نام شما چیست؟
>> دانشجو 1: [؟ COPAL. ؟]
>> DAVID J مالان: و Copal در آمده است.
بیا بالا.
خیلی خوب.
بنابراین ما باید، در اینجا، برخی از تگ های نام، از آنجایی که ما یک بازی کمی از این.
و ما شما را پاسخ، printf است.
و اگر شما می خواهید به بیش از بیا اینجا، آنچه که من فقط بر روی صفحه نمایش کشیده ام،
این کاملا به سادگی، به من وجود دارد، این.
>> همه حق است، بنابراین، سلام نام من است، تابع () printf، اگر شما می خواهم برای قرار دادن که در.
خیلی خوب.
و اگر شما می تواند ایستادن به توسط صفحه نمایش کامپیوتر
به عنوان اینکه تابع شما این است که با این سیستم کامپیوتر است.
و هدف شما در زندگی است به واقع چیزی را چاپ کنید.
اما بسیار شبیه به برنامه ما فقط بر روی صفحه نمایش به حال، در اینجا،
ما در حال رفتن به به در واقع شما برخی از ورودی می دهد.
>> و به همین ترتیب، اگر ورودی من، اینجا، است ظاهرا، چیزی است که به تصویب رسید به تابع () printf،
اجازه دهید نوع از آن مسخره کردن مثل این.
من قصد دارم به معنای واقعی کلمه در ارسال یک تکه کاغذ، "سلام جهان"
بک اسلش N. و روشن می شود، چه من فقط در این قطعه از کاغذ کشیده شده ام،
به نظر می رسد مثل این.
تا زمانی که من اجرای این برنامه، و این خط زرد از کد اجرا می شود،
آن را به عنوان هر چند که من، این برنامه سلام است، من توزیع برخی از ورودی به یک تابع
که شخص دیگری نوشت.
>> و اگر شما، با انگشت خود، در واقع می تواند، با انگشت خود،
قرعه کشی در هر صفحه نمایش آن است که شما تحویل داده شده است،
اثر، در نهایت، به دقیقا همان است که، بر روی صفحه نمایش را ببینید.
و یک مورد گوشه ای کوچک در اینجا.
و خوب است، ما نمی باید ببینید ، خط جدید، در این نقطه است.
این امر می تواند نادرست برای شما به صراحت خط جدید در قرعه کشی.
اما اگر ما به نوشتن کلمات در صفحه نمایش، آنها را تا زیر به پایان برسد.
>> بنابراین از شما بسیار سپاسگزارم، اما چوب در اینجا فقط برای یک لحظه.
ما در حال حاضر نیاز به یک دیگر داوطلب، اگر ما می تواند،
که نیاز به رفتن به بازی در نقش of-- این مردم تنها در ارکستر
همین الان.
چگونه OK about--.
درست همین جا.
بیا بالا.
نام شما چیست؟
>> دانشجو 2: [؟ Ivay. ؟]
DAVID J مالان: با عرض پوزش.
دانشجو 2: [؟ Ivay. ؟]
DAVID J مالان: اتان، در آمده است.
هیچ؟
آیا من که غلط است، حتی بعد از شما آن گفت دو بار؟
بیا بالا.
این سخت است برای شنیدن اینجا.
باشه.
و من متاسفم، نام شما چیست؟
>> دانشجو 2: [؟ Ivay. ؟]
>> [؟ DAVID J مالان: Ivay. ؟] باشه.
در حال حاضر، اگر شما نمی ذهن، شما از GetString.
>> دانشجو 2: OK.
سرد است.
DAVID J مالان: پس اگر شما می خواهم به اینجا ایستاده برای فقط یک لحظه،
اجازه دهید یک نگاه کمی برنامه های پیچیده تر، که
در حال حاضر سه خط کد.
بنابراین ما باید، یک، نام ایالت خود را با استفاده تابع () printf؛ دو، یک تماس به از GetString،
پس از انتساب به متغیر به نام، رشته ها، و یا نام S؛
و پس از آن تماس دیگر به، تابع () printf، اما این بار با دو ورودی.
>> دولت بنابراین ما در حال حاضر انجام نام و نام خانوادگی خود را، یا به جای، ما
در حال حاضر انجام یک تماس printf است.
بنابراین من قصد دارم به نوشتن، دولت نام خود را.
و بنابراین، آنچه من قصد دارم به عبور، تابع () printf، در یک لحظه،
کاملا به سادگی، این.
بنابراین اگر شما می خواهید به جلو بروید و رسم این بر روی صفحه نمایش، که ورودی خود را در حال حاضر.
خیلی خوب.
و فراموش رشته، ما در حال حاضر خط خود ما را از کد را در اینجا.
بنابراین در، از GetString، ما نیاز در واقع پاسخ، از GetString.
بنابراین هدف خود را در زندگی این است که فقط راه رفتن را به ارکستر، اگر شما می توانید،
و نام کسی.
اما اجازه دهید به شما بدهد چیزی به آن را در.
اگر شما می خواهید، به جلو و یک رشته،
گرفتن نام کسی که تکه کاغذ، اگر شما می توانید.
>> خیلی خوب.
و خواهیم دید که در یک لحظه، که نام ما در حال گرفتن.
در همین حال، آنچه من قصد دارم به آماده داشته باشد، یک قطعه خالی است
کاغذ، که در آن، من قصد دارم برای ذخیره هر آنچه که ارزش آن
است که GetString است به من باز می گردد، من، به عنوان یک متغیر رشته نامیده می شود، است.
خیلی خوب.
بنابراین چه چیزی شما را در اینجا؟
نیک.
خیلی خوب.
بنابراین ما باید نام نیک در اینجا.
بنابراین به معنای واقعی کلمه این چیزی است که تا برگردانده شده است
به من، پس به صحبت می کنند، توسط از GetString.
>> من به، در حال حاضر، من اجرای سمت چپ
که بیان، که در آن من به سادگی کپی کردن، برای مقاصد امروز، نیک.
بنابراین در حال حاضر، من یک متغیر دارند نام، S، ذخیره سازی نام نیک است.
من در حال حاضر به دست تابع () printf، استدلال های قبلی است.
اما در سومین و آخرین خط ما را از کد، من در واقع به تابع () printf دست دارند
چیزی different-- کمی "سلام،٪ S،" N بک اسلش.
>> و به این ترتیب خط آخر من قصد دارم به send-- آخرین چیزی که من
رفتن به ارسال پایین در حال حاضر، این است.
به طوری که دو خط کد، یا و نه آخرین خط از کد،
تماس برای دو inputs-- یکی، این، و دو، این.
بنابراین اگر تابع printf ما هم اکنون می توانید این را به عنوان ورودی را،
اجازه دهید من می روی صفحه نمایش را برای شما روشن.
در واقع هیچ، شما می توانید پیش بروید.
ما آن را تا ترک، از آن را در همان برنامه است.
ما باید نیک را ببینید، سلام،.
خیلی خوب.
بنابراین این کاملا یک چند پرتال تخصصی اولی به پرش از طریق، فقط
برای نوشتن، دولت خود را نام، و، سلام، نیک.
اما این ایده ساده از عبور پیام، عبور ورودی و خروجی دریافت،
دقیقا مدل ما در حال رفتن به حتی برای توابع پیچیده ترین.
بنابراین از شما بسیار متشکرم برای هر دوی شما.
ما یک استرس دوست داشتنی توپ اینجا برای شما.
و تشکر از شما به ما از GetString و داوطلبان تابع () printf به طور یکسان.
متشکرم.
خیلی خوب.
با تشکر از شما برای هر دوی شما.
>> بنابراین ما که در موردش صحبت تا کنون، عمدتا در مورد رشته ها.
و معلوم است که در واقع می تواند C درک چند نوع داده متفاوت است.
در واقع، اجازه دهید یک در این اینجا نگاه کنید.
بنابراین C، و بسیاری از زبان ها، درک همه چیز به نام کاراکتر.
کاراکتر است به طور کلی بایت، یا هشت بیت است.
و آن را نشان دهنده یک شخصیت واحد، مانند نامه A، و یا سرمایه
حرف A، یا حروف کوچک A، و یا یک علامت تعجب،
و یا هر شخصیت است که شما می توانید نوع در صفحه کلید خود را، و گاهی اوقات حتی بیشتر.
ما داریم به دیدن شناور است.
شناور است، به طور کلی، یک 32 بیتی ارزش یا چهار بایت
چون دوباره، یک بایت هشت بیت است.
>> بنابراین یک شناور یک مقدار ممیز شناور است، چیزی با یک نقطه اعشار.
و در واقع، این چیزی است که فیلم صحبت
در مورد زمانی که آنها در مورد شناور صحبت کرد ارزش نقطه، برخی از تعداد مشخصی از ارقام
استفاده می شود برای نشان دادن یک عدد حقیقی است.
اما همچنین چیزهایی به نام دو برابر وجود دارد.
این در جاوا وجود داشته باشد، اگر شما نفربرهای گرفته شده،
و دو برابر، به عنوان نام خوشبختانه نشان می دهد، دو برابر بزرگ به عنوان یک شناور.
این هنوز یک عدد حقیقی، آن را فقط بیت
که با آن به تا کنون دقیق تر، و یا برای ذخیره اعداد حتی بزرگتر.
INT آسان است.
ما در مورد آن زمان گذشته صحبت کردیم.
این فقط یک عدد صحیح است.
و آن را به طور کلی 32 بیت یا چهار بایت.
>> و به همین ترتیب، اگر شما، اجازه دهید اکنون ببینید، 32 bits-- و ما در هفته 0 انجام داد،
همیشه تا briefly-- اگر شما 32 بیت، چه بزرگترین
تعداد شما می توانید به عنوان یک عدد صحیح نشان می دهد؟
دادن یا گرفتن؟
آن را مانند 4 میلیارد است، و این تنها اگر ما
نمایندگی تنها اعداد مثبت است.
اگر شما 32 بیت، و شما می خواهید نمایش اعداد منفی به عنوان خوب،
محدوده خود را، اساسا، منفی 2 میلیارد به مثبت 2 میلیارد.
اما به طور کلی، ما شروع در 0 بروید تا 4 میلیارد دلار.
>> شما لازم نیست که به دقت می دانم، اما ما می توانیم این اگر من فقط ببینید، در واقع،
باز کردن یک ماشین حساب کوچک، در اینجا.
من می توانم 2 32 انجام دهید، و که دقیقا چه بزرگ،
چگونه ارزش بسیاری که شما می توانید نمایندگی، با 32 بیت است.
و آن را تقریبا 4 میلیارد دلار.
بنابراین ما نگه دیدن که تعداد در چند مکان های مختلف.
اما اگر شما نیاز دیگر شماره از آن،
که معلوم است وجود دارد چیزی به نام طولانی.
و بلند بلند است به طور کلی 64 بیت، که
به معنی آن منظور از قدر است حتی بزرگتر از یک int است.
>> بنابراین من نمی توانم حتی بزرگترین تلفظ تعداد که شما می توانید نمایندگی،
اما آن را به طور قابل توجهی بزرگتر است.
در حال حاضر به عنوان یک کنار، به لحاظ تاریخی، اگر یک int 32 بیت است،
و بلند بلند 64 بیت، چگونه است بزرگ یک مدت طولانی، نه طولانی مدت است؟
شما می خواهم فکر می کنم آن طولانی تر از نوع int اما شاید کمتر از یک مدت طولانی طولانی مدت،
اما در واقع بستگی دارد.
>> و پس از آن معلوم یکی از سرخوردگی بیش از حد،
با نوشتن کد در سیستم های خاص، این است که همه از این نوع داده
ارزش از پیش تعیین شده.
گاهی اوقات آن را این بسیاری از بیت است.
گاهی اوقات آن را که بسیاری از بیت.
بنابراین شما در واقع باید بدانید که، گاهی اوقات، چه سخت افزار
شما در حال اجرا نرم افزار خود را در.
خوشبختانه، به زبان های دیگر و انواع دیگر داده که در حال حاضر وجود دارد،
به شما اجازه دقیق تر.
خب، ما شاهد رشته، و ما دیدیم که بولی، بیش از حد،
اما معلوم است آن آمده تنها با کتابخانه CS50.
بنابراین کسانی که ساخته شده است به کسانی که به جای C.،
در آن فایل به نام آمده CS50.H، که ما در نهایت
پوست پشت لایه های از.
اما در حال حاضر آنها فقط انواع داده های اضافی.
بولی درست یا غلط، و یک است رشته یک رشته از کاراکتر است،
مانند یک کلمه.
در حال حاضر printf، ما دیده می شود، است متغیرهایی،٪ S یکی است.
و شما ممکن است قادر، به حال، استنباط از این نمونه های دیگر، چگونه
شما می توانید از یک حفره یا سوراخ دارند برای انواع داده های مختلف.
به عنوان مثال، یک حدس است، اگر شما می خواستم برای چاپ کردن یک کاراکتر با استفاده از
تابع () printf، حفره یا سوراخ٪ C است که احتمالا.
و اگر شما می خواهید برای چاپ کردن عدد صحیح را با حفره یا سوراخ،٪ من.
٪ LLD یک مقدار طولانی اعشاری است، اما طولانی، به طوری که نقشه ها را به که.
و پس از آن٪ f برای شناور مقدار نقطه و یا برای یک دو،
بنابراین گاهی اوقات آنها دوباره استفاده می شود در زمینه های مختلف.
بنابراین خواهیم دید و استفاده از برخی از کسانی که در طول زمان.
و تابع () printf و توابع دیگر نیز توالی فرار پشتیبانی دیگران،
و گاهی اوقات، این لازم است.
بنابراین نفر بک اسلش یک خط جدید است.
بک اسلش T، آیا کسی می خواهم به یک چاقو؟
مدعو: نوار.
DAVID J مالان: نوار.
بنابراین اگر شما واقعا می خواهید برای چاپ کردن یک تب، نه
تعداد ثابتی از فضاهای اما واقعی شخصیت زبانه، شما خود را ضربه نیست،
تب، کلید بر روی صفحه کلید، به طور کلی، شما در واقع بک اسلش تی.
بک اسلش نقل قول، چرا من همیشه می خواهید که؟
درست؟
چرا من نمی توانم فقط نوع نقل قول در صفحه کلید من؟
مدعو: از آنجا که، در غیر این صورت، آن را
رفتن به فکر می کنم آن را پایان از دوست چاپ خود را [؟ متن. ؟]
>> DAVID J مالان: دقیقا.
به یاد داشته باشید، با ما نمونه تابع () printf، زمانی که ما
در حال عبور بودند به printf در ورودی، در سمت چپ که رشته ورودی
و در سمت راست که ورودی بهار، البته، یک نقل قول بود.
اگر ورودی خود را دارد دو نقل قول در وسط آن،
کامپیوتر ممکن است به طور بالقوه اشتباه، به عنوان،
این دو نقل قول در وسط تعلق دارد؟
آیا با یکی از سمت چپ تعلق دارد؟
آن را با یک حق تعلق دارد؟
و بنابراین، اگر شما می خواهید به آن را فوق العاده روشن، شما انجام بک اسلش دو نقل قول،
به طوری که آن فرار، پس به صحبت، و آن را برای چیز دیگری ادغام نشده است.
و چند نفر دیگر در اینجا وجود دارد، R بک اسلش، از نقل قول تکی، 0،
که ما ممکن است در طول زمان را نیز مشاهده کنید.
و در حال حاضر، چه در مورد توابع؟
>> بنابراین اقداماتی که ما تا کنون می توانید در این زبان، C، خوب، ما دیده ایم،
تابع () printf، البته، و همه از دیگران بر روی صفحه نمایش،
در اینجا، که ما برای استفاده تنها چند هفته اول دوره،
آمد که کتابخانه CS50.
و آنها آن را بسیار ساده تر، در C، در واقع ورودی کاربر را دریافت کنید.
معلوم می شود که در C، و رک و پوست کنده در چند زبان،
آن درد واقعی در گردن را به انجام است چیزی ساده، مانند سریع کاربر
برای صفحه کلید، برای ورودی خود را.
و به این ترتیب این توابع آن را آسان تر.
>> و همچنین دارای خطا چک کردن در سراسر،
به طوری که، هنگامی که شما به یاد بیاورید در چهارشنبه، ما
دیدم، سعی مجدد، هشدار، وقتی که من همکاری نمی کنند،
و من یک کلمه، به جای شماره تایپ؟
ما در بلند کردن اجسام سنگین اوایل انجام داده ام به مطمئن شوید که کاربر همکاری می کند.
اما این فقط آموزش می چرخ که ما در نهایت خواهد شد،
و به سرعت، خاموش کنند.
>> بنابراین برای روکش، پس از آن، اجازه دهید یک نگاه سریع،
بسیار شبیه به ما با خراش، در انجام برخی سازه متعارف در C.
این به معنای، مرتب کردن بر اساس از، لازم است یک تور گردباد،
فقط به طوری که شما یک مرجع و این که شما همه چیز را در ابتدا دیده می شود.
اما پس از آن ما را در برنامه نویسی واقعی نگاه استفاده از برخی از این بلوک های ساختمانی.
بنابراین بسیار شبیه در ابتدا، هنگامی که ما اظهارات بود را دوست دارم،
می گویند و یا، صبر کنید، در C، ما مجبور توابع نیز، مانند printf است.
>> اگر ما می خواهیم به بیان یک شرط در C، آن را مشابه، در روح،
به آن قطعه پازل است که مثل این در ابتدا بود.
اما در عوض، ما به معنای واقعی کلمه فقط نوشتن، اگر.
و سپس، در پرانتز، ما را یک وضعیت،
که در آن شرایط که چیزی است که ما پاسخ، دوباره، عبارت بولی باشد.
و دوباره، این نوع از شبه است.
و، در واقع، از // یک نظر است.
این فقط کلمات انگلیسی به خودم است.
اما این به طور کلی ساختار یک، اگر، شرایط.
اما ما بتن را ببینید نمونه در یک لحظه.
>> اگر شما می خواهید به یک دو طرفه چنگال را در جاده،
بسیار شبیه به ما با داوطلب ما در انجام چهارشنبه، شما می توانید یک داشته باشند، اگر دیگری.
و اگر شما می خواهید به یک سوم و شرایط نهایی، و یا وضعیت پیش فرض،
شما می توانید فقط یک بلوک دیگری، وجود دارد.
و به همین ترتیب، با عبارات بولی، شما می توانید، و، آنها با هم.
و ما در روز چهارشنبه را دیدم، که این یک علامت تک نیست،
آن دو، به دلایل سطح پایین تر که ما در نهایت خواهید دید و بازی با.
و یا نشستند چیز با هم 2 میله عمودی است.
بر روی صفحه کلید ایالات متحده، این به طور کلی یک کلید
با کلید Shift را بالا خود را وارد کنید کلید یا بازگشت کلیدی است.
>> پس از آن این چیزها وجود دارد که ما شاید یک یا دو بار استفاده می کنم.
آنها عملکرد به هم معادل هستند آنچه شما می توانید با انجام اگر،، دیگری اگر،
اگر دیگری دیگری، ساخت، اما آنها یک سوئیچ نامیده می شود.
آنها نگاه بسیار متفاوت است، اما ما در برخی از کد توزیع ما را ببینید،
برای یک مجموعه مشکل آینده، به احتمال زیاد، که آن را گاهی اوقات فقط یک زیباتر
راه بیان یک کل دسته از شرایط،
بدون نیاز به مقدار زیادی از آکولاد و بسیاری از پرانتز و دندانه.
اما آنها ما را بیشتر به قدرت از ما در حال حاضر.
و در حال حاضر حلقه.
و این یکی، ما نگاه در کمی آهسته تر.
اما پس از آن، ما شروع به استفاده از این، به خصوص برای کسانی در حال حاضر آشنا.
این راه متعارف است، اگر فوق العاده راه محرمانه، برای نوشتن یک حلقه در C.
>> در حال حاضر یک حلقه در ابتدا بود بسیار ساده.
شما باید یک، برای همیشه، بلوک.
شما باید یک، تکرار، بلوک با فقط یک عدد شما را به نوع در.
و با، حلقه، شما می توانید اجرای هر دو از این ایده ها،
اما آن را کمی بیشتر فنی.
اما صادقانه بگویم، آن را نیز نسبتا ساده است.
هنگامی که شما می دانید که منظور از عملیات، به معنای واقعی کلمه
فقط به برق وصل ارزش و به کامپیوتر چه کاری انجام دهید.
بنابراین در اینجا یک مثال است.
این یک حلقه است که، کاملا به سادگی، شمارش از یک تا تعداد
از طریق یکی دیگر.
و فقط با یک نظر اجمالی در آن، حتی اگر شما
هیچ تجربه قبلی با این زبان، چه تعداد
آن احتمالا شروع به شمارش؟
OK، 0.
و من حدس می زنم که دلیل این که شما ببینید که یک int و من وجود دارد،
که یک متغیر است.
آن را به 0 مقداردهی اولیه.
>> و سپس بعد، آن را مانند به نظر می رسد ما در حال عبور از printf، یک ارزش است.
و، در واقع، من ساخته شده تایپی کمی اینجا.
اما که به راحتی ثابت شده است.
من اجازه اضافه کردن در، من در اینجا.
ما در حال حاضر موجود تابع () printf گذشت که ارزش حفره یا سوراخ.
و چه خبر است به تعداد بالا از طریق؟
مخاطبان: 50.
50.
49.
DAVID J مالان: 49.
بنابراین 50، در نگاه اول، به نظر می رسد حق.
اما این، که معلوم است، در حال رفتن به شرایط ما است که ما نگه داشتن چک کردن.
و ما قصد داریم برای متوقف کردن یک من دیگر کمتر از 50.
بنابراین این حلقه، برعکس، باید اجرا، تا زمانی که من کمتر از 50 است.
اما به محض آن را تبدیل به 50 یا 51، یا بدتر از آن باید به طور خودکار متوقف شود.
خیلی خوب.
>> پس چه در واقع در اینجا اتفاق می افتد؟
بنابراین این منظور از است عملیات برای یک حلقه.
یکی، شما باید به اصطلاح اولیه.
این تکه برجسته زرد کد اول اجرا شده است،
و آن است که اثر آن، در هر چهارشنبه، شما احتمالا تصور کنید.
آن را ایجاد یک متغیر به نام من و آن فروشگاه در آن متغیر مقدار 0.
بنابراین من 0 در این نقطه در داستان است.
>> نکته بعدی که اتفاق می افتد در این ساختار،
این است که شرایط را بررسی می شود.
بنابراین من را بررسی کنید، بلافاصله، است من کمتر از 50؟
و البته، پاسخ در حال حاضر است، قطعا، بله.
بله، چون من 0 است، و که قطعا کمتر از 50.
پس از آن چه اتفاقی می افتد، این است که این خط از کد اجرا می شود.
و در واقع، اگر متعدد وجود دارد خط کد در آن آکولاد،
همه آنها یکی پس از دیگری اجرا می شود.
>> و در اثر در اینجا، است ظاهرا، برای چاپ کردن
من تعداد، است که رفتن به 0، و سپس 1 و سپس 2.
اما چرا؟
چرا آن را دریافت کند افزایش مییابد؟
خوب، چیزی چهارم که اتفاق می افتد این است که این نحو
اجرا می شود، پس از نقطه و ویرگول.
من + + این راهی کوتاه از گفتن است. را ارزش من، و اضافه کردن 1 به آن؛
و پس از آن در زمان بعدی در اطراف، اضافه 1 به آن؛ و در زمان بعدی در اطراف،
اضافه کردن 1 به آن است.
>> بنابراین اگر ما حفظ رفتن، چه اتفاقی خواهد افتاد
بعدی این است که من به رفتن نیست مقداردهی اولیه من هرگز دوباره.
اگر من حفظ مقدار دهی اولیه من تا 0، این مثال
هرگز به دلیل پایان من خواهد بود در 0 گیر کرده است.
اما آنچه اتفاق خواهد افتاد است که شرط بررسی می شود،
خط از کد اجرا خواهد شد، من می شود یک واحد اضافه خواهد کرد،
شرایط بررسی خواهد شد کد اجرا خواهد شد.
و آن را نگه داشته دوچرخه سواری دوباره، و دوباره، و دوباره،
تا زمانی که من ++ باعث ارزش 50.
>> شرایط پس از آن می گوید، 50 کمتر از 50؟
جواب، البته، هیچ، و به طوری که کل کد را متوقف می کند اجرا.
و اگر شما کد را بر روی صفحه نمایش به پایین، و این چیزی است که اتفاقی می افتد.
آن را از این آکولاد باز و همچنان به چاپ بیشتر پس از آن.
>> بنابراین یک شوخی در حال حاضر، از Foxtrot، که شما شاید در حال حاضر درک.
این همیشه خنده دار.
آن را مانند آهسته میخندد است نوع نفوذ،
و سپس شما متوجه شما باید نیست خنده در طنز مثل این.
اما برخی از غذای آماده وجود دارد در اینجا، آموزشی، TOO.
پس از آن معلوم است که من از دست رفته یک قطعه از نحو،
و یا در یورتمه اهسته اسب از دست رفته قطعه ای از نحو در اینجا.
چه خبر از دست رفته، که ما تا به حال در هر مثال دیگر، تا کنون؟
بازگشت است، وجود دارد، بنابراین این چیزی است که دیگری،
که ما به قبل از اینکه طولانی می آیند.
چیزی که گم، هر چند؟
آره.
>> مدعو ها: مقدار دهی اولیه از [نامفهوم].
>> DAVID J مالان: OK.
پس آره.
پس در واقع، این is-- خوب، و تعداد مقداردهی اولیه شده است
در بالا، و یا به جای، بالا اعلام شده است.
بنابراین این یکی دیگر از راه انجام آن است.
اما نه در یک خط آن را معتبر است.
اینجا چطور؟
>> مدعو: آیا این آکولاد؟
>> DAVID J مالان: آره.
بنابراین آکولاد گم شده است.
اما این کد، منظور من، به اعتبار خود، است که در واقع، نحوی معتبر است.
به نظر می رسد، شما نمی نیاز به آکولاد
اگر شما فقط یک خط از کد که شما می خواهید برای اجرا در داخل حلقه.
در حال حاضر ما همیشه، در کلاس و در تمام کد های توزیع ما،
شامل آکولاد به هر حال، فقط به خاطر وضوح است.
اما متوجه باشید که در کتاب های درسی و نمونه های آنلاین،
شما ممکن است به خوبی در اشکال مختلف را ببینید ارتودنسی از دست رفته گاهی اوقات.
و این خوب است، اگر چه شما فاصله دار در نظر گرفته شده اند و
فقط یک خط از کد است، و نه چند خط از کد، به طور بالقوه.
خیلی خوب.
بنابراین مرتبط به موضوع عدم دقت، یک موضوع سرریز است،
به این معنا که، به طور مشابه، انجام اعداد صحیح محدودیت به آنها
درست مثل مقادیر ممیز شناور؟
در جهان یک ممیز شناور ارزش ها، ما فقط می توانیم آنقدر دقیق باشد،
پس از آن، گاهی اوقات چیزهای بد اتفاق می افتد،
و برنامه های ما می تواند حشره دار و خطا.
در حال حاضر حتی با اعداد صحیح، شما می توانید به مشکلات اجرا شود.
در حال حاضر یک عدد صحیح یک ندارد نقطه اعشار یا شماره پس از آن.
این فقط یک عدد طبیعی است، به طور معمول.
بنابراین چه چیزی اشتباه است با یک int رفت؟
اگر من با استفاده از یک int به تعداد دفعات مشاهده، چه می تواند به اشتباه؟
به نظر می رسد بسیار ساده تر.
آره.
>> مدعو: اگر تعداد می شود [نامفهوم]
>> DAVID J مالان: آره.
چه می شود اگر شما تعداد دفعات مشاهده بسیار بالا است، که شما می توانید این تعداد واقعا بزرگ بیان کنم.
درست؟
در برخی موارد، شما در حال رفتن به فراتر رفتن از مرزهای
یک مقدار 32 بیتی و یا یک مقدار 64 بیتی.
در حال حاضر دوباره، من مطمئن هستم که چگونه یک مقدار 64 بیتی را تلفظ،
اما من با یک عدد صحیح 32 بیتی می دانم، بزرگترین ارزش آن می تواند،
اگر تنها مثبت ارزش ها، تقریبا 4 میلیارد دلار.
بنابراین اگر من سعی می کنم به تعداد به 5 میلیارد، چیزی اتفاق خواهد افتاد.
اما بیایید ببینید که چه، در واقع، می تواند رخ دهد.
در جهان از عدد صحیح سرریز، که در آن شما، به یک معنا،
سرریز ظرفیت یک عدد صحیح، چه چیزی ممکن است اتفاق می افتد؟
>> بنابراین در اینجا یک عدد دودویی است، آن رجعت به 0 است.
این همه در 1، و متغیرهایی وجود دارد، قدرت 2،
بنابراین این باینری است.
بنابراین این 8، 1 بیت بر روی صفحه نمایش می باشد.
و اگر شما را به یاد و یا شما به سرعت انجام محاسبات ریاضی،
چه مقدار است که نشان در اینجا با این هشت بیت 1؟
255.
و حتی اگر شما کاملا مطمئن نیست از ریاضی، شما می توانید آن انجام دهد.
یا شما می توانید فقط نوع عقل از طریق آن،
یک دقیقه صبر کنید، اگر من به نمایندگی از ارزش 8 بیتی،
و من 256 مقدار ممکن را کردم، اما اولین بار است که 0 است،
من فقط می دانم که بزرگترین است برای رفتن به 255،
و این چیزی است که این یکی ممکن است.
>> بنابراین گمان می کنم سعی کنید به اضافه کردن 1 به این مقدار است.
آنچه را که شما در کلاس انجام مدرسه هنگام اضافه کردن یک 1، و آن
واقعا مناسب نیست زیرا شما مجبور به حمل 1؟
این تعداد از رفتن چه برای تبدیل شدن به زمانی که شما اضافه 1؟
آن را برای تبدیل شدن به 0.
درست؟
چرا که اگر شما در حال bits-- تر و من سعی کنید به، نوع، نوع آن را here--
اگر ما بیت های بیشتری، حال چه ما در اینجا می تواند انجام است اضافه کردن 1،
و پس از آن ما می خواهم این را دریافت کنید.
متأسفیم.
ما یک بیت 1 اینجا همه در راه است.
>> اما اگر این است که محدود ارزش، آن را تنها 8 بیت،
و این که از پیش تعیین شده توسط کامپیوتر،
که 1 است به طور موثر وجود ندارد.
این فقط نوع سقوط کردن صخره.
و بنابراین اگر شما اضافه 1-255، چه ارزش چیزی شما را ظاهرا دریافت کنم؟
0.
و به همین ترتیب اعداد به طور تصادفی، و شاید، ناخواسته،
تا پایان بسته بندی در اطراف مثل این.
پس چه می تواند مفهوم این؟
خب، این چند چیز مختلف وجود دارد.
بنابراین یکی، آن را تا پایان به دنبال مانند 0، ناخواسته،
اما شما می توانید نوع دید، حتی در دنیای واقعی،
برای بهتر یا بدتر از آن، تظاهرات این ایده از یک حد.
به عنوان مثال، هر یک از شما که تا به حال بازی لگو جنگ ستارگان،
هر کسی اتفاق می افتد به می دانم که حداکثر تعداد سکه
شما می توانید در لگو جنگ ستارگان جمع آوری؟
یک حدس بر اساس پرسش پیشرو امروز است.
از آن بزرگتر از 256 یا 255.
این 4 میلیارد است.
پس از آن معلوم و برخی از people-- وجود دارد
برخی در Google تایید آخرین night-- 4 میلیارد سکه های طلا شده اند،
و یا فلان چیز، در لگو جنگ ستارگان.
هر چند ظاهرا، وجود دارد یک راه برای فریب بازی،
یک اشکال یا ویژگی وجود دارد، که شما اجازه می دهد فقط تعلق بسیاری و بسیاری از نقاط.
اما بزرگترین ممکن است ارزش، با توجه
این شات از صفحه نمایش کسی که من (آنلاین) است، در واقع، 4 میلیارد دلار.
>> در حال حاضر این است که چرا؟
دقیقا به 4 میلیارد دلار، احتمالا به خاطر کسی که تصمیم،
بود که در حال نوشتن این بازی، که آنها می توانند از 4 میلیارد انجام دهید،
چیزی، چیزی، چیزی، مانند ارزش من قرار داده تا
با ماشین حساب پیش از آن، اما آن را فقط یک کمی پاک کننده برای انسان است
به حداکثر تعداد از coins-- و یا خاتم کاری،
آنها به عنوان پاسخ them-- که شما می توانید جمع آوری 4 میلیارد است.
و بنابراین، چرا؟
بازی LEGO چگونه است اجرای ضد
که پیگیری از تعداد سکه های شما را؟
آنها با استفاده از چه؟
مدعو: آن متوقف می شود شمارش پس از 4 میلیارد دلار.
DAVID J مالان: آن متوقف می شود شمارش پس از 4 میلیارد دلار،
یعنی شما می توانید استنباط، به عنوان یک برنامه نویس،
که آنها احتمالا با استفاده از یک عدد صحیح 32 بیتی.
مانند برنامه نویس معنای واقعی کلمه فقط تایپ، هوشمند، در کد خود،
و نوع متغیر است که آنها با استفاده از برای ذخیره کد کسی.
بنابراین سایر تظاهرات وجود دارد از این نوع از محدودیت.
>> بنابراین من این game-- بازی نمی و من خواندن در تاریخ
به عنوان much-- اما در منظور نسخه اصلی تمدن و فرهنگ، که در آن
شما ظاهرا با هر تعامل و می توانید جنگ دستمزد و یا صلح،
گاندی قرار بود به یکی از شخصیت های صلح آمیز ترین، به عنوان من
درک آن، در اولین نسخه تمدن.
و در واقع، در مقیاس 1 تا 10، پرخاشگری او فقط یک 1 بود.
بنابراین همیشه تا کمی تهاجمی، ظاهرا.
>> اما در برخی موارد، شما ظاهرا می تواند نصب دموکراسی در جغرافیای خود را.
و اگر شما نصب دموکراسی به نسخه خود را از این بازی،
پس از آن سطح پرخاشگری خود را پایین می رود.
این یک چیز خوبی است.
مردم آرام تر هستند ظاهرا، در این وضعیت.
اما ظاهرا، کسی که آن یک اگر، بیماری را بروز نمی
در نسخه اصلی از کد.
>> بنابراین سطح تجاوز گاندی رفت و از مثبت 1، منهای 2، به منفی 1،
اما بازی نمی کند اعداد منفی را درک کنید.
پس چه اتفاقی افتاده تجاوز گاندی بود سطح رفت و از 1، 0، به منفی 1،
که اثر داشته بسته بندی در اطراف بودن
شخصیت تهاجمی ترین در این بازی، به ارزش 255،
در مقیاس 1 تا 10.
و از آن پس، شده است برداشت بیشتر از این بازی،
و آنها از آن به عنوان نگه داشته ام مرتب کردن بر اساس تخم مرغ عید پاک،
که گاندی ظاهرا تا وحشتناکی تهاجمی.
اما نتیجه یک بود خطای برنامه نویسی بسیار ساده
در نسخه بسیار اولیه از این بازی است.
>> در حال حاضر نگران کننده تر، بیشتر به تازگی، بوئینگ 787
به عنوان داشتن یک مستند شد اشکال، نه از نوع دستگاه
شما به خصوص می خواهم به یک اشکال.
و علائم، که من به عنوان خوانده شده در اینجا، از آنلاین یک مقاله،
این، یک مدل 787 هواپیما بود که به طور مداوم طراحی شده است
برای 248 روز تمام توانید از دست دادن جریان متناوب، AC،
برق، با توجه به واحد کنترل ژنراتور،
GCUs، به طور همزمان رفتن به حالت خرابی امن.
بنابراین این یک هشدار بود زمانی که این مشکل کشف شد.
این شرایط باعث شده است توسط نرم افزار ضد،
داخلی به GCUs، به طوری که یک عدد صحیح و یا یک متغیر،
که اراده سرریز پس از 248 روز از قدرت مداوم.
بوئینگ در روند است در حال توسعه یک نرم افزار ارتقاء GCU که
شرایط ناامن خواهد اصلاح.
>> بنابراین بسیار شبیه موشک سناریو، که در
آنها به نوعی از متغیر بود که شمارش شد و شمارش،
و شمارش، اما به تدریج پر مرزهای قابلیت های آن،
به طور مشابه انجام هواپیما لعنتی یک سرریز متغیر
پس از زمان به اندازه کافی از در حال اجرا.
و به این ترتیب راه زبان در گونه کار در اطراف این موضوع
این است که به راستی، راه اندازی مجدد، هواپیما خود را هر 247 روز، به طوری که حافظه پاک می شود و
و متغیر برگشت به 0 می رود.
اما متوجه، این است که بسیار تجسم زیادی از نرم افزار،
اما به خصوص که ما در مورد اپل شنیدن سیستم عامل رفتن به اتومبیل،
و خود رانندگی اتومبیل از گوگل، و هر تعداد از برداشت از نرم افزار
در زندگی روزمره ما، تلویزیون و ساعت، و بیشتر،
متوجه شده توسط نرم افزار احاطه شده بودند، همه از آن است که توسط ما انسان نوشته شده است.
>> و همانطور که ما همه به زودی خواهید کشف، آن را بسیار آسان و بسیار معمولی
به اشتباه هنگام نوشتن نرم افزار است.
و اگر شما آنها را گرفتن نیست، برخی از چیزهای بد اتفاق می افتد.
در حال حاضر گاهی اوقات، برخی از همه چیز خنده دار اتفاق می افتد،
یا حداقل گاهی اوقات ما مطمئن شوید به انتظار می رود برخی بدی.
بنابراین تقسیم بر 0، 0، از درجه مدرسه است، به طور کلی یک چیز بد است.
آن تعریف نشده است.
و آن را تبدیل out-- و اجازه دهید اگر ببینید میکروفون من می تواند این انتخاب up-- که اپل
اخیرا برخی از سرگرم کننده با این.
بنابراین من یک آیفون در اینجا.
من قصد دارم به صحبت کردن با سیری و درخواست خود را به من پاسخ به 0 تقسیم بر 0 داد.
آنچه که توسط 0 0 تقسیم؟
>> سیری: تصور کنید که شما 0 کوکی ها، و شما آنها را به طور مساوی تقسیم
در میان 0 دوست.
چگونه بسیاری از کوکی ها هر فرد را دریافت کنم؟
مشاهده می کنید؟
این معنی ندارد.
و هیولا کوکی غم انگیز است که هیچ کوکی ها وجود دارد.
و شما را غمگین که شما هیچ دوستان.
DAVID J مالان: این نوع از نفرت انگیز است.
بنابراین این چیزی است که فقط گفته شد وجود دارد.
آن نامشخص است، آن را تعریف نشده است، و در واقع، بسیاری از زبان های برنامه نویسی
یا در واقع کامپایلر خواهد شد تشخیص زمانی که شما در یک برنامه،
سعی کنید به تقسیم 0 توسط 0.
سرگرم کننده تر از این هر چند، که ظاهرا، هیولا کوکی
این روزها در توییتر.
و او را به این پاسخ، با این، که است که کاملا شایان ستایش.
اما اجازه دهید یک نگاه سریع در یک زن و شوهر به مفاهیم دیگر،
و پس از آن برخی از این قرار کد برای استفاده، در راه است.
پس از آن معلوم، علاوه بر برای حلقه، وجود دارد
چیزی به نام یک حلقه در حالی که به نظر می رسد مختلف و استفاده شده است
differently-- کمی و ما در نهایت خواهید دید examples--
اما در بعضی جهات، آن را ساده به دلیل آن
شما اجازه نمی دهد به مقداردهی اولیه و به روز رسانی در محدوده حلقه.
شما هنوز هم می توانید آن را اجرا می کنند.
بنابراین شما می توانید همه چیز را دقیق انجام با یک حلقه در حالی که، به عنوان با یک حلقه for،
اما نحو خود را، ultimately-- همانطور که خواهیم در نهایت
see-- است برای رفتن به متفاوت است.
حتی یک در حالی که حلقه، وجود دارد که است که در واقع کمی متفاوت است،
در حالی که یک حلقه for و یک حلقه در حالی که همیشه
اگر برای اولین بار وضعیت خود را بررسی کنید، شما را به خواندن این چیزی که بالا به پایین،
آن هم از نوع به نظر می رسد مانند آن را به بررسی وضعیت آن گذشته به دلیل آن
واقعا آخرین خط از کد.
و در واقع، که رفتن به مفید باشد در برنامه های خاص که ما ارسال،
اگر شما می خواهید به انجام کاری فقط کورکورانه و در نهایت وضعیت را بررسی کنید.
که لزوما چیز بدی نیست.
اگر ما می خواهیم متغیرها، ما می توانیم انجام آن را در یک زن و شوهر از روش های مختلف.
و ما در یورتمه اهسته اسب دیدم کارتون، یکی از راه های انجام آن،
که در آن شما متغیر خود را اعلام، مانند INT ضد نقطه و ویرگول،
و پس از آن later-- شاید بعدی خط، شاید 10 خط later--
شما در واقع آن را مقداردهی اولیه.
بنابراین این 2 خط کد یک متغیر از نوع int اعلام
و آن را ضد، بنابراین آن را می دهد من بیت اندازه کافی برای نگهداری یک int است.
و سپس در نهایت، آن را مقدار 0 به آن متغیر است.
این ترتیب 0 و 1 را در یک الگو، که ما از هفته گذشته می دانیم،
نشان دهنده تعداد ما به عنوان مطمئن شوید 0.
و یا رک و پوست کنده، شما می توانید این کار زیادی انجام موجز بیشتر، فقط این را دوست.
>> در حال حاضر ما همچنین توانایی توابع به تماس.
و در واقع، در اینجا یک خط 2 است برنامه، و یا گزیده ای آن،
که ما اجازه می دهد به واقع ارسال برخی از کد که
می شود یک رشته از user-- بسیار مانند داوطلب ما یک لحظه ago--
ذخیره سازی نتیجه را در یک متغیر به نام نام،
و پس از آن بسیار شبیه با داوطلب ما با تصویر چاپی printf-- از کسانی که ارزش
با عبور در دو آرگومان است، رشته، به دنبال آن متغیر
نام، نام، به خودی خود.
بنابراین اجازه دهید یک نگاهی از، قبل از ما به ماریو وجود دارد،
در چند در حال حاضر، نمونه هایی از این.
>> من قصد دارم به جلو بروید و باز تا، اجازه دهید بگویم، تابع 0.c.
و مثل همیشه، این کد موجود در وب سایت درس،
بنابراین شما می توانید در بازی همراه خانه و در آن نگاه کنید بعد.
اما در اینجا این برنامه در آن جوهر، از خط 17 تا 22.
برنامه اصلی است که در آن برنامه همیشه شروع می شود.
این برنامه، ظاهرا، در جریان است برای چاپ کردن نام خود، روده بزرگ است.
بعد از آن، رفتن به از GetString پاسخ، درست مثل ما با داوطلبان ما.
و پس از آن، این جالب است، آن را به PrintName پاسخ.
به نظر می رسد، تمام این مدت، وجود دارد به نظر می رسد یک تابع به نام PrintName.
که چاپ نام کسی.
ما نیاز به استفاده از تابع () printf از گذشته، این PrintName وجود دارد.
>> اما این گمراه کننده به دلیل PrintName نیست
آمده با C. مردم نمی اختراع در حدود 40 یا 50 سال پیش،
من، به جای آن.
و در واقع، اگر من حرکت پایین بیشتر، متوجه
چگونه من می توانم خود من ارسال توابع در C ما در نهایت
توضیح دهد که چرا ما در حفظ و گفت، از درجه اعتبار ساقط، در چند مکان،
اما برای امروز، اجازه دهید فقط در نام نگاه.
>> در خط 24، اگر شما می خواهید ایجاد تابع خود را،
شما به معنای واقعی کلمه نوشتن نام تابع.
من PrintName را انتخاب کرد.
در پرانتز، شما می پس از آن مشخص کنید که چه نوع
از ورودی، و چگونه بسیاری از شما می خواهید این تابع را به.
در این مورد، من می خواهم به 1 متغیر به نام، نام،
و آن را به باشد نوع، رشته، پس آن را
به برخی از دنباله ای از شخصیت.
و پس از آن، این program-- بسیار شبیه در ابتدا،
شما می توانید پازل سفارشی pieces-- در حال رفتن به این رفتار سفارشی.
آن را به تابع () printf پاسخ عبور در، سلام، حفره یا سوراخ،
و سپس آن را به برق وصل در هر کاربر نامیده می شود.
>> بنابراین این یک نمونه از آن چیزی است که یک دانشمند کامپیوتر
انتزاعی و یا کاربردی تجزیه، که فقط
راه فانتزی از saying-- است اگر دوست دارید این ایده در سطح بالا،
مانند من می خواهم که قابلیت چاپ نام کسی، کاملا به شما
می توانید به معنای واقعی کلمه ارسال printf و پس از تصویب در استدلال شما می خواهید،
و برنامه کار خواهد کرد، آن را به عنوان از چهارشنبه است.
اما شما می توانید به انتزاعی شروع به دور مفهوم چاپ یک نام است.
شما می توانید آن را نام می دهد، مانند PrintName، و این
این ایده را از لایه بندی از هفته 0 است.
>> پس، من و شما لازم نیست که می دانم یا مراقبت چگونه PrintName اجرا شده است.
بله با استفاده از تابع () printf آن، شاید آن نمی کند، که می داند چه استفاده می کند؟
چه کسی اهمیت میدهد؟
در حال حاضر من صحبت کردن در اینجا، به جای در اینجا.
و در واقع، به عنوان برنامه های ما را دریافت کنید پیشرفته تر و پیچیده،
ما قصد داریم که به مصرف برای اعطا که قطعات پازل سطح پایین وجود داشته باشد.
از آنجا که ما آنها را نوشته یا شخص دیگری انجام داد، به طوری که
پس از آن می توانید که ما در بالا از آنها ساخت.
بیایید یک نگاهی به این نوع، تابع یک.
>> پس این یکی کمی بیشتر پیشرفته، اما معلوم است
که در کتابخانه CS50 است، تنها یک تابع GetInt وجود دارد.
ما فکر نمی کنم، سال پیش، به اجرای یک تابع GetPositiveInt.
و که کمی آزار دهنده است چرا که اگر شما بچه ها نوشتن یک برنامه در آن
شما می خواهید برای دریافت یک مثبت عدد صحیح را از کاربر،
شما کاملا می توانید استفاده کنید GetInt.
و شما کاملا می تواند با بررسی شرایط و شاید یک حلقه
در صورتی که از نوع int بزرگتر است از 0 و داد در کاربران
اگر او نمی دهد شما مثبت است.
اما اجازه دهید این ساخت بلوک ساختمان خودمان، A،
قطعه خراش های سفارشی، اگر شما خواهد شد.
من قصد دارم که یک برنامه در اینجا است که در نهایت، من
می خواهم که قادر به پاسخ GetPositiveInt، و من می خواهم به
قادر به چاپ هر آنچه که نوع int است.
اما این هم اکنون انتزاع کنیم.
این فقط داده شده است سطح بالایی نام و نام خانوادگی که می گوید چه آن را ندارد،
است که فوق العاده به خاطر آن بسیار شهودی در حال حاضر به عنوان خوانده شده.
و اگر من اهمیتی چه چیزی زیر هود، اجازه دهید من در پایین حرکت.
و آن را کمی ترسناک در ابتدا، به ویژه
اگر اولین بار از این برنامه شما می باشد، اما اجازه دهید نگاهی به.
>> من دیگر گفت، از درجه اعتبار ساقط، به دلیل آن معلوم توابع،
بسیار مانند GetString، می توانید یک مقدار بازگشت به من.
آنها نه تنها باید برای چاپ به روی صفحه نمایش،
آنها در واقع می تواند دست من چیزی.
و در حالی که قبل PrintName، من هر چیزی را ندارید.
من نیاز به اثر جانبی چیزی تا بر روی صفحه نمایش،
اما من یک انسان نیاز ندارد به من چیزی دست به عقب.
در اینجا، با GetPositiveInt، مانند با GetInt،
من می خواهم به تحویل داده می شود چیزی.
بنابراین من نمی گویم، از درجه اعتبار ساقط، در خط 23، اما از نوع int،
که می گوید، این تابع که من می نویسم،
نام GetPositiveInt است که به من دست به عقب یک عدد صحیح، نه هیچ چیز،
از درجه اعتبار ساقط است.
>> در همین حال، آن را به هیچ ورودی، بنابراین من، نوع، آن را معکوس.
من به هر GetPositiveInt نیست ورودی، من می خواهم آن را به من خروجی آن.
و پس از آن چه در حال حاضر اتفاق می افتد؟
بنابراین در اینجا چگونه من می توانم یک متغیر.
من آن را در خارج از حلقه انجام داده ام، به دلایلی که ما در نهایت خواهید دید،
اما این فقط به من 32 بیت نامیده می شود، N،
و من از پیش تعیین آنها برای ذخیره عدد صحیح است.
و در اینجا است که، در حالی که ساختار را انجام دهید، و این است که چرا آن مفید است.
به معنای واقعی کلمه انجام این کار، در حالی که کمتر از 1 N است.
بنابراین اجازه دهید که چه اتفاقی می افتد.
من نسخه قابل چاپ کردن، لطفا من INT مثبت می دهد.
من پس از دریافت یک int، با استفاده از CS50 را عملکرد و ذخیره شده در N.
>> و پس از آن، چه خط از کد احتمالا بعدی اجرا می شود، منطقی است؟
که خط شماره؟
آره، بنابراین 31.
شما نمی این را می دانند تا زمانی که شما گفته شده است و یا از آن استنباط،
اما این درست است.
از آن می رود بالا به پایین و پس از آن را نگه می دارد تکرار.
بنابراین اگر من در می گویند، تعداد تایپ منفی 1، N کمتر از منفی 1.
آره.
از آنجا که منفی 1 کمتر از 1 است.
پس چه باید اتفاق می افتد؟
من قصد دارم برای انجام این کار در حالی که نفر کمتر از 1 باشد،
بنابراین من قصد دارم برای رفتن به خط 28.
>> و هر time-- و اجازه دهید اجرا this-- را تابع: از 1 به آن را کامپایل،
و در حال حاضر نقطه اسلش عملکرد 1.
اگر من منفی نوع 1، آن را رفتن به نگه داشتن فریاد به من
تا زمانی که من به دلیل هر همکاری از ورودی من کمتر از 1 است
و اگر آن را در حالی که کمتر از 1، من قصد دارم به انجام این.
اگر من در نهایت آن را مانند یک عدد 50، خوشبختانه، آن را می گوید، با تشکر برای 50.
چرا؟
زیرا به محض N کمتر از نه 1، من توقف گرفتن در این حلقه گیر،
و این کلمه کلیدی جدید امروز، بازگشت، به معنای واقعی کلمه می کند که.
بنابراین من فقط اجرا کرده ام، در یک معنا، معادل از GetString،
که در آن من به توزیع هر کسی که با استفاده از من، ارزش باشد.
آن را ندارد به یک رشته، آن یک int است.
بنابراین ساده و سریع به عنوان مثال، اما ما به زودی
دیدن برخی از پیچیده تر نسخه هنوز هم.
در واقع، اجازه دهید یک نگاه یک عددی است که به نام return.c.
و این یکی در واقع کمی ساده تر است.
بنابراین هدف این برنامه در life-- اجازه دهید کامپایل و اجرای آن،
بنابراین بازگشت را، نقطه بریده بریده، متوجه return--
این برنامه به سادگی آبگوشت ارزش 2.
آن را بسیار احمقانه، آن را سخت کد، آن را از هیچ ورودی را ندارد،
اما آن را نشان می دهد یکی دیگر از تابع که من خودم نوشته ام.
بنابراین در اینجا، من اعلام یک متغیر، به نام x، از نوع int،
به تعداد 2 برابر، کاملا خودسرانه.
این فقط برخی از چاپ کرکی است.
این گزارش می گوید X در حال حاضر، از جمله و از جمله، گفتگوی نقطه نقطه نقطه.
و سحر و جادو است که ظاهرا در خط 21.
من خواستار یک تابع به نام، مکعب، من آن را توزیع یک ورق کاغذ
با تعداد 2 نوشته شده بر روی آن، و آنچه که ارزش، ریاضی،
من می خواهم به خارج شدن از آن؟
فقط عنوان بررسی سلامت عقل؟
8.
درست؟
من می خواهم 2 نبات تماس، 2 تا قدرت 3، پس از 8 برگشت.
>> پس از کجا است مکعب اجرا؟
خب، متوجه آن اینجا اجرا است.
و درست مثل قبل، منطقی، حتی اگر به نحو است که احتمالا
بسیار جدید به بسیاری از شما، من می خواهم این تابع
به من دست به عقب یک ورق کاغذ با یک int بر روی آن.
بنابراین من یک int است، نام خودسرانه،
اما به راحتی مکعب نامیده می شود.
ورودی به آن، N است نوع عدد صحیح، به طوری که
چگونه من می توانم در تعداد عبور 2 بر روی یک ورق کاغذ.
و پس از آن که معلوم است پشتیبانی از سی ریاضی، بنابراین شما X برای بار را نداشته باشند،
شما فقط استفاده از علامت ستاره برای ضرب.
و این به n بار n بار N، است که به سادگی یک مقدار نبات.
>> تا جایی که هستیم با تمام این رفتن؟
این قطعا یک تور گردباد، مطمئن باشید،
که در بخش های فوق العاده و در مجموعه مسئله 1،
شما می شود از طریق راه می رفت این همه بیشتر است.
و در مجموعه مسئله 1، ما انتقال از جهان گرافیکی از ابتدا
به چیزی بیشتر از خط فرمان در C. اما ما الهام بخش
از این بازی در اینجا از گذشته، در جایی که
با استفاده از C و نسخه استاندارد از P مجموعه شما هرم ماریو اجرا می کنند.
و در نسخه هکر از P مجموعه، اگر شما را انتخاب کنید به انتخاب،
شما یک کمی بیشتر پیاده سازی به چالش کشیدن هرم با دو قله.
شما همچنین می خواهید پیاده سازی الگوریتم، الگوریتم حریص.
به نظر می رسد وجود دارد برخی از منطق جالب
در پشت فرآیند در حال اجرا ایستگاه صندوقدار
و در واقع توزیع کسی تغییر کند.
است یک الگوریتم است که نسبتا وجود دارد ساده، که شما حتی ممکن است
درک به طور مستقیم شما می توانید به عنوان خوانده شده it-- تحقق این چیزی است که من همیشه
انجام هر زمان که من کسی برخی از داده ام back-- پول که به شما اجازه همیشه
به حداقل رساندن تعداد یادداشت های کاغذی و یا سکه های فلزی
که شما در حال توزیع به کاربر.
و این، البته، قانع کننده است چرا که اگر شما به CVS یا فلان چیز بروید،
شما نمی خواهید به دست یک دسته کامل از آنهایی که
و یا یک دسته کامل از سکه.
شما می خواهید بدترین سکه، احتمالا، امکان پذیر است.
>> در نهایت، شما همچنین می خواهید چالش کشیده می شود به اب شلپ شلپ در جهان از آب
و در واقع قدردانی برای نقشه برداری بین میزان جریان،
از دوست، آب در یک حمام، که چه مقدار آب استفاده شده است.
و اشاره در آن، این کلیپ اینجا،
که ما آن را در پایان فقط در 60 ثانیه، که
رنگ یک عکس از جریان کم سر دوش.
>> [پخش ویدئو]
-خیلی خوب.
من همه چیز را به اینجا رسیدیم.
من طوفان سری F کردم، هیدرا، Jetflow، استکهلم
Supersteam، شما نام آن.
>> البته چه پیشنهاد می کنید؟
>> -دنبال چی میگردی؟
>> مرد قدرت.
قدرت.
مانند Silkwood.
یعنی برای تابش است.
-درست است.
در حال حاضر این چیست؟
یعنی کماندو 450 است.
من که به فروش برسانند.
>> و نه اینکه این چیزی است که ما می خواهیم.
این یک کماندوی 450 است.
>> طبخ غذا در منزل من اعتقاد دارند.
آن را تنها در سیرک استفاده می شود.
آن را برای فیل ها است.
>> -I'll چیز را پرداخت.
>> درباره جری چی؟
>> -He تواند اداره کند که نه.
او ظریف.
آه، بله.
[END پخش]
DAVID J مالان: بسیار خوب.
که اگر برای CS50 است.
ما شما را هفته آینده را ببینید.
>> SPEAKER 1: [؟ اسکالی؟]، [؟ ایان،؟] تا آنجا که این پروژه مامانم،
آنچه را که شما بچه ها می آیند تا با؟
>> SPEAKER 2: خب، ما داده ام آن انواع تفکر،
و ما فکر می کنم که بهترین راه to--
>> SPEAKER 3: اجازه می دهید؟
>> SPEAKER 2: آره.
با تمام معنی، در واقع.
>> SPEAKER 3: من فکر می کنم ما می توانیم خلاصه ایده ما
برای دیگران با یک چیزی word--.
>> DAVID J مالان: هیچ چیز؟
SPEAKER 3: هیچ چیز.
DAVID J مالان: به چه معنا است؟
SPEAKER 3: دیگران در مورد هیچ چیز نیست.
SPEAKER 2: خوب، منظور من، در فلسفه، منظور من، هیچ چیز چیزی است که همیشه.
SPEAKER 1: پس what's-- چه فرض است؟
SPEAKER 3: پس آن را مانند زندگی است.
باشه.
امروز چه کار کردی؟
>> DAVID J مالان: من کردم، حال صبحانه، و آمد به محل کار.
>> SPEAKER 3: این جدیدا است.
SPEAKER 2: اما، منظور من، باید چیزی اتفاق می افتد را به او در the--
SPEAKER 3: نه، نه، نه، نه.
چیزی اتفاق می افتد.
>> SPEAKER 1: پس چرا تماشای می کنیم؟
>> SPEAKER 3: از آنجا که آن مامانم برای CS50 است.
>> DAVID J مالان: نه هنوز.