[موسیقی] DAVID J. مالان: خوب، این CS50 است. و این هفته یکی است. پس به یاد آورید که آخرین بار در هفته صفر، ما در فکر محاسباتی متمرکز شده است. و ما انتقال از آن به ابتدا، یک برنامه نویسی گرافیکی زبان از دوستان ما در آزمایشگاه رسانه ای MIT. و با خراش، آیا ما به کشف ایده ها مانند توابع، و شرایط، و حلقه ها، و متغیر، و حتی حوادث، و موضوعات، و بیشتر. و امروز، ما در حال رفتن به ادامه استفاده از آن ایده ها، و واقعا مصرف آنها را برای داده شود، اما ترجمه آنها به زبان دیگر شناخته شده به عنوان C. در حال حاضر، C یک زبان سنتی تر است. این سطح پایین تر است زبان، اگر شما خواهد شد. آن را کاملا متنی. و به این ترتیب در نگاه اول، آن را همه رفتن به نگاه نسبتا مخفی اگر شما هرگز قبل از برنامه ریزی است. ما در حال رفتن به نیمه دونقطه، و پرانتز، و آکولاد، و بیشتر. اما متوجه باشید که حتی هر چند نحو است در مورد به نگاه کمی نا آشنا به بسیاری از شما، گذشته آن را ببینید. و سعی کنید برای دیدن ایده های که، در واقع، آشنا، چرا که در اینجا در هفته یکی چه ما شروع به انجام است که به مقایسه، در ابتدا، خراش در مقابل C. بنابراین، برای مثال، به یاد که زمانی که ما اجرا برای اولین بار از برنامه های ما زمان گذشته، ما یک بلوک که نگاه کرد چیزی کمی شبیه به this-- که پرچم سبز کلیک کنید، و سپس ما یکی از قطعات پازل یا بیشتر در زیر آن، در این مورد، می گویند، سلام جهان است. بنابراین، در واقع، در ابتدا، وقتی که من که پرچم سبز کلیک کنید برای اجرای برنامه من است، پس به صحبت می کنند، این بلوک های که اعدام، و یا اجرا. و، به طور خاص، خراش گفت: سلام، جهان. در حال حاضر، من می توانم مشخص کرده اید کلمات مختلف در اینجا. اما خواهیم دید که، در واقع، بسیاری از از این blocks-- و در واقع، در C بسیاری از functions-- می تواند پارامتری و یا سفارشی برای انجام کارهای مختلف. در واقع، در C اگر ما می خواهید برای تبدیل، در حال حاضر، این برنامه ابتدا به این زبان های دیگر، ما قصد داریم به ارسال چیزی کمی شبیه به این. داده شده است، برخی از نا آشنا وجود دارد نحو وجود دارد به احتمال زیاد، هوشمند، و پرانتز، و از درجه اعتبار ساقط. اما printf-- حتی اگر شما را فکر می کنم آن را فقط چاپ شود. اما چاپ معنی چاپ فرمت شده، به عنوان ما به زودی خواهید دید. این به معنای واقعی کلمه چاپ خواهد شد به روی صفحه نمایش هر در داخل آن پرانتز، که البته در این مورد، سلام جهان است. اما شما برخی دیگر نحو، برخی از نقل قول های دوبل، که پرانتز در پایان، نقطه ویرگول و مانند آن. بنابراین یک بیت از سربار وجود دارد، پس به صحبت، هر دو به لحاظ شناختی و به نحوی، که ما قصد داریم به به یاد داشته باشید قبل از اینکه طولانی. اما متوجه باشید که با تمرین، این شروع به پرش در شما. در واقع، اجازه دهید که در یک تمرکز عملکرد specifically-- در این مورد، سلام جهان است. بنابراین می گویند که تابع است. سلام جهان پارامتر آن است، یا استدلال، سفارشی سازی آن است. و هم ارزی در C فقط رفتن به این خط در اینجا، که در آن تابع () printf معادل است، می گویند، رشته به نقل دو، سلام جهان معادل است، البته، به چه چیزی در جعبه سفید وجود دارد. و N اسلش، هر چند کمی عجیب و غریب و وجود ندارد، از ابتدا، به سادگی در حال رفتن به اثر خواهیم در یک کامپیوتر را مشاهده کنید، مانند مک من و یا یک PC، از فقط در حال حرکت مکان نما به خط بعدی. آن را مانند هدف قرار دادن است را وارد کنید بر روی صفحه کلید خود را. بنابراین ما دوباره قبل از اینکه طولانی را ببینید. اما در ابتدا، اجازه دهید یک نگاهی به این به عنوان مثال دیگر در مورد حلقه. ما در زمان گذشته این برای همیشه حلقه بود، که یک سری از قطعات پازل بود این چیزی است که به معنای واقعی کلمه بود forever-- در این مورد، گویند، سلام جهان، سلام جهان، سلام جهان، سلام جهان. پس از آن یک حلقه بی نهایت با طراحی است. در C، اگر ما می خواهیم برای اجرای این همان ایده، ما به سادگی ممکن است انجام این کار. در حالی که درست، تابع () printf سلام در حال حاضر world-- در حالی که، فقط معنایی، نوع conjures تا ایده انجام چیزی دوباره، و دوباره، و دوباره، و برای چه مدت؟ خب، فراخوان true-- که درست فقط در یا یکی است. و درست است، البته، همیشه درست است. پس از آن نوع از یک بی معنی بیانیه فقط می گویند درست است. اما در واقع، این عمدی است، چرا که اگر درست است فقط همیشه درست، از در حالی که درست فقط پیداست، اگر کمی به طور غیر مستقیم، که خطوط کد زیر را در بین آن آکولاد باید فقط اجرای دوباره، و دوباره، و دوباره، و در واقع هرگز متوقف کند. اما اگر شما می خواهید خود را حلقه برای متوقف کردن، به عنوان ما آخرین بار با چیزی شبیه بود این، تکرار در بر داشت زیر 50 بار، در C می توانید همین کار را با چه چیزی انجام برای loop-- کلمه کلیدی به نام بودن در حالی که، اما نه برای. و سپس ما برخی از نحو جدید را در اینجا، با INT من برابر با 0، من کمتر از 50، من + +. و ما دوباره به آن آمده است. اما این است که به سادگی چگونه ما ترجمه مجموعه ای از بلوک خراش به مجموعه ای از خطوط C کد. در همین حال، در نظر متغیر است. و، در واقع، ما فقط یکی دیدم یک لحظه پیش. و در مورد خراش، اگر ما می خواستم به یک متغیر به نام من برای من به عنوان عدد صحیح، فقط یک عدد، و ما می خواهیم آن را به برخی از ارزش، ما را به این نارنجی استفاده مسدود here-- من مجموعه را به 0. و ما امروز را ببینید و فراتر از آن، درست مثل هفته گذشته، برنامه نویسان انجام تقریبا همیشه شروع به شمارش از صفر، واقعا توسط کنوانسیون. بلکه به دلیل فراخوان از بحث ما در مورد باینری، کوچکترین عدد شما می توانید نمایندگی با هر تعداد از بیت فقط رفتن به 0 است. و به این ترتیب ما به طور کلی شروع مقدار دهی اولیه حتی متغیرهای ما به 0. و در C برای انجام همان، ما در حال رفتن به می گویند INT برای عدد صحیح، من فقط کنوانسیون است. من می توانم این متغیر به نام هر چیزی که من می خواهم، درست مثل در ابتدا. و پس از آن برابر با 0 فقط اختصاص مقدار 0 از سمت راست و آن را به متغیر، یا ظرف ذخیره سازی وجود دارد، در سمت چپ. و نیمه روده بزرگ به عنوان ما see-- و ما دیده ایم تعداد کمی از این already-- فقط به این معنی پایان فکر. اقدام به انجام کاری دیگر در خطوط که به دنبال. در حال حاضر، چه در مورد عبارات بولی؟ به یاد بیاورید که در ابتدا، این عبارت بودند که یا درست هستند و یا سوال false--، واقعا، که درست یا نادرست هستند. بنابراین در مورد خراش، ما ممکن است یک سوال ساده بپرسید مانند این، من کمتر از 50؟ بنابراین من، دوباره، یک عدد صحیح است. شاید ما با استفاده از آن در یک برنامه خراش برای پیگیری نمره یا چیزی شبیه به آن. بنابراین این نحو در اینجا در ابتدا فقط به این معنی، من کمتر از 50؟ خوب، خوشبختانه، چیزی است ساده در C. و به ترجمه، این که ما به سادگی می توانم بگویم کمتر از 50، با استفاده از کلید آشنا بر روی صفحه کلید خود را. در همین حال، اگر شما به خواست چیزی می گویند کلی تر، مانند، خوب است، x کمتر از Y که در آن هر x و y خود متغیر است؟ ما می توانیم همین کار را انجام در C، تا زمانی که ما این این متغیرها ایجاد در حال حاضر. و خواهیم دید که چگونه به که قبل از اینکه طولانی. ما به سادگی می گویند x کمتر از y است. بنابراین شما شروع به برخی از شباهت را ببینید. و کسانی که مردمی که ساخته شده ابتدا قطعا شد با الهام از برخی از این ایده اساسی است. و شما این نوع از دیدن نحو در بسیاری از languages-- نه فقط خراش، نمی فقط C است، اما پایتون، و جاوا اسکریپت، و زبان های دیگر هنوز هم. بیایید سازهای که در نظر از C، مفهوم شرط، انجام کاری مشروط. اگر چیزی درست است، انجام این کار. اگر چیز دیگری درست است، انجام دهد. این نوع از برنامه نویسی معادل یک چنگال در جاده ها است. شاید آن یک چنگال دو طرفه است، سه راه چنگال، یا بیشتر. و در ابتدا، ما ممکن است چیزی شبیه به این دیده می شود. بنابراین این یکی از بزرگ است. اما در نظر گرفتن نسبت سادگی از منطق است. اگر x کمتر از y باشد آنگاه می گویند x کمتر است از y، دیگری اگر x بزرگتر است از ب، پس از آن می گویند X بزرگتر است از ب. و پس از آن، منطقی، اگر شما فکر می کنم برگشت به ابتدا یا فقط شهود انسان خود را، خب، اگر x بزرگتر از y و x را کمتر از Y، پس از آن البته X در حال رفتن به به y برابر است. بنابراین در این مورد، توسط تودرتو آن بلوک خراش، می تواند ما را برای رسیدن به یک سه راه چنگال را در جاده؟ در همین حال، اگر ما می خواهید انجام این کار در C، مسلما به نظر می رسد simpler-- کمی حداقل هنگامی که شما با استفاده از دستور آشنا شده است. اگر x کمتر از y باشد، تابع () printf x کمتر از y است. دیگری اگر x بزرگتر است از ب، تابع () printf X بزرگتر است از ب. دیگری تابع () printf X برابر با y-- و است، دوباره، با کسانی که بک اسلش پایان می رسد فقط برای کسانی که خطوط جدید به طوری که اگر شما در واقع فرار این نوع از برنامه آن را فقط حرکت اشاره گر خود را در نهایت به خط بعدی از روی صفحه نمایش. در حال حاضر، در عین حال خراش دیگر ویژگی های پیچیده تر، تنها برخی از ما که در حال رفتن به در ابتدا حرکت به جهان از C. و یکی از آنها بود نام یک لیست در ابتدا. و این یک خاص بود نوع متغیر است که به شما اجازه ذخیره کارهای مختلف در آن، به عقب، به عقب، به عقب. در C، آن را ندارد لیست ها، به خودی خود، اما چیزی که به طور کلی بیشتر نام آرایه، اگر چه ما بعدا دوباره این ترم به دنبال چیزی نام یک لیست و یا واقعا یک لیست پیوندی. اما در حال حاضر، نزدیک ترین معادل در C برای ما در حال رفتن به چیزی نام یک آرایه. و مجموعه ای است که به سادگی نوع خاصی از متغیر که اجازه می دهد تا شما برای ذخیره داده تماس، به عقب، به عقب، به پشت. و، در واقع، در ابتدا، اگر ما می خواستیم برای دسترسی به اولین عنصر یک آرایه یا list-- و من قصد دارم به آن تماس، طبق قرارداد، و argv، استدلال بردار، اما بیشتر در که قبل از بلند. اگر من می خواهم در اولین عنصر از و argv، در جهان از ابتدا شما در واقع به طور معمول شروع به شمارش از 1. و بنابراین من ممکن است مورد 1 و argv است. که چقدر MIT اجرا مفهوم لیست. اما در C، من قصد دارم به به عبارت ساده تر فقط می گویند، و argv، که دوباره نام من است list-- یا به روشن باشد، یک آرایه. و اگر من می خواهم اولین عناصر، من قصد دارم به استفاده از براکت مربع، که شما ممکن است اغلب تحت یک صفحه کلید استفاده نمی شود. اما فقط به این معنی 0، من اول دریافت کنید. بنابراین در مواردی و به عنوان با گذشت زمان، ما در حال رفتن به شروع به دیدن این دوگانگیها بین خراش و C، به موجب آن خراش با استفاده از یک. ما در C استفاده 0 در اینجا. اما شما به سرعت خواهید دید یک بار شما را در درک پایه های هر زبان، که این چیز شروع به گرفتن همه بیشتر آشنا از طریق تمرین و تمرین. بنابراین اجازه دهید در واقع نگاه در حال حاضر در یک برنامه. در اینجا باید اول C ما کد منبع برای برنامه های کامل است. و برنامه ما در حال رفتن به ارائه برای در نظر گرفتن یکی که معادل است به آن قطعه خراش های قبلی است. بنابراین در اینجا، ما باید چه مسلما ساده ترین برنامه C شما می توانید ارسال که در واقع چیزی. در حال حاضر، ما گذشته نگاه کنید، در حال حاضر، شامل است، io.h استاندارد، و این زاویه براکت و int، و خالی، و آکولاد، و مانند آن. و اجازه دهید فقط تمرکز بر روی چه، حداقل به طور مستقیم، ممکن است در شما پرش در حال حاضر. در واقع، اصلی، من نمی لزوما مطمئن شوید که چه این است، اما بسیار شبیه به خراش بود که وقتی پرچم سبز کلیک قطعه پازل، به طوری که C به عنوان یک زبان برنامه نویسی یک قطعه اصلی از کد که می شود به طور پیش فرض اجرا می شود. و در واقع، آن را به معنای واقعی کلمه به اصلی به نام. بنابراین اصلی یک تابع است. و آن را یک تابع خاص که وجود دارد در C که هنگامی که یک برنامه را اجرا می کنید، آن اصلی که می شود توسط اجرا است به طور پیش فرض. در جهان از ابتدا، معمولا زمانی که پرچم سبز بود کلیک که به طور پیش فرض اجرا کردم. در همین حال، ما این را ندیده اید، تابع () printf و یا چاپ فرمت شده، که برای رفتن به یک تابع است که همراه با C، همراه با یک دسته کامل از دیگران، که از وقت و زمان دوباره، به منظور انجام دقیقا به عنوان نام آن پیداست، چیزی را چاپ کنید. چه ما خواهید چاپ کنید؟ خب، ما می بینیم که توسط شخصیت های متصل به مانند these-- سلام جهان، بک اسلش نفر در کوتیشن، ما می توانیم تابع () printf دقیقا چه چیزی را چاپ بر روی صفحه نمایش. اما به منظور انجام که، متاسفانه نیاز به چیزی است که در حال حاضر به ما انسان مرموز، اما حداقل آن را تا حدودی readable-- تیز عبارتند از، io.h استاندارد، هوشمند، اصلی، از درجه اعتبار ساقط، تابع () printf، همه از جادویی ورد ما فقط بر روی صفحه نمایش را دیدم. اما ما در واقع به رفتن محرمانه تر هنوز هم. ما برای اولین بار نیاز به ترجمه کد که ما را به کد ماشین ارسال. و به یاد از هفته گذشته که ماشین آلات، حداقل آنهایی را که ما در اینجا می دانیم، در پایان روز تنها درک صفر و آنهایی که. و خدای من، اگر ما مجبور به نوشتن این صفر و آنهایی که به واقع برنامه، آن را بسیار بسیار به سرعت نگاهی سرگرم کننده از هر چیزی. اما معلوم است، در هفته گذشته، که این الگوها از صفر و آنهایی فقط باید معنی خاص. در زمینه های خاص، آنها ممکن است تعداد بود. در برخی شرایط، آنها ممکن است به معنای نامه، و یا رنگ، یا هر تعداد انتزاعی دیگر وجود دارد بر. اما فقط به عنوان کامپیوتر شما دارای پردازنده، واحد پردازش مرکزی، یا مغز در داخل از کامپیوتر شما. این معمولا اینتل در داخل، به دلیل این که یکی از بزرگترین شرکت که باعث می شود پردازنده برای رایانه. خوب، پردازنده های اینتل و دیگران به سادگی در پیشبرد تصمیم که الگوهای خاصی از صفر و آنهایی که باید چیز خاصی باشد. الگوهای خاصی از صفر و آنهایی که به معنی، چاپ این صفحه نمایش، و یا اضافه کردن این دو عدد، و یا تفریق این دو عدد، و یا حرکت این قطعه از داده ها را از حافظه کامپیوتر من در اینجا، و یا هر تعداد دیگر از سطح بسیار پایین، اما در نهایت مفید است، عملیات. اما، خوشبختانه، ما انسان ها نمی به نیاز به دانستن این سطح از جزئیات. در واقع، درست مثل زمان گذشته، که در آن ما انتزاع دوباره، و دوباره، و دوباره، ساخت و ساز از سطح بسیار پایین شکلهای هندسی اولیه مانند صفر و آنهایی که به مفاهیم سطح بالاتر مانند اعداد و حروف، و رنگ، و بیشتر، ما هم میتوانیم به عنوان برنامه نویسان ایستاده بر دوش دیگران که قبل از ما آمده اند و استفاده از نرم افزاری است که دیگر مردم قبل از us-- نوشته یعنی برنامه به نام کامپایلر. C یک زبان است که معمولا وارد شده، که به معنی از تبدیل کد منبع به کد ماشین. به طور خاص، این به چه معناست است که اگر شما منبع خود را کردم کد که شما خود را ارسال، به عنوان ما به زودی خواهد شد در یک لحظه بر روی صفحه نمایش، و شما می خواهید برای تبدیل آن در نهایت به دستگاه code-- آن صفر و آنهایی که تنها مک یا PC خود را understands-- اولین شما رو تغذیه است که کد منبع در عنوان ورودی به یک ویژه برنامه ای به نام یک کامپایلر، خروجی که ما خواهیم دید کد ماشین است. و، در واقع، آخرین باری که ما صحبت در مورد، واقعا، در پایان روز، حل مسئله است. شما ورودی کردم. و شما خروجی کردم. و شما به نوعی کردم الگوریتم در وسط. الگوریتم قطعا می تواند اجرا شده در نرم افزار، همانطور که ما با هفته گذشته شبه دیدم و به عنوان ما با کد واقعی را ببینید این هفته. و به این ترتیب یک کامپایلر واقعا فقط دارای مجموعه ای از الگوریتم های داخل از آن است که می دانند چگونه به تبدیل کلمات کلیدی خاص، مانند اصلی، و تابع () printf، و دیگران است که ما فقط دیدم به الگوهای صفر و آنهایی که پردازنده های اینتل در داخل و سایر در واقع درک می کند. پس چگونه ما انجام این کار؟ کجا ما یک کامپایلر است؟ بسیاری از ما در اینجا یک مک یا PC. و شما در حال اجرا سیستم عامل مک، و یا ویندوز، و یا لینوکس، و یا سولاریس، و یا هر تعداد دیگر سیستم های عامل. و، در واقع، ما می تواند بیرون رفتن بر روی وب و دانلود کامپایلر برای مک یا PC خود را برای سیستم عامل خاص خود را. اما ما همه را در می شود صفحات مختلف، پس به صحبت می کنند. ما کمی می خواهم که تنظیمات مختلف. و همه چیز همه همان کار نمی کند. و، در واقع، این روزها بسیاری از ما استفاده نمی نرم افزاری است که تنها بر روی لپ تاپ ما اجرا می شود. در عوض، ما استفاده از چیزی مانند یک مرورگر است که اجازه می دهد تا ما برای دسترسی به وب مبتنی بر برنامه های کاربردی در ابر است. و بعد از این ترم، ما دقیقا همان است که انجام خواهد داد. ما برنامه های کاربردی ارسال خواهد شد و یا نرم افزار با استفاده از code-- نمی C، اما زبان های دیگر مانند پایتون و JavaScript-- که در ابر اجرا. و برای انجام این، ما خودمان را در طول ترم در واقع استفاده از یک ابر مبتنی بر محیط زیست شناخته شده به عنوان CS50 IDE. این برنامه مبتنی بر وب است محیط زیست، یا توسعه یکپارچه محیط زیست، محیط برنامه نویسی، که در بالای برخی از ساخته شده نرم افزار منبع باز به نام ابر 9. و ما برخی از آموزشی ساخته شده ساده به آن به طوری که برای پنهان کردن ویژگی های خاصی در هفته های اول که ما لازم نیست، پس از آن شما می توانید آنها نشان می دهد و انجام بسیاری هر چیزی که شما با محیط زیست می خواهید. و آن را به ما اجازه می دهد تا بیش از حد، به قبل از نصب نرم افزار خاص. چیزهایی مثل یک به اصطلاح CS50 کتابخانه، که ما به زودی خواهید دید ما فراهم می کند در C با برخی از قابلیت های اضافی. بنابراین اگر شما به، در نهایت، CS50.io، شما را وادار به ورود در، و هنگامی که شما انجام دهد و ایجاد یک حساب کاربری رایگان، شما قادر به دسترسی به یک خواهد بود محیط زیست است که به نظر می رسد کاملا شبیه به این. در حال حاضر، این در حالت پیش فرض است. همه چیز خوب است و روشن روی صفحه. بسیاری از ما عادت دارند کار بر روی قطعه CS50 که کاملا در اواخر شب. و به این ترتیب برخی از شما ممکن است به ترجیح می دهند تبدیل آن به حالت شب، پس به صحبت می کنند. اما، در نهایت، آنچه که شما رفتن به درون CS50 IDE را ببینید سه areas-- متمایز است یک منطقه بر روی آن به سمت چپ فایل های خود را در حال رفتن به در می شود ابر، منطقه در سمت راست بالای که در آن کد را در حال رفتن به قابل ویرایش. شما قادر خواهید بود برای باز کردن زبانه های فردی برای هر برنامه که شما ارسال این ترم در داخل که گوشه بالا سمت راست. و پس از آن بسیاری از arcanely، و در عین حال با قدرت، در حال رفتن به این چیزی که در پایین شناخته شده به عنوان یک پنجره ترمینال. این یک مدرسه قدیمی است رابط خط فرمان، یا CLI، که اجازه می دهد شما برای اجرای دستورات در computer-- در این مورد، کامپیوتر در cloud-- برای انجام کارهایی مانند کامپایل کردن کد خود را از کد منبع به کد ماشین، برای اجرای برنامه های خود را، و یا شروع به خود را وب سرور، و یا برای دسترسی به پایگاه داده خود را، و هر تعداد از تکنیک های دیگر که ما شروع به استفاده از قبل از اینکه طولانی. اما برای رسیدن به آنجا، ما رفتن به واقع به آنلاین و شروع به بازی. و برای انجام این، اجازه دهید اول شروع به سرهم بند با اصلی، و ارسال بخش عمده ای از یک برنامه است. و اجازه دهید استفاده از آن تابع تابع () printf، که ما قبلا استفاده می شود، به سادگی به چیزی می گویند. بنابراین در اینجا من در حال حاضر در داخل IDE CS50 است. من در پیش وارد کرده اید. و من پر از پنجره به نمایش. و به این ترتیب، در نهایت، شما بیش از حد در آینده مشکلات گام مشابه را دنبال که خواهد اسناد آنلاین فراهم می کند. بنابراین شما لازم نیست که به نگرانی در مورد جذب هر مرحله فنی کمی که من امروز در اینجا. اما شما یک صفحه نمایش شبیه به این را دریافت کنید. من به اتفاق در حالت شب باشد. و شما می توانید همه چیز را روشن تا با غیر فعال کردن حالت شب. و در پایان از روز، شما در حال رفتن به این سه اصلی areas-- فایل مرورگر در سمت چپ، زبانه کد تا بالا، و در پنجره ترمینال در پایین. اجازه دهید من به جلو و نوشتن اولین برنامه من. من قصد دارم به پیشگیرانه به فایل، جویی در هزینه، و ذخیره فایل به عنوان hello.c. در واقع، طبق قرارداد، هر که ما برنامه ارسال که در زبان C نوشته شده است باید به نام چیزی نقطه C، توسط کنوانسیون. بنابراین من قصد دارم به آن نام hello.c، چون من فقط می خواهم بگویم سلام به جهان است. حالا من قصد دارم به زوم و روی Save کلیک کنید. و من در حال حاضر در اینجا یک تب است که در آن من می توانید شروع به نوشتن کد. این است که نمی کامپایل. این به این معنی هیچ چیز نیست. و به این ترتیب حتی اگر من تبدیل این به صفر و آنهایی، پردازنده است که به هیچ ایده چه خبر است. اما اگر من ارسال خطوط که با هم مطابقت با بودن C conventions-- C است، دوباره، این language-- با نحو مانند این، تابع () printf سلام world-- و من بدست راحت با انجام این کار در طول زمان. بنابراین من فکر نمی کنم من ساخته شده هر اشتباهات تایپی. اما، همواره، اولین زمان انجام این کار، شما خواهد شد. و آنچه من در مورد به انجام هستم ممکن است بسیار به خوبی برای شما کار نمی کند اولین بار. و این کاملا خوب، چون در حال حاضر شما فقط ممکن است زیادی از تازگی مشاهده کنید، اما در طول زمان هنگامی که شما آشنا با این محیط، و این زبان، و دیگران، شما شروع به دیدن چیزهایی که هم درست یا نادرست هستند. و این چیزی است که همراهان آموزش و دوره دستیاران به طوری در طول زمان خوب است، لکه بینی اشتباه و یا اشکالات در کد خود را. اما من ادعا می کنند که وجود دارد بدون باگ در این کد می باشد. بنابراین من در حال حاضر می خواهید برای اجرای این برنامه است. در حال حاضر در مک و یا کامپیوتر خود من، من هستم عادت آیکون دوبار کلیک کردن وقتی می خواهم برای اجرای برخی از برنامه است. اما این مدل اینجا نیست. در این محیط است که CS50 IDE. ما با استفاده از یک عامل سیستم به نام لینوکس است. لینوکس یادآور است سیستم عامل، به طور کلی شناخته شده به عنوان یونیکس. و لینوکس است به ویژه برای شناخته شده داشتن یک خط فرمان محیط زیست، CLI. در حال حاضر، ما با استفاده از یک خاص عطر و طعم از لینوکس به نام اوبونتو. و اوبونتو است که به سادگی نسخه خاصی از لینوکس است. اما این روزها این لینوکس انجام در واقع با رابط های گرافیکی کاربر است. و یکی از ما اتفاق می افتد توان با استفاده از اینجا مبتنی بر وب است. بنابراین ممکن است این حتی یک نگاه کمی متفاوت از چیزی شما خودتان را ممکن است دیده و یا در گذشته اجرا کنید. بنابراین من قصد دارم به جلو بروید در حال حاضر و به شرح زیر است. من این فایل به عنوان hello.c ذخیره کرده ایم. من قصد دارم به جلو بروید و نوع clanghello.c بنابراین صدای جرنگ جرنگ برای زبان C یک کامپایلر است. آن را از پیش نصب شده در CS50 IDE. و شما کاملا می توانید دانلود کنید و نصب این بر روی مک و یا کامپیوتر خود را. اما، دوباره، شما می نه همه دارند قبل از پیکربندی برای شما انجام می شود. بنابراین در حال حاضر، من فقط رفتن به اجرا clanghello.c. و در حال حاضر متوجه این نحو در اینجا خواهد شد در نهایت متوجه حالت فقط بدان معناست که من در یک هستم پوشه و یا پوشه به نام فضای کاری. این علامت دلار فقط کنوانسیون است برای معنا، دستورات خود را اینجا تایپ کنید. این چیزی است که یک اعلان گویند، فقط توسط کنوانسیون علامت دلار است. و اگر من جلو بروید در حال حاضر و با کلیک بر روی را وارد کنید، هیچ چیز به نظر می رسد اتفاق افتاده است. اما این در واقع چیز خوبی است. کمتر اتفاق می افتد که در صفحه نمایش خود را، بیشتر احتمال دارد کد خود را به درست، حداقل نحوی. بنابراین اگر من می خواهم برای اجرای این برنامه، چه کار باید بکنم؟ خب، معلوم است که نام پیش فرض توسط کنوانسیون برای برنامه زمانی که شما یک مشخص نیست نام برای برنامه خود را فقط فایلهای دو دویی a.out است. و این نحو خیلی، شما با قبل از اینکه طولانی آشنا. نقطه بریده بریده فقط به این معنی، هی، CS50 IDE، اجرای یک برنامه به نام a.out که در داخل دایرکتوری جاری من است. که نقطه معنی دایرکتوری جاری. و خواهیم دید که چه چنین دنباله دیگر از شخصیت های معنی قبل از اینکه طولانی. بنابراین در اینجا ما بروید، را وارد کنید، سلام جهان. و شما متوجه خواهید شد که چه اتفاقی افتاد؟ نه تنها آن را چاپ سلام جهان. همچنین نقل مکان کرد مکان نما به خط بعدی. و به همین دلیل بود که؟ کد است که ما قبل از نوشت چه بود که اطمینان می داد که مکان نما را رفتن در خط بعدی؟ چیزی خنده دار در مورد کامپیوتر آن را تنها رفتن به انجام به معنای واقعی کلمه چه شما آن را به انجام. بنابراین اگر شما آن را به تابع () printf سلام، کاما، فضا، جهان، نقل قول نزدیک، آن را به معنای واقعی کلمه تنها به چاپ آن حرف می باشد. اما من تا به حال این شخصیت خاص در پایان، به یاد بیاورید، بک اسلش نفر. و این چیزی است که تضمین که شخصیت رفت به خط بعدی از روی صفحه نمایش. در واقع، بگذار بروم و این کار را. اجازه دهید من به جلو و حذف این. در حال حاضر، توجه کنید که بالای صفحه نمایش وجود دارد من است نور قرمز کمی در تب نشان می دهد، آهای شما فایل خود را ذخیره نمی شود. بنابراین من قصد دارم به جلو بروید با کنترل S و یا دستور S، فایل را ذخیره کنید. در حال حاضر آن goes-- برای سبز moment-- رفت. و در حال حاضر آن را به فقط یک آیکون نزدیک است. اگر من در حال حاضر دوباره اجرا clanghello.c، را وارد کنید، نقطه اسلش، فایلهای دو دویی a.out، را وارد کنید، شما خواهید دید که آن را هنوز هم کار کرده است. اما مسلما کمی حشره دار. در حال حاضر، فضای کاری prompt-- من، و پس از آن که علامت دلار، و پس از آن prompt-- واقعی من همه در همان خط است. پس این مطمئنا یک اشکال زیبایی، حتی اگر آن را واقعا یک اشکال منطقی نیست. بنابراین من قصد دارم برای خنثیسازی آنچه من فقط. من قصد دارم به تکرار فایلهای دو دویی a.out. متوجه من اضافه ام خط جدید تماس شخصیت. من فایل ذخیره کرده ایم. بنابراین من قصد دارم به تکرار فایلهای دو دویی a.out، and-- لعنتی، یک اشکال، اشکال معنی اشتباه. بنابراین اشکال است که حتی اگر من اضافه بک اسلش نفر وجود دارد، دوباره را نجات داد، دوباره زد این برنامه، رفتار همان بود. چرا که خواهد بود؟ من از دست رفته یک گام، درست است؟ که گام کلیدی قبل بود که شما باید to-- زمانی که شما کد منبع خود را تغییر دهید، که معلوم است نیز اجرا آن را از طریق کامپایلر دوباره، بنابراین شما کد ماشین جدید دریافت کنید. و کد ماشین، صفر و آنهایی که، در حال رفتن به تقریبا یکسان است، اما کاملا، چرا که ما نیاز داریم، البته، که خط جدید. بنابراین برای حل این مشکل، من نیاز به رفتن به به تکرار clanghello.c، را وارد کنید، نقطه بریده بریده، فایلهای دو دویی a.out. و در حال حاضر، سلام جهان است به جایی که من انتظار آن را به. پس این است که همه خوب و خوب. اما فایلهای دو دویی a.out یک نام خیلی احمقانه است برای برنامه، حتی اگر آن اتفاق می افتد به، به دلایل تاریخی، default-- معنی خروجی مونتاژ. اما اجازه دهید من جلو بروید اینجا و این کار متفاوت است. من می خواهم برنامه سلام دنیای من به واقع می شود سلام. بنابراین اگر آن را یک آیکون بر روی بودند من دسکتاپ، آن را نمی خواهد فایلهای دو دویی a.out شود. این امر می تواند به نام سلام. بنابراین برای انجام این کار، آن را تبدیل که صدای جرنگ جرنگ، مانند بسیاری از برنامه ها، از آرگومان های خط فرمان، و یا پرچم ها، و یا سوئیچ، که به سادگی رفتار خود را تحت تاثیر قرار. به طور خاص، صدای جرنگ جرنگ پشتیبانی از O داش پرچم، که پس از آن طول می کشد یک کلمه دوم. در این مورد، من خودسرانه، اما منطقی، آن را سلام. اما من می توانم آن را هر چیزی من می خواهم، به جز فایلهای دو دویی a.out، که خواهد بود و نه علاوه بر نقطه. و پس از آن فقط نام مشخص از فایل من نمی خواهم به کامپایل. بنابراین در حال حاضر حتی اگر در آغاز از دستور من هنوز هم صدای جرنگ جرنگ، در پایان از دستور من هنوز هم نام فایل را داشته باشد، من در حال حاضر این خط فرمان استدلال، این پرچم که می گویند، آه، به هر حال، خروجی-O، یک فایل به نام سلام، نه فایلهای دو دویی a.out طور پیش فرض. بنابراین اگر من ضربه را وارد کنید در حال حاضر، هیچ چیز به نظر می رسد اتفاق افتاده است. و، در عین حال، در حال حاضر من می توانم نقطه اسلش انجام سلام. پس از آن همان برنامه است. صفر و آنهایی که یکسان در پایان روز است. اما آنها در دو هستید فایلهای دو دویی a.out مختلف فایل ها، که اولین نسخه است و فقط احمقانه به نام، و در حال حاضر سلام، که است که بسیار نام قانع کننده تر برای یک برنامه است. اما، صادقانه، من هرگز هستم رفتن به یاد داشته باشید این دوباره، و دوباره، و دوباره. و، در واقع، به عنوان ما ارسال برنامه های پیچیده تر، دستورات شما رفتن به ارسال در حال رفتن به حتی بیشتر هنوز هم پیچیده است. و به این ترتیب به نگرانی نیست. به نظر می رسد که انسان قبل از ما آنها متوجه شده اند بیش از حد این همان مشکل دقیق بود. آنها بیش از حد لذت بردن نیست نیاز به نوع نسبتا طولانی، دستورات محرمانه، چه رسد به یاد داشته باشید آنها. و به همین ترتیب انسان قبل از ما ساخته اند برنامه های دیگر که آن را آسان تر به کامپایل نرم افزار خود را. و، در واقع، یکی از این برنامه به نام میک. بنابراین من قصد دارم به جلو بروید و این کار را. من قصد دارم به خنثیسازی همه چیز من فقط به روش زیر را انجام داد. اجازه دهید من می LS تایپ کنید. و شما متوجه خواهید شد سه چیز فایلهای دو دویی a.out، و یک ستاره، سلام و یک ستاره، و hello.c. امیدوارم، این باید یک کمی بصری، تا آنجا بود همانطور که قبلا هیچ چیز در این فضای کاری. چیزی که من تا به حال وجود دارد ایجاد تا زمانی که ما کلاس آغاز شده است. و من hello.c ایجاد شده است. من سپس آن وارد شده، و آن را به نام a.out. و پس از آن من دوباره آن را وارد کمی متفاوت و سلام گفته می شود. بنابراین من باید سه فایل در این پوشه، در این پوشه به نام فضای کاری. در حال حاضر، من می توانید ببینید که به عنوان خوبی اگر من زوم کردن در واقع. اگر من زوم کردن در اینجا و که در آن دست بالا سمت راست نگاه گوشه، به عنوان وعده داده سمت چپ سمت صفحه نمایش خود را همیشه به شما نشان دهد چه چیزی در حساب خود، چه داخل IDE CS50. و سه فایل وجود دارد. بنابراین من می خواهم تا از فایلهای دو دویی a.out خلاص و خوش. و همانطور که شما ممکن تصور کنید به طور مستقیم، شما می تواند از کنترل کلیک مرتب کردن بر اساس یا راست بر روی این کلیک کنید. و این منو کمی بالا میآید. شما می توانید فایل را دانلود، اجرا آن، پیش نمایش آن را، تازه کردن، تغییر نام، و یا چه چیزی نیست. و من فقط می تواند حذف، و آن را دور خواهد رفت. اما اجازه دهید همه چیز با یک دستور خط در حال حاضر، به طوری که برای دریافت راحت با این، و زیر را انجام دهید. من قصد دارم به جلو بروید و حذف فایلهای دو دویی a.out با تایپ کردن به معنای واقعی کلمه rma.out. به نظر می رسد، دستور برای از بین بردن و یا حذف چیزی، است را حذف کنید و یا حذف کنید. آن را به طور خلاصه تر RM، فقط برای نجات شما برخی از کلید، و Enter را بزنید. در حال حاضر ما در حال رفتن به تا حدودی شود مرموزانه حذف فایلهای دو دویی a.out فایل به طور منظم. من واقعا نمی دانم چه فایل نامنظم هنوز می شود. اما من نمی خواهم به آن را حذف. بنابراین من قصد دارم به y از نوع بله. یا من می تواند آن را تایپ کنید و Enter را بزنید. و، دوباره، هیچ چیز به نظر می رسد اتفاق می افتد. اما این، به طور کلی، چیز خوبی است. اگر من LS نوع این زمان، چه باید مراجعه کنم؟ امیدوارم، فقط سلام و hello.c. در حال حاضر، به عنوان یک کنار، شما متوجه این ستاره، ستاره، که در پایان از برنامه های من است. و آنها نیز نشان دادن در سبز. که فقط راه CS50 IDE است از cluing شما را به این واقعیت که که کد منبع نیست. که یک فایل اجرایی، یک اجرایی برنامه ای است که شما در واقع می تواند اجرا شود با انجام نقطه بریده بریده و سپس آن نام است. در حال حاضر، اجازه دهید من به جلو و حذف این، RM سلام، را وارد کنید، حذف به طور منظم فایل سلام، بله. و در حال حاضر اگر من از نوع LS، ما به hello.c است. سعی کنید به حذف کنید خود را کد منبع واقعی. اگرچه ویژگی های وجود دارد ساخته شده را به IDE CS50 که در آن شما می توانید از طریق تاریخ تجدید نظر خود را و عقب در زمان اگر شما به طور تصادفی چیزی را حذف کنید، انجام شود آگاه به عنوان در هر این دهید آری یا نه، از آنچه شما در واقع می خواهید به انجام. و اگر من تا به بالای چپ گوشه سمت در اینجا، که باقی می ماند hello.c است. بنابراین مجموعه ای از وجود دارد دستورات دیگر که شما می تواند در جهان از لینوکس اجرا، که یکی از آنها است، دوباره، را. و ما در حال رفتن به برنامه من در حال حاضر شرح زیر است. به جای انجام صدای جرنگ جرنگ، به جای انجام صدای جرنگ جرنگ-O، من قصد دارم به سادگی به معنای واقعی کلمه را تایپ کنید، را خوش آمدید. و در حال حاضر متوجه، من تایپ کردن نیست را hello.c. من تایپ کردن هستم سلام. و این برنامه را که همراه با IDE CS50، و بیشتر به طور کلی با لینوکس، یک برنامه که است رفتن به یک برنامه به نام سلام. و آن را به فرض، بر اساس قرارداد، که اگر این برنامه را می توان ساخته شده است، آن را از یک منبع توان ساخته شده است فایل کد پایان دادن به در نقطه C، hello.c. بنابراین اگر من ضربه در حال حاضر وارد کنید، توجه کنید که دستور است که اجرا می شود است که در واقع حتی دیگر قبل تر از قبل. و این به دلیل ایم IDE CS50 پیش به برخی از ویژگی های اضافی ساخته شده در آن ما لازم نیست فقط رتبهدهی نشده است، اما به زودی. اما نکته کلیدی برای تحقق بخشیدن به در حال حاضر من یک برنامه Hello دارند. اگر من LS دوباره تایپ می کنم، یک برنامه سلام. و من می توانم آن را با اجرا نقطه بریده بریده فایلهای دو دویی a.out، نه، به این دلیل که نقطه تمام این ورزش سلام بریده بریده نقطه بود. و اکنون من برنامه سلام جهان من داشته باشد. بنابراین در حال حرکت رو به جلو، ما تقریبا همیشه فقط هستید رفتن به کامپایل برنامه های ما با استفاده از میک فرمان. و پس از آن ما در حال رفتن به آنها را اجرا توسط نقطه بریده بریده، و نام این برنامه است. اما متوجه آنچه را برای انجام شما، آن را به خودی خود یک کامپایلر است. این فقط یک برنامه راحتی است که می داند که چگونه به ماشه یک کامپایلر به اجرا به طوری که شما خودتان می توانید از آن استفاده کنید. چه دستورات دیگر در وجود لینوکس، و به نوبه خود CS50 IDE؟ ما به زودی خواهید دید که وجود دارد دستور CD، تغییر کتاب راهنمای. این اجازه می دهد تا شما را در رابط خط فرمان خود را برای حرکت به جلو و عقب، و باز کردن پوشه های مختلف بدون استفاده از ماوس خود را. LS ما دیدیم، که مخفف لیست فایل های موجود در دایرکتوری جاری. را دیر، شما می توانید احتمالا شروع به استنباط آنچه که این معنی now-- ایجاد دایرکتوری، اگر شما می خواهید برای ایجاد یک پوشه. RM برای حذف، RM دیر برای حذف directory-- و این، دوباره، خط فرمان معادل از آنچه شما می تواند در CS50 IDE با ماوس خود را انجام دهید. اما شما به زودی خواهید پیدا که گاهی اوقات آن را فقط خیلی سریع تر به انجام همه چیز با یک صفحه کلید، و در نهایت بسیاری قوی تر است. اما آن را سخت به استدلال می کنند که هر چیزی که ما انجام شده است که تا کنون زمانی که همه تمام است که قدرتمند، ما شده ایم گفت است، سلام جهان. و، در واقع، من شده سخت کلمات سلام جهان به برنامه من است. هیچ پویایی نشده است. ابتدا منظور از قدر بود جالب تر هفته گذشته است. و بنابراین اجازه دهید وجود دارد. اجازه دهید یک گام به سوی که توسط راه برخی از این توابع. بنابراین نه تنها C با printf آمده است، و مجموعه ای از توابع دیگر که برخی از آنها خواهیم دید در طول زمان، آن را نمی کند آن را به همه که آسان سمت راست از دروازه در گرفتن ورودی کاربر است. در واقع، یکی از نقاط ضعف زبان هایی مانند C، و حتی جاوا و در عین حال دیگر، این است که آن را نمی کند آن را آسان به فقط چیزهایی مانند اعداد صحیح از کاربران، و یا رشته ها، کلمات، و عبارات، اجازه دهید همه چیز به تنهایی مانند مقادیر ممیز شناور، و یا اعداد حقیقی با نقطه اعشاری، و واقعا اعداد طولانی، به عنوان ما به زودی خواهید دید. بنابراین این لیست از توابع در اینجا، این مانند دیگر قطعات پازل خراش هستند که ما از پیش نصب شده در CS50 IDE است که ما برای چند هفته استفاده به عنوان چرخ آموزش از انواع، و در نهایت آنها را خاموش، و نگاه در زیر هود، شاید، در چگونه این چیز ها اجرا. اما برای انجام این کار، اجازه دهید در واقع نوشتن یک برنامه. اجازه دهید پیش بروید. و من قصد دارم برای ایجاد یک جدید فایل با کلیک روی این علاوه کمی، و کلیک کردن فایل جدید است. من قصد دارم برای نجات این بعدی یکی به عنوان، اجازه دهید بگویم، string.c، چون من می خواهم به بازی با رشته ها. و string در C فقط دنباله ای از کاراکتر. بنابراین در حال حاضر اجازه دهید به جلو و انجام موارد زیر است. شامل استاندارد IO.h-- و که معلوم است استاندارد IO، IO فقط بدان معناست ورودی و خروجی. بنابراین معلوم است که این خط در اینجا چیزی است که است همسایه ما را به استفاده از printf است. تابع () printf، البته، تولید خروجی. بنابراین به منظور استفاده از تابع () printf، آن را تبدیل از شما باید به این خط از کد در بالای فایل خود را. و ما دوباره به آنچه که واقعا قبل از اینکه طولانی معنی. به نظر می رسد که در هر برنامه C من می نویسم، من به آن شروع با کد است که به نظر می رسد مثل این. و شما متوجه خواهید شد CS50 IDE، و دیگر توسعه یکپارچه محیط های مانند آن، در حال رفتن به عنوان بهترین سعی آنها می توانند به پایان فکر خود را. در واقع، یک لحظه پیش اگر خنثیسازی آنچه که من فقط، من آمار را وارد کنید. من پس از آن ضربه در اشکال مختلف باز بریس، ضربه دوباره وارد کنید. و تصور من به پایان رسید. آن را به من یک خط جدید، فاصله دار کمتر دلایل خوب سبکی خواهیم دید. و سپس آن را به طور خودکار به من داد که آکولاد را به پایان برساند فکر من. در حال حاضر، آن را نمی کند همیشه حدس بزنید چه می خواهید انجام دهید. اما در بخش های بزرگ، آن را برخی کلید صرفه جویی کنید. بنابراین یک لحظه پیش، ما زد این program-- سلام، جهان، و سپس آن وارد شده، و سپس آن زد. اما هیچ پویایی در اینجا وجود دارد. چه اگر ما می خواستیم انجام کاری متفاوت؟ خوب، اگر من می خواستم در واقع دریافت یک رشته از کاربر؟ من قصد دارم به استفاده از یک قطعه پازل نام دقیقا که-- از رشته است. معلوم است در C که زمانی که شما نمی خواهید به ارائه ورودی به یک قطعه پازل، و یا به درستی بیشتر به یک تابع، شما به معنای واقعی کلمه فقط پرانتز باز، پرانتز بسته. پس از آن به عنوان اینکه وجود دارد هیچ جعبه سفید به نوع به. بلوک می گویند قبل از یک جعبه کوچک سفید بود. ما که جعبه سفید ندارد در حال حاضر. اما وقتی که من رشته دریافت تماس، من خواهید برای قرار دادن نتیجه در جایی. بنابراین یک الگوی بسیار معمول است در C است به یک تابع، مانند رشته دریافت تماس در اینجا، و پس از آن مقدار بازگشتی آن را ذخیره کنید. این نتیجه را آن تلاش در چیزی. و آنچه که ساخت در برنامه نویسی، چه در ابتدا و یا در حال حاضر C، که ما می توانید استفاده کنید در واقع ذخیره چیزی؟ آن را به نام یک متغیر، درست است؟ و در ابتدا، ما واقعا نمی مراقبت از آنچه که در متغیر شد. اما در این مورد، ما در واقع. من قصد دارم به رشته. و پس از آن من می توانم پاسخ این هر چیزی که من می خواهم. من قصد دارم به آن پاسخ نام، می شود از رشته است. و در حال حاضر حتی اگر شما جدید کمی به این، توجه کنید که من فاقد برخی از جزئیات. من فراموش نیمه روده بزرگ است. من نیاز به پایان برساند این فکر. بنابراین من قصد دارم به حرکت مکان نما من، و ضربه نیمه روده بزرگ وجود دارد. و آنچه که من فقط انجام داده اند؟ در این خط از کد، تعداد 5 در حال حاضر، من خواستار رشته با هیچ ورودی. بنابراین هیچ سفید کمی وجود دارد جعبه مانند ذخیره بلوک است. من فقط گفت، هی، کامپیوتر، من یک رشته را دریافت کنید. علامت مساوی واقعا یک علامت مساوی، در هر سه. این انتساب است اپراتور، که به معنی، هی، کامپیوتر، حرکت ارزش از سمت راست به سمت چپ. و در سمت چپ، من که در زیر می. با سلام، کامپیوتر، به من string-- را دنباله ای از کاراکتر. و پاسخ که نام رشته. و من حتی نمی باید به آن پاسخ نام. من می توانم از آن تماس، مرسوم، چیزی شبیه به S، بسیار شبیه به ما من استفاده می شود به پاسخ متغیر من. اما در حال حاضر من نیاز به انجام کاری با آن. این امر می تواند احمقانه به سعی کنید کامپایل این کد، در حال اجرا این برنامه، حتی اگر من گرفتن یک رشته، به دلیل آن را هنوز فقط رفتن به می گویند سلام جهان. اما اگر من نمی خواهم برای تغییر این. چرا من این کار؟ درصد بازدید کنندگان، کاما است. و این است که کمی مرموز هنوز هم. بنابراین اجازه دهید متغیرهای من روشن تر باشد. اجازه دهید من نام این نام متغیر. و بیایید ببینید که اگر ما نمی توانیم کسی را دست انداختن از هم جدا آنچه در اینجا اتفاق می افتد. بنابراین در خط پنج، من گرفتن یک رشته است. و من ذخیره سازی این رشته، هر کاربر در تایپ در صفحه کلید خود را، در یک متغیر به نام نام. و معلوم است که تابع () printf نه تنها یکی بحث در دو نقل قول ها، یک ورودی در کوتیشن. آن را می توانید دو یا سه و یا بیشتر، از جمله به که دوم یا سوم یا چهارم، همه نام متغیر هستند، یا به طور خاص ارزش ها، که شما می خواهید به برق وصل به، به صورت پویا، که رشته در نقل قول. به عبارت دیگر، آنچه اشتباه خواهد بود با این؟ اگر من فقط گفت: سلام نام، بک اسلش N، ذخیره فایل من، وارد شده کد من، و این زد، چه اتفاقی خواهد افتاد؟ آن را فقط می گویند، سلام نام، به معنای واقعی کلمه N-A-M-E، که نوع احمقانه است چون آن را متفاوت از جهان است. بنابراین هر چیزی در نقل قول است چه به معنای واقعی کلمه چاپ میشود. بنابراین اگر من می خواهم به یک حفره یا سوراخ وجود دارد، من در واقع نیاز به استفاده از برخی از نحو خاص است. و معلوم است اگر شما خواندن مستندات مربوط به تابع printf، آن را به شما بگویم که اگر شما استفاده از درصد S، شما می توانید یک مقدار به شرح زیر جایگزین. پس از یک کاما بعد از آن نقل قول، شما به سادگی ارسال نام متغیر است که شما می خواهید به برق وصل به آن فرمت کد، و یا فرمت تصریح، درصد برای رشته ها. و در حال حاضر اگر من فایل من ذخیره کرده اید، من رفتن به پایین به ترمینال من. و من تایپ را رشته، دلیل، دوباره، نام این فایلی که من قبل از انتخاب string.c است. بنابراین من قصد دارم به را رشته، وارد کنید. اوه خدای من، در تمام نگاه اشتباهات ما در حال حاضر ساخته شده است. و این is-- چه، این است که واقعا یک، هفت برنامه شش خط؟ پس این است که آن را بسیار می به سرعت قریب به اتفاق. این پنجره ترمینال است در حال حاضر فقط regurgitated تعداد زیادی از پیام های خطا. مطمئنا، من خطا بیشتر ندارد پیام از من خط کد. بنابراین آنچه در جریان است؟ خوب، بهترین استراتژی به انجام هر زمان شما روبرو قریب به اتفاق لیستی از خطاها مانند آن، است حرکت به عقب، برای فرمان نگاه شما فقط فرار، که در مورد من است را رشته است. در چه را انجام داد نگاه کنید، و این که دستور صدای جرنگ جرنگ طولانی، هیچ معامله بزرگ وجود دارد. اما رنگ قرمز بد است. سبز در تلاش است تا ملایم و مفید است. اما هنوز هم بد، در این مورد. اما در آن است بد است؟ String.c، خط پنج، شخصیت پنج. بنابراین این کنوانسیون فقط شایع است. چیزی روده بزرگ چیزی به این معنی شماره خط و شماره شخصیت. خطا، استفاده از اعلام نشده رشته شناسه. آیا منظور شما این استاندارد در؟ بنابراین، متاسفانه، صدای جرنگ جرنگ در تلاش است تا مفید باشد. اما این اشتباه است، در این مورد. نه، صدای جرنگ جرنگ، من استاندارد IO نیست. من در خط یک معنا بود که، بله. اما خط پنج این یکی در اینجا است. و صدای جرنگ جرنگ نیست درک S-T-R-من-N-G. این شناسه اعلام نشده، یک است کلمه آن را فقط تا قبل از هرگز دیده می شود. و به دلیل C، زبان است ما در حال نوشتن کد در حال حاضر، کند متغیرها به نام رشته ندارد. آن را ندارد، به طور پیش فرض، پشتیبانی چیزی به نام یک رشته است. که یک قطعه CS50 از این اصطلاحات مخصوص یک صنف است، اما بسیار معمولی است. اما من می توانم این را به عنوان زیر را حل کنند. اگر من اضافه کردن یک خط کد به بالا از این برنامه، شامل CS50.H است که یک فایل دیگر جایی در داخل از CS50 IDE، جایی بر روی هارد دیسک، پس به صحبت می کنند، از سیستم عامل اوبونتو که من در حال اجرا، که فایل که است رفتن به تدریس عامل سیستم چه رشته ای است، فقط مانند io.h استاندارد فایل است در سیستم عامل که رفتن به آن را یاد می دهد چه printf است. در واقع، ما شده اند یک پیام بسیار شبیه اگر IO استاندارد پذیرفته است IO.h و سعی کردم به استفاده از printf است. بنابراین من قصد دارم به جلو بروید و فقط نگاهی کنترل L به روشن شدن صفحه نمایش است. یا شما می توانید روشن و نوع آن را فقط پنجره ترمینال روشن است. اما شما هنوز هم می توانید تماس حرکت در زمان. و من قصد دارم به تکرار را رشته. عبور از انگشتان دست من این زمان، وارد کنید. اوه خدای من، آن را کار کرده است. آن را به من نشان می دهد یک دستور مرموز طولانی این چیزی است که را از طریق صدای جرنگ جرنگ تولید، اما هیچ پیغام خطا. پس متوجه، حتی اگر شما ممکن است به طور کامل دریافت غرق با تعداد پیام های خطا، آن را فقط ممکن این آبشاری آزار دهنده اثر، که در آن صدای جرنگ جرنگ را درک نمی یک چیز، که به این معنی است پس از آن کند کلمه بعدی را درک کنند، و یا خط بعدی. و پس از آن فقط در کد خود چوک. اما ثابت ممکن است ساده است. و به این ترتیب همیشه در تمرکز خط اول از خروجی. و اگر شما نمی آن را درک، فقط نگاه برای کلمات کلیدی که ممکن است سرنخ، و شماره ی خط، و شخصیت، که در آن که اشتباه ممکن است. حالا من به جلو بروید و تایپ نقطه بریده بریده، رشته، وارد کنید. HM، آن را نمی گویم سلام هر چیزی. چرا؟ خب، یاد، که در آن است در حال اجرا؟ آن را احتمالا در حال حاضر گیر در یک حلقه، اگر شما خواهد شد، در خط شش، به دلیل دریافت رشته های طراحی، نوشته شده توسط کارکنان CS50، به معنای واقعی کلمه به معنای فقط نشستن انتظار وجود دارد، و در انتظار، و در انتظار برای یک رشته است. همه رشته منظور ما ورودی بشر است. بنابراین شما می دانید چه چیزی؟ اجازه بدهید به جلو. و فقط از روی هوس، به من اجازه نام من ... است، دیوید تایپ می کنید، وارد کنید. در حال حاضر من یک برنامه پویا تر داشته باشد. آن را گفت، سلام دیوید. اگر من پیش بروید و این کار را دوباره اجرا شود، اجازه دهید می گویند نام Zamila، را وارد کنید. و در حال حاضر ما باید یک برنامه پویا. من سخت جهان رمزی نیست. من سخت کدگذاری نمی نام، و یا دیوید، و یا Zamila. در حال حاضر آن بسیار بیشتر شبیه به برنامه ما می دانیم، که در آن اگر آن را ورودی، آن را به تولید خروجی کمی متفاوت است. در حال حاضر، این است که بهترین نیست تجربه کاربر، و یا UX. من این برنامه را اجرا کنید. من نمی دانم که چه من قرار انجام دهید، مگر اینکه من در واقع در نگاه و یا به یاد داشته باشید کد منبع. بنابراین اجازه دهید تا کاربر تجربه کمی بهتر با ساده ترین از همه چیز. به من اجازه رفتن به این برنامه، و به سادگی تابع () printf است. و اجازه دهید من به جلو و می گویند نام، روده بزرگ، و یک فضا، و سپس یک نقطه ویرگول. و فقط برای ضربات، هیچ واکنش N. و این عمدی، چون من نمی خواهم اعلان را به حرکت به خط بعدی. من می خواهم به، به جای آن، انجام این کار، رشته به کامپایل مجدد کد من به ماشین جدید کد نقطه بریده بریده رشته است. آه، این است که بسیار زیباتر است. در حال حاضر من می دانند چه کامپیوتر می خواهد من به کار، آن را یک نام بدهید. بنابراین من قصد دارم به جلو بروید و تایپ کنید در راب، را وارد کنید، و سلام، راب. بنابراین، درک، این است که هنوز، در پایان از روز، تنها یک برنامه نه خط. اما ما این مراحل نوزاد گرفته شده است. ما یک خط نوشت که ما با آن آشنا، تابع () printf، سلام جهان بود. پس ما یک کمی از آن واگرد. و ما در واقع رشته استفاده می شود. و ما که ارزش را در یک متغیر پرتاب کرد. و سپس ما جلو رفتم و بهبود یافته آن را بیشتر با خط سوم. و این روند تکراری نوشتن نرم افزار واقعا کلیدی است. در CS50، و در زندگی به طور کلی، شما باید به طور کلی نشستن نیست، یک برنامه را در ذهن، و سعی کنید نوشتن طیف چیز لعنتی همه در یک بار. آن خواهد شد، به ناچار، در نتیجه در راه خطاهای بیشتر از ما خودمان را در اینجا دیدم. حتی من، به این روز، به طور مداوم را دیگر اشتباهات احمقانه، اشتباهات در واقع سخت تر که سخت تر به کشف کردن. اما شما اشتباه بیشتر را خط کد شما ارسال همه در یک بار. و این عمل، ارسال نامه کمی از کد که شما با آن راحت هستید، تدوین آن، آن را اجرا کنید، آن را تست به طور کلی، سپس حرکت کنین تا درست مثل ما نگه داشته لایه بندی و لایه بندی در هفته گذشته، ساخت و ساز از چیزی بسیار ساده برای چیزی پیچیده تر، همین کار را در اینجا. هنوز ننشینید، و سعی کنید به ارسال به کل مشکل است. در واقع این مراحل نوزاد است. در حال حاضر، رشته ها همه نیست که نزد خود مفید است. ما در واقع، ایده آل، مانند به باید چیز دیگری در جعبه ابزار ما است. بنابراین اجازه دهید در واقع انجام که دقیقا. اجازه دهید به جلو و شلاق تا یک برنامه کمی متفاوت است. و ما این int.c پاسخ، برای عدد صحیح است. من قصد دارم به، به طور مشابه، شامل CS550.h. من قصد دارم به شامل استاندارد IO. و این که به صورت کاملا رایج در این چند روز اول از کلاس. و من قصد دارم به آماده خودم را با یک تابع اصلی. و در حال حاضر به جای گرفتن یک رشته، اجازه دهید به جلو و یک int. اجازه دهید آن را من، و پاسخ آن را دریافت هوشمند، پرانتز بسته، نیمه روده بزرگ است. و در حال حاضر اجازه دهید انجام کاری با آن، printf است. بیایید می گویند چیزی شبیه سلام، بک اسلش نفر، کاما من. بنابراین من بسیار تقلید آنچه که من فقط یک لحظه پیش. من یک حفره یا سوراخ در اینجا. من من در اینجا با کاما از هم اند، چون من می خواهم به برق وصل من به آن حفره یا سوراخ. بنابراین اجازه دهید پیش بروید و سعی کنید تدوین این برنامه است. فایل int.c. نام بنابراین من قصد دارم برای گفتن، را از نوع int، را وارد کنید. اوه خدای من، اما هیچ معامله بزرگ، درست است؟ یک اشتباه وجود دارد. یک اشتباه نحوی وجود دارد در اینجا به طوری که این برنامه نمی تواند در داخل int.c، خط وارد هفت، شخصیت 27، فرمت خطا نوع char مشخص ستاره، هر آنچه که است. اما نوع آرگومان int است. بنابراین در اینجا، بیش از حد، ما قصد داریم to-- حتی اگر امروز بسیاری از مواد است، ما قصد داریم به شما پایمال با کاملا هر ویژگی از C، و برنامه نویسی به طور کلی، فقط در این چند هفته اول. بنابراین وجود اغلب برای رفتن به اصطلاحات مخصوص یک صنف که با آن شما آشنا نیست. و، در واقع، ستاره کاراکتر چیزی است ما قصد داریم تا دوباره به در یک هفته یا زمان دو است. اما در حال حاضر، اجازه دهید اگر ما می توانید ببینید تجزیه کلمات که آشنا هستند. Formats-- بنابراین ما فرمت شنیده تعیین، کد فرمت قبل از. که آشنا. Type-- اما استدلال نوع int هستند. یک دقیقه صبر کنید، من از نوع int است. شاید درصد در واقع تا به برخی از معنای تعریف شده است. و، در واقع، آن را ندارد. یک عدد صحیح، اگر شما می خواهید تابع () printf به جایگزین آن، شما در واقع مجبور به استفاده از فرمت تصریح متفاوت است. و شما نمی دانید که این مگر اینکه کسی به شما گفت، و یا شما آن را قبل انجام داده بود. اما درصد من چه است می توان معمولا استفاده می شود در تابع () printf برای متصل کردن در یک عدد صحیح. شما همچنین می توانید درصد استفاده D برای یک عدد صحیح دهدهی. اما من در اینجا زیبا و ساده است. بنابراین ما به سراغ آن میرویم. حالا اجازه دهید من به جلو و تکرار INT ساخت، وارد کنید. این خوب است، بدون خطا. نقطه بریده بریده OK int--، تجربه کاربر بد، چون من به خودم گفتم نمی چه باید بکنید. اما این خوب است. من در ابتلا به سرعت. و در حال حاضر من به جلو و تایپ دیوید، OK، Zamila، راب. خوب، پس این چیز خوبی است. در این زمان، من با استفاده از یک تابع، یک قطعه پازل، به نام روی int. و آن را تبدیل out-- و خواهیم این بعد از آن در term-- ببینید CS50 کارکنان اجرا است دریافت رشته در چنین راهی که آن را تنها از لحاظ جسمی دریافت یک رشته را برای شما. از آن شده است INT مطلع اجرا شده در به گونه ای که آن را تنها از یک عدد صحیح برای شما. و اگر شما، انسان، همکاری نکنید، آن را به معنای واقعی کلمه فقط رفتن به می گویند دوباره سعی کنید، سعی مجدد، دوباره سعی کنید، به معنای واقعی کلمه نشسته وجود دارد حلقه، تا زمانی که شما را با برخی تعداد جادویی ملزم، مانند 50، و سلام 50. و یا اگر ما این را دوباره اجرا و نوع در 42، سلام 42. و به این ترتیب تابع get INT در داخل آن قطعه پازل منطق کافی است، فکر به اندازه کافی، به شکل، چه چیزی یک کلمه است؟ و چه تعداد است؟ فقط پذیرش، در نهایت، اعداد. پس از آن می رسد که این است که همه رسا نیست. تا حالا. بنابراین، ماهواره، آخرین باری که ما رفت خیلی سریع به اجرای بازی ها، و انیمیشن، و آثار هنری در ابتدا. و در اینجا، ما در حال محتوای با سلام جهان، و سلام 50. این همه که الهام بخش است. و، در واقع، این اولین نمونه، به زمان نیاز تا سطح شیب دار در شور و هیجان. اما ما باید خیلی بیشتر کنترل در حال حاضر، در واقع. و ما در حال رفتن به بسیار به سرعت شروع به لایه بندی در بالای این شکلهای هندسی اولیه اساسی است. اما در ابتدا، اجازه دهید درک چه محدودیت هستند. در واقع، یکی از چیزهایی که خراش می کند به راحتی نمی اجازه دهید ما واقعا نگاه در زیر هود، و درک آنچه که یک کامپیوتر، آنچه در آن می توانید انجام دهید، و چه محدودیت های آن می باشد. و، در واقع، که عدم درک، به طور بالقوه، در دراز مدت می توانید به نوشتن mistakes-- خود ما منجر شود اشکالات، نوشتن نرم افزار های نا امن که می شود در برخی از راه های هک شده. بنابراین اجازه دهید برخی از مراحل به سمت درک این که کمی بهتر شده راه، می گویند، مثال زیر. من قصد دارم به جلو بروید و پیاده سازی واقعی سریع یک برنامه به نام جمع کننده. مانند، اجازه دهید برخی از اعداد اضافه کردن با هم. و من قصد دارم به کد برخی از گوشه در اینجا، و فقط کپی و چسباندن که در آن من قبل از آن بود، فقط بنابراین ما می توانیم رفتن را زودتر دریافت. بنابراین در حال حاضر من آغاز کردم اساسی از برنامه ای به نام جمع کننده. و اجازه دهید به جلو و انجام این کار. من قصد دارم به جلو بروید و مثلا intx می شود از نوع int است. و شما می دانید چه؟ بیایید یک تجربه کاربری بهتر. بنابراین اجازه دهید فقط می گویند x است، و به طور موثر سریع کاربر به ما X را. و سپس اجازه دهید من به جلو و می گویند، تابع () printf چگونه در مورد y است، این بار انتظار دو مقدار از کاربر. و سپس اجازه دهید فقط به جلو و مثلا، تابع () printf، از مجموع x و y است. و در حال حاضر من نمی خواهم به انجام درصد است. من می خواهم به درصد من، بک اسلش N، و سپس در مقدار جمع وصل. پس چگونه می توانم در مورد انجام این کار؟ میدونی چیه؟ من می دانم که چگونه به استفاده از متغیرهای. اجازه بدهید من فقط اعلام یک جدید، INT Z. و من قصد دارم به یک حدس است. اگر نشانه های برابر در این وجود دارد زبان، شاید من فقط می توانید انجام دهید X به علاوه Y، تا زمانی که من پایان من با یک نقطه ویرگول فکر کرده اید؟ در حال حاضر من تماس می توانید به پایین در اینجا، به برق وصل Z، پایان این فکر با نیمه روده بزرگ است. و اجازه دهید در حال حاضر، اگر این سلسله ای از X lines-- است از نوع int است. Y است از نوع int است. اضافه کردن x و y، ذخیره ارزش در z-- پس، دوباره، به یاد داشته باشید از علامت مساوی برابر نیست. این انتساب از راست به چپ است. و اجازه دهید نسخه قابل چاپ کردن که مجموع x و y است به معنای واقعی کلمه Z نیست، اما آنچه در داخل Z است. بنابراین اجازه دهید جمع کننده - خوب، بدون اشتباهات این زمان. نقطه بریده بریده جمع کننده، وارد کنید، X در حال رفتن به 1. Y است برای رفتن به 2. و مجموع x و y 3 است. به طوری که همه خوب هستند و خوب است. بنابراین شما می توانید که ریاضی تصور باید در یک برنامه مثل این کار می کنند. اما میدونی چیه؟ آیا این متغیر، خط 12، حتی لازم است؟ شما لازم نیست که در عادت از فقط ذخیره سازی همه چیز در متغیرهای فقط به خاطر اینکه شما می توانید. و، در واقع، آن را به طور کلی طراحی بد در نظر گرفته اگر شما در حال ایجاد یک متغیر، به نام Z در این مورد، ذخیره سازی چیزی در آن، و پس از آن بلافاصله استفاده از آن، اما هرگز دوباره. چرا به چیزی به نام مانند Z اگر شما به معنای واقعی کلمه هستید قصد استفاده از آن چیزی تنها یک بار، و غیره پروگزیمال به جایی که شما ایجاد آن را در وهله اول، از نظر خط کد بسیار نزدیک؟ بنابراین شما می دانید چه چیزی؟ معلوم می شود که C بسیار انعطاف پذیر است. اگر من در واقع می خواهند به پلاگین در مقادیر در اینجا، من لازم نیست به اعلام یک متغیر جدید. من فقط می تواند پلاگین در X به علاوه Y، چون C درک حساب، و عملگرهای ریاضی. بنابراین من به سادگی می توان گفت، این ریاضی، X به علاوه Y، هر آنچه که آن ارزش ها هستند، پلاگین نتیجه عدد صحیح را در این رشته. بنابراین این ممکن است، هر چند تنها یک خط کوتاه تر، یک طراحی بهتر، یک برنامه بهتر است، چرا که کد کمتر وجود دارد، بنابراین کمتر برای من به درک. و آن را نیز فقط پاک کن، تا آنجا که ما نه معرفی کلمات جدید، علامت جدید، مانند Z، حتی اگر آنها واقعا نمی خدمت از حد از یک هدف. متاسفانه، ریاضی است که گاهی اوقات قابل اعتماد. اجازه دهید به جلو و انجام این کار. من قصد دارم به جلو بروید در حال حاضر و به شرح زیر است. اجازه دهید از printf، درصد من، به علاوه درصد من، باید درصد من، بک اسلش نفر باشد. و من قصد دارم به انجام this-- xyx به علاوه Y. بنابراین من فقط رفتن به بازنویسی این کمی متفاوت است. اجازه بدهید من فقط انجام یک بررسی سلامت عقل سریع. باز هم، اجازه دهید به جلو از خودمان نیست. را جمع کننده، نقطه جمع کننده بریده بریده. * 1 است، y است 2، 1 به همراه 2 3. به طوری که خوب. اما اجازه دهید در حال حاضر این پیچیده کمی، و ایجاد یک فایل جدید. من قصد دارم به پاسخ این یکی، می گویند، نوع داده int، جمع اعداد صحیح است. اجازه دهید من شروع به جایی که من چند لحظه پیش بود. اما در حال حاضر اجازه دهید چند خط دیگر. اجازه دهید من به جلو و زیر را انجام دهید، تابع () printf، درصد من، منهای درصد من، درصد من، کاما X، کاما YX منهای y است. بنابراین من کمی انجام ریاضی مختلف وجود دارد. اجازه دهید یکی دیگر. بنابراین درصد من بار درصد من درصد من، بک اسلش نفر است. بیایید پلاگین در x و y و زمان X Y. ما ستاره در استفاده کامپیوتر خود را برای بار. شما X استفاده کنید. X است نام متغیر است. شما با استفاده از ستاره برای ضرب. بیایید یک بیشتر انجام دهد. تابع () printf درصد من، تقسیم توسط درصد من، درصد من است، N اسلش. XY تقسیم بر y-- بنابراین شما با استفاده از اسلش در C به انجام تقسیم. و اجازه دهید یکی دیگر. باقی مانده از درصد من، تقسیم توسط درصد من، درصد من است. xy-- و در حال حاضر باقی مانده همان چیزی است که بیش از سمت چپ. هنگامی که شما سعی می کنید تقسیم یک مخرج را به یک صورت کسر، چقدر بیش از سمت چپ که شما نمی تواند تقسیم شود؟ بنابراین است که واقعا وجود ندارد، لزوما، یک نماد ما در مدرسه برای این استفاده می شود. اما در C. شما می توانید می گویند X پیمانه Y، که در آن این علامت درصد در این context-- اشتباه در زمانی که شما در داخل هستید از علامت های نقل قول، در داخل تابع () printf، درصد به عنوان فرمت تصریح استفاده می شود. هنگام استفاده از درصد در خارج از که در یک عبارت ریاضی، آن اپراتور برای مدولار arithmetic-- برای اهداف ما در اینجا، فقط به این معنی است، آنچه که باقی مانده از X تقسیم بر Y؟ بنابراین x با y تقسیم X بریده بریده y است. باقی مانده از X تقسیم بر Y چیست؟ این X Y وزارت دفاع، به عنوان یک برنامه نویس می گویند. بنابراین اگر من هیچ اشتباهات در اینجا، به من اجازه جلو بروید و نوع داده int، جمع، زیبا، و نوع داده int بریده بریده نقطه. و اجازه دهید به جلو و انجام دهید، اجازه دهید بگویم، 1، 10. همه حق است، 1 به علاوه 10 11، چک. 1 منهای 10 منفی 9، تیک بزنید. 1 بار 10 است 10، چک. 1 تقسیم بر 10 is-- OK، ما که جست و خیز. باقی مانده از 1 تقسیم بر 10 1 است. این درست است. اما یک اشکال در اینجا وجود دارد. بنابراین یکی از من قرار من دست، درست نیست. منظور من، آن را نزدیک به 0. 1 تقسیم بر 10، شما می دانید، اگر ما برش برخی گوشه و کنار، مطمئن، آن را به صفر است. اما واقعا باید 1/10، 0.1 یا 0.10، 0.1000، و یا غیره. این باید واقعا صفر باشد. خب، معلوم است که کامپیوتر است انجام به معنای واقعی کلمه چیزی است که ما آن را گفت به انجام. ما در حال انجام ریاضی مانند x تقسیم بر y است. و هر دو x و y، در خطوط کد پیش از آن، اعداد صحیح هستند. علاوه بر این، در خط 15، ما گفتن تابع () printf، هی، تابع () printf پلاگین در یک عدد صحیح، پلاگین در یک عدد صحیح، پلاگین در integer-- به طور خاص X، Y و سپس، سپس x تقسیم بر y است. x و y نوع داده int هستند. ما خوب وجود دارد. اما آنچه X تقسیم بر ایکس؟ X تقسیم بر Y باید باشد، ریاضی، 1/10، و یا 0.1، که یک عدد حقیقی، یک عدد حقیقی است داشتن، به طور بالقوه، یک نقطه اعشار. آن را یک عدد صحیح است. اما آنچه نزدیک ترین است عدد صحیح به 1/10 یا 0.1؟ آره، آن نوع از صفر است. 0.1 است مثل این است. و 1 تا این حد است. بنابراین 01/10 به نزدیک تر است 0 از آن به یک است. و بنابراین، آنچه C در حال انجام است برای us-- نوع چرا که ما آن گفت to-- است کوتاه کردن که عدد صحیح است. این طرح در حال ارزش، که دوباره است تصور می شود چیزی شبیه به 0.1000، 0 و غیره. و آن را کوتاه کردن همه چیز بعد از نقطه اعشار به طوری که همه از این مسائل، به دلیل آن را نمی کند جا در مفهوم یک عدد صحیح، که فقط یک عدد مانند منفی 1، 0، 1، بالا و پایین، آن را می اندازد دور همه چیز را بعد از نقطه اعشار به خاطر شما می توانید یک نقطه اعشار مناسب نیست در یک عدد صحیح تعریف. بنابراین پاسخ اینجا صفر است. پس چگونه ما این را تعمیر کنید؟ ما باید راه حل دیگری همه با هم. و ما می توانیم این را به عنوان زیر را انجام دهید،. اجازه دهید من به جلو و ایجاد یک جدید فایل، این یکی به نام floats.c. و آن را ذخیره کنید در اینجا در همان دایرکتوری، float.c. و اجازه دهید من به جلو و کپی برخی از این کد از پیش از آن. اما به جای گرفتن یک int، اجازه دهید این کار. من یک مقدار ممیز شناور را به نام x. که در آن یک نقطه شناور ارزش است که فقط به معنای واقعی کلمه چیزی با یک ممیز شناور. این می تواند به سمت چپ حرکت می کند، به سمت راست. این عدد واقعی است. و اجازه دهید من پاسخ نمی از نوع int، اما شناور، که همچنین در میان منو بود از گزینه های در کتابخانه C250. بیایید Y به یک شناور را تغییر دهید. بنابراین این می شود از شناور. و در حال حاضر، ما نمی خواهیم به برق وصل نوع داده int. به نظر می رسد ما باید به استفاده از درصد f برای شناور، درصد f برای شناور، و در حال حاضر آن را ذخیره کنید. و در حال حاضر، انگشتان عبور، را شناور، زیبا، شناور خطوط بریده بریده نقطه. X در حال رفتن به یک 1. Y در حال رفتن به 10 است. و، زیبا، OK علاوه بر من درست است. من برای بیشتر امیدوار بود، اما من فراموش کرده به آن ارسال. بنابراین اجازه دهید بروید و رفع این خطا منطقی است. اجازه دهید به جلو و گرفتن شرح زیر است. ما فقط می خواهیم یک کپی کوچک و چسباندن. و من قصد دارم به منفی است. و من قصد دارم به بار. و من قصد دارم برای گفتن تقسیم شده است. و من قصد دارم به انجام پیمانه، است که نه به عنوان وابسته در اینجا، تقسیم بر (f) و بار plus-- خوب، اجازه دهید این کار را دوباره. شناور را، شناور خطوط بریده بریده نقطه، و 1، 10، and-- خوب، بدون، OK. بنابراین من ادم سفیه و احمق هستم. بنابراین این بسیار معمول است در علوم کامپیوتر به اشتباه احمقانه مثل این. برای اهداف آموزشی، آنچه که من واقعا می خواستم برای انجام علم در اینجا تغییر شد به علاوه، به منهای، به بار، و به تقسیم، به عنوان شما امیدوارم در طول این تمرین متوجه. بنابراین در حال حاضر اجازه دهید دوباره کامپایل این برنامه، انجام شناور خطوط بریده بریده نقطه. و برای بار سوم، اجازه دهید دیدن اگر آن را مطابق انتظارات من. 1، 10، را وارد کنید، بله، خوب، 1.000، تقسیم بر 10.000، 0.100000 است. و معلوم است ما می توانیم کنترل چند اعداد بعد از آن رقم اعشار دارند. ما در واقع خواهد شد. ما دوباره به آن آمده است. اما در حال حاضر، در واقع، ریاضی درست است. پس، دوباره، چه غذای آماده را در اینجا؟ به نظر می رسد که در C، وجود دارد نه تنها فقط strings-- و، در واقع، واقعا وجود ندارد، چرا که ما اضافه کردن آن را با کتابخانه CS50. اما تنها نوع داده int وجود ندارد. همچنین شناور وجود دارد. و معلوم است یک دسته از داده های دیگر انواع بیش از حد، که ما قبل از اینکه طولانی استفاده کنید. معلوم است اگر شما می خواهید یک شخصیت، نه یک رشته از کاراکتر ها، شما می توانید فقط یک کاراکتر استفاده کنید. معلوم است که اگر شما می خواهید یک بولی، یک مقدار بولی، واقعی یا فقط کاذب، به لطف کتابخانه CS50، ما اضافه شده به C نوع داده بولی است. اما آن را نیز در حال حاضر بسیاری از زبان های دیگر نیز هست. و معلوم است که گاهی اوقات شما نیاز به شماره بزرگتر و سپس به طور پیش فرض آمده با نوع داده int و شناور. و، در واقع، دو یک عدد است که با استفاده از نه 32 بیت، اما 64 بیت است. و بلند بلند یک عدد است که با استفاده از نه 32، بیت اما 64 بیت، به ترتیب، برای ممیز شناور ارزش ها و اعداد صحیح، به ترتیب. بنابراین اجازه دهید در واقع در حال حاضر این را در عمل ببینید. من قصد دارم به جلو بروید اینجا و شلاق تا یک برنامه دیگر. در اینجا، من قصد دارم به جلو بروید و شامل CS50.h. و به من اجازه، شامل استاندارد IO.h. و شما متوجه چیزی بد بو که اتفاق می افتد در اینجا. آن را رنگ برنامه نویسی همه چیز در همان راه به عنوان آن را قبل از انجام. و معلوم است، که چون من داده نشده چیزی که نام فایل. من قصد دارم به پاسخ این sizeof.c، و ضربه ذخیره. و متوجه چه بسیار اتفاق می افتد من کد سفید در برابر پس زمینه سیاه و سفید که. در حال حاضر حداقل وجود دارد برخی از بنفش در آن وجود دارد. و آن را به نحو برجسته شده است. دلیلش این است که، کاملا به سادگی، من گفت IDE چه نوع از فایل آن را به آن یک نام است، و به طور خاص یک پسوند فایل. در حال حاضر، اجازه دهید به جلو و انجام این کار. من قصد دارم به جلو بروید و بسیار به سادگی نسخه قابل چاپ کردن بولی شرح زیر است درصد LU است. ما دوباره به که در یک لحظه. و پس از آن من قصد دارم به اندازه چاپ از بولی. و در حال حاضر، فقط برای نجات خودم برخی از زمان، من رفتن به انجام یک کل دسته از این در یک بار. و، به طور خاص، من قصد دارم به تغییر این به یک کاراکتر و کاراکتر. این یکی، من قصد دارم به تغییر به دو برابر و دو برابر شود. این یکی، من قصد دارم به تغییر به یک شناور و شناور. این یکی، من قصد دارم به تغییر به int و یک int. و این یکی، من قصد دارم برای تغییر به بلند بلند. و هنوز هم گرفتن یک مدت طولانی، طولانی. و پس از آن، در نهایت، من به خودم یکی بیش از حد بسیاری از، رشته. به نظر می رسد که در C وجود دارد، اپراتور خاص به نام اندازه که به معنای واقعی کلمه رفتن به، هنگام اجرا، ما به اندازه به هر یک از این متغیرها باشد. و این یک راه است، در حال حاضر، ما می توانیم اتصال به بحث هفته گذشته از داده ها و نمایندگی. اجازه بدهید به جلو و تدوین اندازه اندازه بریده بریده نقطه. و اجازه دهید ببینیم. به نظر می رسد که در C، به طور خاص در CS50 IDE، به طور خاص در سیستم عامل اوبونتو، است که یک عامل های 64 بیتی سیستم در این مورد، بولی است که به استفاده از یک بایت فضا. که اندازه چگونه اندازه گیری می شود، در بیت، اما در بایت است. به یاد بیاورید که یک بایت هشت بیت است. بنابراین یک بولی، حتی اگر شما از لحاظ فنی فقط نیاز به یک 0 یا 1، آن را کمی بی فایده چگونه ما آن را اجرا کرده ام. آن را در واقع قصد استفاده از یک طیف byte-- بنابراین همه صفرها، شاید همه آنهایی که، و یا چیزی شبیه به آن، یا فقط یک 1 در میان هشت بیت است. یک کاراکتر، در عین حال، مورد استفاده برای یک شخصیت مانند یک کاراکتر اسکی در هفته گذشته، در حال رفتن به یکی از شخصیت ها. و که با تصور ما از سازگار می سازد تا آن که بیش از 256 bits-- هیچ جای، synchs به تا با آن که هیچ بیش از 8 بیت، که به ما می دهد به عنوان بسیاری از 256 مقدار. دو برابر شده است به 8 بایت یا 64 بیت است. شناور 4 است. یک int 4 است. طولانی، طولانی 8 است. و یک رشته 8 است. اما در مورد آن نگران نباشید. ما قصد داریم به پوست پشت لایه. به نظر می رسد، رشته می طولانی تر از 8 بایت. و، در واقع، ما نوشته شده رشته در حال حاضر، سلام جهان، بیش از 8 بایت. اما ما به آمده که در یک لحظه. اما به دور از اینجا به شرح زیر است. هر کامپیوتر فقط یک محدود مقدار حافظه و فضا. شما فقط می توانید ذخیره کنید، بنابراین بسیاری از فایل ها بر روی مک و یا کامپیوتر خود را. شما فقط می توانید ذخیره برنامه های بسیاری در حافظه RAM در یک بار، لزوما، حتی با حافظه مجازی، به دلیل شما یک مقدار محدود از RAM. و فقط به picture-- اگر شما هرگز باز کرده ام تا یک لپ تاپ و یا سفارش داده حافظه اضافی برای یک کامپیوتر، شما ممکن است ندانید که در داخل کامپیوتر خود را چیزی است که به نظر می رسد یک کمی شبیه به این. بنابراین این فقط یک شرکت مشترک به نام بسیار مهم است که باعث می شود رم برای رایانه. و RAM که در آن برنامه است زندگی در حالی که آنها در حال اجرا. بنابراین در هر مک و یا کامپیوتر، هنگامی که شما دو برابر کلیک کنید یک برنامه، و آن را باز، و آن باز می شود برخی سند ورد یا چیزی شبیه به آن، آن را ذخیره به طور موقت در رم، به دلیل حافظه سریع تر است از هارد دیسک شما، و یا دیسک حالت جامد خود را. بنابراین آن را فقط در آن برنامه های رفتن به زندگی می کنند زمانی که آنها در حال اجرا، و یا زمانی که فایل در حال استفاده می شود. بنابراین شما باید چیزهایی که نگاه مثل این داخل لپ تاپ شما، یا چیزهایی کمی بزرگتر در داخل کامپیوتر خود ببینید. اما مهم این است که شما فقط یک دارند تعداد متناهی از این چیزها. و تنها مقدار محدودی از وجود دارد سخت افزار نشسته بر روی این میز سمت راست اینجا. بنابراین، قطعا، ما نمی توانیم ذخیره تعداد بی نهایت طولانی. و، در عین حال، اگر شما فکر می کنم به مدرسه، چگونه بسیاری از ارقام می شما را به حق از نقطه اعشار؟ برای آن موضوع، چگونه بسیاری از ارقام می شما به سمت چپ از یک نقطه اعشار را داشته باشد؟ واقعا، بسیاری از بی نهایت. در حال حاضر، ما انسان ها ممکن است تنها می دانم که چگونه میلیون را تلفظ کنند: و میلیارد، میلیارد، و کوادریلیون، و عدد یک با 18 صفر بتوان 2. و من هل دادن محدودیت های من understanding-- یا my-- من درک می کنم اعداد، اما من تلفظ اعداد. اما آنها می توانند بی نهایت با بزرگ دریافت بسیاری از بی نهایت رقم به سمت چپ و یا در سمت راست نقطه اعشار. اما کامپیوتر تنها باید مقدار محدود از حافظه، یک تعداد متناهی از ترانزیستور، تعداد متناهی از لامپ در داخل. پس چه اتفاقی می افتد زمانی شما از فضای اجرا شود؟ به عبارت دیگر، اگر شما فکر می کنم به هفته گذشته هنگامی که ما در مورد اعداد صحبت خود در دودویی، فرض کنید که ما باید این مقدار 8 بیتی است. و ما هفت 1 و یکی 0. و فرض کنید که ما می خواهیم برای اضافه کردن 1 به این مقدار است. این تعداد واقعا بزرگ در حال حاضر است. این 254 است، اگر من به یاد داشته باشید ریاضی از آخرین راست هفته. اما اگر من تغییر که سمت راست 0 به 1؟ تعداد کل، از البته، هشت 1 تبدیل می شود. بنابراین ما هنوز هم خوب است. و که احتمالا نشان 255، هر چند با توجه به متن آن را در واقع می تواند نشان دهنده یک عدد منفی. اما بیشتر که زمان دیگری است. این احساس می کند مانند آن را در مورد عنوان بالا به عنوان من می توانم به حساب. در حال حاضر، آن را تنها 8 بیت است. و مک من، قطعا، راه بیش از 8 بیت از حافظه است. اما آن را ندارد محدود است. بنابراین استدلال همین امر، حتی اگر ما بیشتر از این آنهایی که بر روی صفحه نمایش. اما چه اتفاقی می افتد اگر شما ذخیره سازی این تعداد، 255، و شما می خواهید برای شمارش 1 کمی بالاتر؟ شما می خواهید برای رفتن 255-256. مشکل، البته، این است که اگر شما شروع به شمارش صفر مانند هفته گذشته، شما نمی توانید به تعداد بالا به عنوان 256، چه رسد به 257، چه رسد به 258، متر زیرا آنچه افتد زمانی که شما اضافه کردن 1؟ اگر شما در مدرسه قدیمی انجام رویکرد، شما یک 1 در اینجا، و پس از آن 1 به علاوه 1 2 است، اما این واقعا یک صفر، شما حمل 1، حمل 1، حمل 1. همه این چیزها، این 1، به صفر است. و شما باد، بله، به عنوان کسی که اشاره کرد، 1 در سمت چپ. اما همه چیز شما می توانید در واقع می بینید و مناسب در حافظه فقط هشت 0 است، که بگویم این است در برخی از نقطه اگر شما، یک کامپیوتر، سعی به اندازه کافی شمارش بالا، شما رفتن به بسته بندی کردن اطراف، آن را به نظر می رسد، به صفر، یا شاید حتی منفی اعداد، که حتی پایین تر از صفر است. و ما به نوعی می توانید این را ببینید. اجازه دهید من به جلو و ارسال یک برنامه سریع واقعی در اینجا. اجازه دهید من به جلو و ارسال برنامه ای به نام سرریز. شامل CS50.H، شامل استاندارد IO.h-- آه، من واقعا از دست رفته نحو برجسته است. بنابراین اجازه دهید این ذخیره به عنوان overflow.c. و در حال حاضر از نوع int از درجه اعتبار ساقط اصلی و قبل از اینکه طولانی، ما دوباره به توضیح اینکه چرا ما به نوشتن بی اعتبار اصلی نوع int است. اما در حال حاضر، اجازه دهید فقط انجام آن، مصرف آن را برای اعطا. بیایید خودم یک int را، و مقداردهی اولیه آن را به 0. بیایید پس از آن برای نوع int می توانم zero-- در واقع، اجازه دهید انجام یک حلقه بی نهایت و ببینید چه اتفاقی می افتد. در حالی که درست است، پس اجازه دهید نسخه قابل چاپ کردن N درصد است من، بک اسلش نفر، پلاگین در N. اما، در حال حاضر، اجازه دهید انجام N می شود N به علاوه 1. بنابراین به عبارت دیگر، در هر تکرار از این حلقه بی نهایت، اجازه دهید مقدار n است، و اضافه کردن 1 به آن، و پس از آن ذخیره نتیجه تماس در N در سمت چپ. و، در واقع، ما دیده ایم نحو کمی شبیه به این، به طور خلاصه. یک ترفند سرد است به جای نوشتن تمام این، شما در واقع می توان گفت یک n به علاوه برابر با 1. و یا اگر شما واقعا می خواهید به فانتزی، شما می توانید می گویند N به علاوه به علاوه نیمه روده بزرگ. اما این دو مورد آخر فقط چه ما می خواهم پاسخ قند نحوی برای اولین چیزی. اولین چیزی که صریح و روشن تر است، کاملا خوب، کاملا درست است. اما این شایع تر است، من می گویم. بنابراین ما این برای فقط یک لحظه است. اکنون بیایید را سرریز، که برای تلفن های موبایل و نه شوم، سرریز بریده بریده نقطه. بیایید ببینید، N گرفتن بسیار بزرگ است. اما اجازه دهید فکر می کنم، چگونه بزرگ N می توانید دریافت کنید؟ N از نوع int است. ما یک لحظه پیش با اندازه دیدم به عنوان مثال که یک int چهار بایت است. ما از هفته گذشته مطمئن شوید، چهار بایت است 32 بیت، چون 8 بار 4، که 32 است. که برای رفتن به 4 میلیارد دلار. و ما تا 800،000 می باشد. این است که به را برای همیشه به شمارش عنوان بالا به عنوان من احتمالا می تواند. بنابراین من قصد دارم به جلو بروید، همانطور که شما ممکن قبل از اینکه طولانی، و Control C-- رک و پوست کنده، کنترل C، زیادی، که در آن کنترل C به طور کلی یعنی لغو نمایید. متاسفانه، به دلیل این در حال اجرا است در ابر، گاهی اوقات ابر است تف کردن چیزهای زیادی، خروجی بسیار، آن را به را در حالی که کمی برای ورود من برای رسیدن به ابر. بنابراین حتی اگر من ضربه کنترل C چند ثانیه پیش، این است که قطعا در طرف اثر یک حلقه بی نهایت. و به این ترتیب در چنین مواردی، ما رفتن به ترک آن باشد. و ما قصد داریم به اضافه کردن یکی دیگر از پنجره ترمینال در اینجا با به علاوه، که البته نمی مانند آن، از آنجا که هنوز فکر می کنند. و اجازه دهید به جلو و کمی معقول تر است. من قصد دارم به جلو بروید و انجام این تنها finitely چند بار. حال با استفاده از یک حلقه for، که که پیشتر اشاره کردم. بیا انجامش بدیم. من یکی دیگر از اعضای هیات متغیر من می شود 0 به من بده. من کمتر از، اجازه دهید بگویم، من + + 64 است. و در حال حاضر اجازه دهید من جلو رفتن و چاپ خارج N درصد من است، کاما N. و پس از آن n-- این است که هنوز رفتن به را برای همیشه. بیا انجامش بدیم. N می شود n بار 2. و یا ما می تواند فانتزی و بار برابر 2. اما اجازه دهید فقط می گویند N خود برابر، زمان 2. به عبارت دیگر، در این نسخه جدید این برنامه، من نمی خواهم برای همیشه صبر از مثل 800000 به 4 میلیارد دلار. اجازه دهید فقط این با بیش از. اجازه دهید در واقع دو برابر N در هر زمان. که، به یاد بیاورید، دو برابر شدن است مخالف داشتن، البته. و در حالی که هفته گذشته ما چیزی دوباره، و دوباره، و دوباره، فوق العاده سریع، دو برابر شدن مطمئنا ما از 1 به بزرگترین ممکن ارزش است که ما می توانیم با یک int حساب کند. بنابراین اجازه دهید دقیقا این است. و ما به این قبل از اینکه طولانی است. اما این، دوباره، درست مثل بلوک تکرار در ابتدا. و شما این قبل از اینکه طولانی استفاده کنید. این فقط به معنی تعداد از صفر تا، اما نه برابر، به 64. و در هر تکرار از این حلقه، فقط نگه داشتن افزایش من. بنابراین من + + - و این ساختار کلی در خط 7 فقط یک راه فوق العاده رایج است از تکرار برخی از خطوط از کد، برخی از تعداد بار. که خط کد. این آکولاد، به عنوان شما ممکن است از هم اکنون جمع آوری، یعنی زیر را انجام دهید. آن را در مثل خراش، زمانی که از آن است که بلوک های زرد و رنگ های دیگر این نوع از در آغوش یا در آغوش بلوک های دیگر. که چه کسانی که در اشکال مختلف است پرانتز انجام می دهند. بنابراین اگر من نحو من right-- شما می توانید نماد هویج در معنای C را ببینید که چند بار من بود تلاش برای حل این مشکل است. بنابراین اجازه دهید که یکی از خلاص شدن از شر در مجموع، و پنجره را ببندید. و ما یکی از جدید. را سرریز، نقطه اسلش سرریز، را وارد کنید، همه حق است، به نظر می رسد بد در ابتدا. اما اجازه دهید حرکت به عقب در زمان، چون من این 64 بار انجام داد. و متوجه اولین بار، N 1 است. بار دوم، N 2، پس از آن 4، پس از آن 8، پس از آن 16. و به نظر می رسد که به محض من به حدود 1 میلیارد دریافت کنید، اگر من آن را دوباره دو برابر، که باید به من 2 میلیارد است. اما معلوم است، آن را حق در آستانه. و پس از آن در واقع مملو یک int از 1 میلیارد به حدود منفی 2 میلیارد، چون یک عدد صحیح، بر خلاف ما شماره هفته گذشته فرض شده بودند، می تواند هم مثبت و منفی در واقعیت و در یک کامپیوتر است. و به طوری که حداقل یکی از آن بیت است به طور موثر سرقت رفته است. بنابراین ما واقعا تنها 31 بیت، و یا 2 میلیارد مقدار ممکن است. اما در حال حاضر، غذای آماده است که کاملا به سادگی، هر آنچه که این اعداد و هر چه ریاضی، که اتفاق بدی رخ در نهایت، چرا که در نهایت شما می خواهید به پس و پیش کردن بیت یکی بیش از حد بسیاری از. و شما به طور موثر از همه به 1 به شاید همه 0، و یا شاید فقط برخی از الگوی دیگر که آن را به وضوح، با توجه به متن، می تواند به عنوان یک عدد منفی تفسیر شده است. و پس از آن خواهد بالاترین من به نظر می رسد می توانید در این برنامه خاص را محاسبه تنها در حدود 1 میلیارد است. اما یک راه حل جزئی وجود دارد. میدونی چیه؟ اجازه دهید من از تغییر int به بلند بلند. و اجازه دهید من جلو بروید اینجا و می گویند من قصد دارم به برای تغییر این را به مدت طولانی بدون علامت. یا، بیایید ببینید، من هرگز خودم به یاد داشته باشید. اجازه دهید به جلو و سرریز. نه، این آن نیست، LLD، از شما سپاسگزارم. بنابراین گاهی اوقات صدای جرنگ جرنگ می تواند مفید باشد. من به یاد داشته باشید آنچه را که فرمت نمی تعیین برای یک مدت طولانی طولانی بود. اما، در واقع، صدای جرنگ جرنگ به من گفت. سبز نوعی از خوب است، هنوز هم معنی است که شما اشتباه. این حدس زدن که من به معنای LLD. بنابراین اجازه دهید من را آن مشاوره، طولانی عدد اعشاری طولانی، صرفه جویی است. و اجازه دهید من آن را دوباره، نقطه بریده بریده سرریز، وارد کنید. و در حال حاضر چه سرد است. اگر من حرکت به عقب در زمان، ما هنوز شروع شمارش در همان place-- 1، 2، 4، 8، 16. توجه، ما همه راه را تا به 1 میلیارد. اما پس از آن ما با خیال راحت به 2 میلیارد است. سپس ما به 4 میلیارد دریافت کنید، پس از آن 8 میلیارد، 17 میلیارد. و ما به بالاتر، و بالاتر و بالاتر است. در نهایت، این، بیش از حد، می شکند. در نهایت، با بلند بلند، که است که ارزش 64 بیتی، نه یک مقدار 32 بیتی، اگر شما تعداد بیش از حد بالا، شما را در سراسر 0 بپیچید. و در این مورد، ما اتفاق می افتد در نهایت با یک عدد منفی است. بنابراین این یک مشکل است. و معلوم است که این مشکل این است که محرمانه است. حتی اگر من به عمد آن را با این اشتباهات ناشی از، معلوم شد که آن هم از نوع دیدن همه در اطراف ما، و یا حداقل برخی از ما انجام دهد. بنابراین در لگو جنگ ستارگان، اگر شما تا به حال بازی کرده ام بازی، که معلوم است شما می توانید در اطراف شکستن تا چیز در دنیای LEGO، و جمع آوری سکه، در اصل. و اگر شما تا کنون ایفا کرده این بازی راه زمان بیش از حد، عنوان این فرد ناشناخته در اینجا انجام داد، تعداد کل سکه های که شما می توانید جمع آوری است، آن را به نظر می رسد، 4 میلیارد دلار. در حال حاضر، با آن را در واقع گرد. بنابراین LEGO تلاش برای شد نگه داشتن کاربر چیزهایی پسند. آنها آن را انجام نمی دقیقا 2 به 32 قدرت، در هفته گذشته است. اما 4 میلیارد به یک دلیل است. به نظر می رسد، بر اساس این اطلاعات، که LEGO، و این شرکت است که ساخته شده از این نرم افزار واقعی، تصمیم گرفت که حداکثر تعداد سکه کاربر می تواند جمع آوری است، در واقع، 4 میلیارد دلار، چرا که آنها در کد خود را انتخاب استفاده طولانی مدت نیست، ظاهرا، اما فقط یک عدد صحیح، یک بدون علامت عدد صحیح، تنها یک عدد صحیح مثبت، که حداکثر ارزش است که تقریبا که. خوب، در اینجا یکی از خنده دار دیگری است. بنابراین در تمدن بازی، که برخی از شما ممکن است آشنا با معلوم است که سال پیش وجود دارد یک اشکال در این بازی که به موجب آن شد اگر شما نقش گاندی در این بازی، به جای او بسیار صلح طلب، به جای فوق العاده بود، فوق العاده تهاجمی، در برخی شرایط. به طور خاص، که تمدن آثار این است که اگر شما، پخش، اتخاذ دموکراسی، خود را نمره پرخاشگری می شود decremented توسط دو، تا منهای منفی، و پس از آن منهای منهای. بنابراین شما می تفریق 2 از تکرار واقعی خود را. متاسفانه، اگر تکرار خود است در ابتدا 1، و شما تفریق 2 از آن پس از اتخاذ دموکراسی به عنوان گاندی در اینجا ممکن انجام داده اند، چرا که او بسیار passive-- بود 1 در مقیاس پرخاشگری. اما اگر او تصویب دموکراسی، پس از آن او از 1 به منفی 1 می رود. متاسفانه، آنها بودند با استفاده از اعداد بدون علامت، این بدان معناست که حتی منفی درمان اعداد را به عنوان اگر آنها مثبت بود. و معلوم است که معادل مثبت منفی 1، در برنامه های کامپیوتری معمولی، 255 است. بنابراین اگر گاندی تصویب ، و در نتیجه دموکراسی نمره پرخاشگری او کاهش یافته است، آن را در واقع رول در اطراف به 255 و او را بیشتر می کند شخصیت تهاجمی در بازی. بنابراین شما می توانید در این Google است. و آن بود، در واقع، یک اشکال برنامه نویسی تصادفی، اما این کاملا وارد افسانه هاو روایات قومی از زمان. که همه سرگرم کننده و زیبا است. بیشتر ترسناک است که واقعی دستگاه های دنیای واقعی، و بازی نیست، باید این اشکالات است. در واقع، فقط یک سال پیش یک مقاله آمد در مورد بوئینگ 787. و مقاله در ابتدا نگاه می خواند محرمانه است. اما گفته این، نرم افزار آسیب پذیری در بوئینگ جدید 787 جت است احتمال ایجاد خلبانان از دست دادن کنترل این هواپیما، احتمالا در اواسط پرواز، مقامات FAA خطوط هوایی هشدار داد به تازگی. این تعیین شد که یک مدل 787 هواپیما است که طراحی شده است به طور مداوم برای 248 روز می توانید تمام جریان متناوب از دست دادن، AC، برق با توجه به ژنراتور واحد کنترل، GCUs، به طور همزمان رفتن به شکست حالت امن. این نوع از دست دادن من است. اما این یادداشت آمده است، خوب، در حال حاضر من که، شرایط توسط نرم افزار باعث شد مقابله با داخلی به کنترل ژنراتور واحد است که پس از سرریز خواهد شد 248 روز از قدرت مداوم. ما در حال صدور این متوجه برای جلوگیری از ریزش از همه AC الکتریکی قدرت، که می تواند منجر در از دست دادن کنترل هواپیما. بنابراین، به معنای واقعی کلمه، برخی از عدد صحیح وجود دارد، و یا برخی از نوع داده معادل، در نرم افزار مورد استفاده در یک هواپیما واقعی که اگر شما هواپیما خود را نگه دارید به اندازه کافی بلند است، که ظاهرا می تواند مورد اگر شما فقط در حال اجرا آنها به طور مداوم و هرگز جدا هواپیما خود را، به نظر می رسد، و یا اجازه دادن به باتری آن می میرند، در نهایت شمارش خواهد شد، و تا، و بالا، و، و، و است. و با طبیعت، مقدار محدود از حافظه سرریز خواهد شد، آلیاژها برگشت به صفر و یا برخی از ارزش منفی، یک عارضه جانبی از که است که واقعیت وحشتناکی واقعی که این هواپیما ممکن است نیاز به بوت شود، به طور موثر، و یا ممکن است سقوط، بدتر، به عنوان آن مگس. بنابراین این نوع از مسائل هنوز با ما هستند، even-- این یک مقاله 2015 بود، همه ترسناک تر هنگامی که شما انجام لزوما درک، درک، و یا پیش بینی این نوع از خطا است. پس از آن معلوم یکی دیگر وجود دارد چیز بدی در مورد نمایش اطلاعات. به نظر می رسد که حتی شناور نوع ناقص، به دلیل شناور، بیش از حد، من پیشنهاد می 32 بیت، یا شاید 64 در صورت استفاده از دو برابر شود. اما هنوز محدود است. و نکته این است که اگر شما می توانید قرار دادن یک تعداد نامتناهی از اعداد بعد از نقطه اعشار دارند، هیچ راه شما وجود دارد همه ممکن می تواند نشان دهنده اعداد است که ما آموزش داده شد در کلاس مدرسه می تواند در جهان وجود دارد. یک کامپیوتر، در اصل، به را انتخاب کنید یک زیر مجموعه از آن اعداد برای نشان دقت. در حال حاضر، کامپیوتر می تواند دور شاید کمی، و می تواند شما را به کمتر از فروشگاه اجازه می دهد هر تعداد که شما احتمالا ممکن است بخواهید. اما فقط به طور مستقیم، اگر شما یک تعداد متناهی از بیت، شما تنها می توانید آنها را پس و پیش کردن در بسیاری از راه های محدود است. بنابراین شما احتمالا نمی تواند استفاده از تعداد محدود از جایگشت از بیت، الگوهای از صفر و آنهایی، برای نشان دادن بی نهایت تعداد اعداد، که نشان می دهد که کامپیوتر ممکن است خیلی خوب دروغ گفتن به ما گاهی. در واقع، اجازه دهید این کار. به من اجازه رفتن به IDE CS50. اجازه دهید من به جلو و ایجاد یک برنامه کوچک است نام عدم دقت، نشان می دهد که کامپیوتر، در واقع، مبهم است. و اجازه دهید من به جلو و با شروع برخی از این کد از قبل، و در حال حاضر فقط زیر را انجام دهید. اجازه دهید من به جلو و انجام تابع () printf، درصد F، بک اسلش نفر، 1 تقسیم بر 10. به عبارت دیگر، اجازه دهید در عمیق تر شیرجه رفتن به 01/10، مانند 1 و تقسیم بر 10. مطمئنا، یک کامپیوتر می تواند 1/10 را نشان دهد. بنابراین اجازه دهید پیش بروید و عدم دقت. بیایید ببینید. فرمت مشخص نوع دو برابر شود. اما دلیل است نوع int هستند. چه خبر است؟ اوه، جالب، پس از آن یک درس را از قبل آموخته است. من ادعا، هی، نشان می دهد کامپیوتر من یک شناور با درصد F. اما من به آن 2 نوع داده int. پس از آن معلوم، من می توانم تعمیر این در از دو راه. من فقط می تواند یکی را به 1.0 نوبه خود، و 10 به 10.0، که، در واقع، اثر تبدیل آنها را به floats-- هنوز هم امیدوارم به همان تعداد. و یا آن را تبدیل کردن چیزی وجود دارد ما دوباره قبل از اینکه طولانی را ببینید. شما می توانید از اعداد، رای دادند. شما می توانید، با استفاده از این پرانتز بیان، شما می توانید می گویند، هی، کامپیوتر، این 10، که من می دانم از نوع int است. اما با آن، لطفا، به عنوان اینکه یک شناور است. اما این احساس بی ارزش پیچیده است. برای اهداف ما امروز، اجازه دهید فقط به معنای واقعی کلمه آنها مقادیر ممیز شناور با نقطه اعشار، مثل این. اجازه دهید من به جلو و مجدد، را عدم دقت، خوب، بریده بریده نقطه عدم دقت، را وارد کنید. خوب، ما به دنبال خوب است. 1 تقسیم بر 10، با توجه به من مک در اینجا، است، در واقع، 0.100000. حال حاضر، من در مدرسه وجود دارد آموزش داده شد باید یک تعداد نامحدود از 0 باشد. بنابراین اجازه دهید حداقل سعی کنید برای دیدن برخی از کسانی که. به نظر می رسد که printf کمی است هنوز هم خیال باف از ما شده است با استفاده. به نظر می رسد شما لازم نیست که برای مشخص فقط درصد F، و یا فقط درصد من. شما در واقع می توانید مشخص کنید برخی از گزینه های کنترل در اینجا. به طور خاص، من قصد دارم می گویند، با سلام، تابع () printf، در واقع من 10 رقم اعشار را نشان می دهد. بنابراین به نظر می رسد کمی عجیب و غریب. اما می توانید بگویید درصد، نقطه، اعداد که چگونه بسیاری از شما می خواهید پس از به دیدن نقطه اعشار، و پس از آن F برای تخت، فقط به خاطر این که چه اسناد و مدارک می گوید. اجازه بدهید به جلو و صرفه جویی که. و متوجه بیش از حد، من گرفتن خسته از تایپ مجدد است. بنابراین من فقط تنظیم و پایین بر روی کلید من فلش در اینجا. و اگر من ضربه بالا، شما می توانید تمام دستورات را ببینید که من ساخته شده، نادرست و یا ساخته شده است. و من قصد دارم به جلو بروید در حال حاضر و در واقع استفاده از آن، ظاهرا. را عدم دقت، نقطه بریده بریده imprecision-- تا آنچه که من در آموزش داده شد مدرسه چک. حتی اگر من آن را چاپ 10 اعشاری این محل ها، در واقع، 0.10000 است. اما میدونی چیه؟ بیایید یک کمی حریص. بیایید می گویند، مانند، من 55 را نشان می دهد بعد از اعشار اشاره می کند. بیایید واقعا این بازی را برنامه برای چرخش. اجازه بدهید من آن را بازسازی با عدم دقت، نقطه اسلش، عدم دقت. و در اینجا ما بروید. دوران کودکی خود را یک دروغ بود. ظاهرا، 1 تقسیم بر 10 است که در واقع 0.100000000000000005551115123-- چه خبره؟ خب، معلوم است، اگر شما نوع نگاه دور به اندازه کافی در زمینه نمایندگی از این تعداد، آن را در واقع دقیقا 1/10، یا 0.1 و یک تعداد نامحدود از صفر. در حال حاضر، این است که چرا؟ خوب، حتی اگر این ساده است تعداد را به ما انسانها، 1 تقسیم بر 10، آن را هنوز هم یکی از بی نهایت بسیاری از اعداد است که ما می تواند فکر می کنم تا. اما یک کامپیوتر تنها می تواند نشان دهنده finitely بسیاری از اعداد است. و به این ترتیب، به طور موثر، چه کامپیوتر به ما نشان نزدیک ترین آن است تقریب به تعداد ما می خواهیم به این باور است 1/10، یا واقعا 0.10000 تا بی نهایت. در عوض، هر چند، این است به عنوان نزدیک که آن را می توانید دریافت کنید. و، در واقع، اگر شما نگاه در زیر هود، به عنوان ما در اینجا با نگاه 55 رقم بعد از اعشار، ما در واقع این واقعیت را ببینید. در حال حاضر به عنوان یک کنار، اگر شما تا کنون دیده movie-- بسیاری از شما احتمالا haven't-- اما سوپرمن 3 چند سال پیش، ریچارد پریور اساسا این اهرمی واقعیت در شرکت خود به سرقت مقدار زیادی از کسری و کسری از سکه، زیرا company-- عنوان به خاطر دارم، آن را به یک while-- اصل است دور انداختن هر چیزی را که مناسب نیست به مفهوم سنت. اما اگر شما اضافه کردن تمام این کوچک، کوچک، اعداد کوچک دوباره، و دوباره، و دوباره، شما می توانید، به عنوان در پرونده او، یک مقدار خوبی از پول است. که همان ایده کردن با پاره پاره شد اخیر، اما هنوز هم در حال حاضر قدیمی تر فیلم، به نام فضای اداری، که در آن بچه ها در این فیلم، در انجام همین کار، آن را پیچ به طور کامل، به پایان رسید تا با راه بیش از حد پول در حساب بانکی خود را. این همه بسیار مشکوک بود. اما در پایان روز، عدم دقت در اطراف ما است. و این، بیش از حد، می تواند وحشتناکی مورد. معلوم می شود که سوپرمن 3 و فضای اداری به کنار، وجود دارد می تواند برخی از بسیار واقعی انشعابات جهان از واقعیت های مبهم نمایندگی از داده که حتی ما به انسان این روز لزوما درک و همچنین ما باید، و یا به یاد داشته باشید به عنوان اغلب به عنوان ما باید. و، در واقع، کلیپ زیر است از نگاه برخی از جهان بسیار واقعی پیامدهای چه می شود اگر شما اتفاق می افتد از عدم دقت درک نیست که می تواند در تعداد نمایندگی اتفاق می افتد. [پخش ویدئو] -Computers، ما همه آمده ام تا قبول مشکلات اغلب نا امید که با them-- اشکالات، ویروس ها، و اشکالات نرم افزار، برای قیمت های کوچک به پرداخت برای راحتی. اما در تکنولوژی بالا و با سرعت بالا برنامه های فضایی نظامی و برنامه های کاربردی، کوچکترین مشکل می توان به فاجعه بزرگ. در 1996 ژوئن 4، دانشمندان آماده برای راه اندازی یک بدون سرنشین موشک Ariane 5 موشک. این حامل علمی ماهواره به ایجاد دقیقا چگونه تعامل میدان مغناطیسی زمین با بادهای خورشیدی. راکت برای ساخته شد آژانس فضایی اروپا، و از امکانات خود را برداشته در ساحل گویان فرانسه. -At حدود 37 ثانیه به پرواز، آنها برای اولین بار چیزی متوجه شد که اشتباه است. نازل در آهنی شد راه آنها واقعا باید نیست. حدود 40 ثانیه به پرواز، به وضوح، خودرو دچار مشکل شد. و این زمانی که آنها ساخته شده تصمیم به نابود کردن آن. افسر ایمنی محدوده، با جرات فوق العاده، دکمه، منفجر موشک، قبل از آن می تواند تبدیل شدن به یک خطر به امنیت عمومی. -این قبل از ازدواج بود سفر از موشک Ariane 5. و تخریب آن را گرفت جای به دلیل نقص جاسازی شده در نرم افزار موشک است. بانک مشکل در آریان بود بود که تعدادی وجود دارد که مورد نیاز 64 بیت به بیان است. و آنها می خواستند برای تبدیل آن را به تعداد 16 بیتی. گمان می کردند که تعداد هرگز رفتن به بسیار بزرگ، که بسیاری از کسانی رقم در تعداد 64 بیتی صفر بود. آنها اشتباه می کردند. بانک ناتوانی یک برنامه نرم افزار برای پذیرش نوع تعداد تولید شده توسط یکی دیگر از در ریشه شکست بود. توسعه نرم افزار تبدیل شده بود بخش بسیار پر هزینه از تکنولوژی جدید است. موشک آریان بسیار شده است موفق است، بنابراین بسیاری از نرم افزار ایجاد شده برای آن نیز بود مورد استفاده در موشک Ariane 5. بانک مشکل اساسی این بود که آریان 5 سریع تر بود، شتاب سریع تر است. و نرم افزار بود حساب برای که. بانک نابودی موشک یک فاجعه مالی بزرگ بود، همه به دلیل خطای نرم افزار دقیقه. اما این اولین نیست زمان مشکلات تبدیل داده ها فن آوری موشکی مدرن به ستوه آورده بود. -در سال 1991، با شروع از جنگ اول خلیج فارس، پاتریوت موشک تجربه یک نوع مشابه مشکل تبدیل شماره. و به عنوان یک نتیجه، 28 نفر، 28 سربازان آمریکایی، کشته و حدود شد 100 تن دیگر زخمی شدند زمانی که Patriot، که قرار بود برای محافظت در برابر scuds ورودی، موفق به آتش موشک. هنگامی عراق به کویت حمله و امریکا راه اندازی طوفان صحرا در اوایل سال 1991، پاتریوت موشک مستقر شدند برای محافظت از عربستان سعودی و اسرائیل از حملات موشکی اسکاد عراق است. پاتریوت یک رسانه-محدوده ایالات متحده است سطح به هوا سیستم، تولید توسط شرکت ریتون. بانک اندازه از رهگیر پاتریوت خود را در مورد حدود 20 فوت طول دارد. و وزن آن حدود 2000 پوند است. و آن را حمل یک کلاهک در حدود، من فکر می کنم حدود 150 پوند است. و کلاهک است یک ماده منفجره بالا، که است قطعات در اطراف آن. محفظه از کلاهک است طراحی شده برای شبیه چارپاره عمل می کنند. بانک موشک انجام چهار در ظرف، و توسط یک تریلر نیمه منتقل می شود. -روز سیستم پاتریوت ضد موشکی تماس حداقل به 20 سال در حال حاضر. این روش در اصل طراحی شده بود به عنوان یک موشک دفاع هوایی به شلیک کردن هواپیما دشمن. در جنگ اول خلیج فارس، وقتی که جنگ آمد همراه، ارتش خواست به استفاده از آن را به شلیک کردن scuds، نه هواپیما. نیروی هوایی عراق بود نه آنقدر از یک مشکل. اما ارتش در مورد scuds نگران بود. و به طوری که آنها به تلاش ارتقاء پاتریوت. -Intercepting دشمن موشک سفر در ماخ 5 رفتن به چالش کشیدن به اندازه کافی. اما زمانی که پاتریوت به خدمت عجله شد، ارتش بود از آگاه نیست اصلاح عراق ساخته شده است که scuds خود را تقریبا غیر ممکن به ضربه. چه اتفاق افتاده است scuds است که در سال های آینده ناپایدار بودند. آنها لرزش شد. دلیل این کار این بود عراقی ها، به منظور برای به دست آوردن 600 کیلومتر از یک فاصله 300 کیلومتری موشک دامنه، وزن و جو در زمان از کلاهک جلو. آنها کلاهک سبک تر ساخته شده است. بنابراین در حال حاضر پاتریوت است تلاش برای به حرکت تند و سریع در آمده است. و بسیاری از زمان، اکثریت قریب به اتفاق از زمان، آن را فقط توسط اسکاد پرواز. هنگامی که اپراتور سیستم پاتریوت متوجه پاتریوت از دست رفته هدف خود را، آنها کلاهک پاتریوت منفجر برای جلوگیری از تلفات احتمالی اگر به سقوط به زمین اجازه داده شد. یعنی چیزی بود که بسیاری از مردم را دیدم، آن گوی های آتشین بزرگ در آسمان، و به عنوان اشتباه ره گیری از کلاهک اسکاد. گرچه در شب آسمان، میهن پرستان ظاهر شد به موفقیت از بین بردن Scuds، در ظهران، وجود دارد می تواند بدون اشتباه در مورد عملکرد آن است. وجود دارد، سیستم رادار پاتریوت در پیگیری از دست داده یک اسکاد ورودی، و هرگز به دلیل راه اندازی به یک نقص نرم افزار. این اسرائیلی که برای اولین بار کشف شد که دیگر سیستم بود، بیشتر اختلاف زمان شد، با توجه به یک ساعت تعبیه شده در کامپیوتر سیستم است. -درباره دو هفته قبل از فاجعه در ظهران، اسرائیل گزارش وزارت دفاع که سیستم از دست دادن زمان شد. پس از حدود هشت ساعت یا در حال اجرا، آنها متوجه شده است که سیستم تبدیل شدن به طرز محسوسی کمتر دقیق است. وزارت دفاع در پاسخ به گفتن تمام پاتریوت سیستم به ترک برای مدت زمان طولانی. آنها گفتند هرگز چه مدت زمان طولانی was-- هشت ساعت، 10 ساعت، 1000 ساعت است. هیچ کس نمی دانست. بانک باتری پاتریوت مستقر در پادگان در ظهران و ناقص داخلی آن ساعت در بیش از 100 ساعت بوده است در شب فوریه 25. آن را هم ردیابی با دقت در حدود یک دهم ثانیه. در حال حاضر، دهم ثانیه تعداد جالب است، زیرا نمی تواند بیان شود در باینری دقیقا، که معنی آن را نمی توان دقیقا بیان شود در هر کامپیوتر دیجیتال مدرن. این سخت است به این باور. اما استفاده از این به عنوان مثال. بیایید شماره یک سوم. یک سوم نمی تواند بیان شده در اعشاری دقیقا. یک سوم 0.333 است در جریان است برای بی نهایت. هیچ راهی برای انجام این کار با وجود دقت مطلق در دهدهی. که دقیقا همان نوع از مشکل است که در پاتریوت اتفاق افتاده است. دیگر سیستم زد، بدتر خطای زمان تبدیل شد. پس از 100 ساعت از عمل، خطا در زمان فقط حدود یک سوم شد از یک ثانیه. اما از نظر هدف قرار دادن یک موشک سفر در ماخ 5، آن را در یک ردیابی منجر خطا از بیش از 600 متر است. این امر می تواند یک خطای مهلک برای سربازان در چه اتفاق افتاده است راه اندازی اسکاد بود تشخیص داده شده توسط ماهواره های هشدار اولیه و آنها می دانستند که اسکاد بود آینده در جهت خود. آنها نمی دانستند که در آن بود در آینده. آن را در حال حاضر تا رادار بود بخشی از سیستم پاتریوت دفاع از ظهران به کردهاید و حفظ آهنگ از موشک دشمن وارده. بانک رادار بسیار باهوش بود. در واقع عملا پیگیری موقعیت اسکاد، و پس از آن پیش بینی که در آن احتمالا خواهد بود در کنار هم رادار ارسال یک پالس است. که یک دروازه وسیعی نامیده می شد. سپس،، یک بار پاتریوت تصمیم می گیرد زمان کافی گذشت برای رفتن به عقب و بررسی بعدی مکان برای این شی تشخیص داده، از آن می رود. بنابراین، هنگامی که آن را رفت و برگشت به اشتباه محل، آن را پس از آن هیچ شی را می بیند. و آن تصمیم می گیرد که هیچ وجود دارد شیء، آن را تشخیص نادرست بود، و قطره مسیر. بانک اسکاد ورودی ناپدید شد از صفحه رادار. و ثانیه بعد، آن را به سربازخانه ناودان. اسکاد کشته شدن 28 و آخرین نفر بود یکی در طول جنگ اول خلیج فارس شلیک کردند. متأسفانه، نرم افزار به روز در ظهران وارد روز بعد. نقص نرم افزار به حال شده ثابت، بسته شدن یک فصل در مشکل تاریخ موشک. [پخش ویدئو] DAVID J. مالان: پس این است که همه به می گویند که این مسائل از سرریز و عدم دقت تمام بیش از حد واقعی است. پس چگونه ما به اینجا رسیدیم؟ ما فقط با صحبت کردن در مورد تابع () printf آغاز شد. باز هم، این تابع است که چیزی چاپ به روی صفحه نمایش، و ما پس از آن معرفی چند توابع دیگر از به اصطلاح کتابخانه CS50 است. و ما را به ادامه این در زمان مقتضی را ببینید. و ما، به ویژه، استفاده از رشته GET، و هوشمند، و در حال حاضر نیز شناور دریافت کنید، و در عین حال دیگران هنوز هم خواهد ما روبرو می شوند و استفاده از خودمان قبل از اینکه طولانی. اما در مواردی، باید ما در حال حاضر دیده می شود نیاز برای ذخیره آنچه آن دسته از توابع دست تماس؟ آنها به ما یک رشته دست، و یا یک int، و یا یک شناور. و گاهی اوقات ما نیاز به قرار دادن که رشته، یا از نوع int و یا شناور، جایی. و برای ذخیره آن چیزهایی، به یاد تنها مانند در ابتدا، ما باید متغیر. اما بر خلاف در ابتدا، در C ما انواع واقعی داده variables-- انواع، generally-- بیشتر در میان آنها، یک رشته، یک int، یک شناور، و این دیگران هنوز هم. و تا زمانی که ما متغیرهای اعلام در C، ما باید به اعلام انواع داده های ما. این چیزی نیست خواهیم باید انجام دهید بعد در ترم به عنوان ما به زبان های دیگر انتقال. اما در حال حاضر، ما نیازی به پیشینی در پیش است، توضیح به کامپیوتر چه نوع متغیر ما می خواهیم آن را به ما بدهد. در حال حاضر، در عین حال، به چاپ این نوع از انواع داده ها، ما باید به تابع () printf چه انتظار می رود. و ما دیدیم که درصد برای رشته ها، و درصد من برای اعداد صحیح، و چند نفر دیگر در حال حاضر. و کسانی که به سادگی مورد نیاز برای ارائه بصری از این اطلاعات. و هر یک از این در واقع می تواند پارامتری و یا بهینه سازی در برخی از راه، اگر شما می خواهید برای پیشبرد کنترل نوع خروجی که شما را دریافت کنید. و، در واقع، معلوم است که نه تنها است بک اسلش نفر برای یک خط جدید وجود دارد. چیز دیگری به نام بک اسلش وجود دارد R برای یک بازگشت نورد، که بیشتر شبیه به یک است ماشین تحریر مدرسه قدیمی، و همچنین ویندوز برای سال های بسیاری استفاده می شود. تی بک اسلش برای زبانه وجود دارد. معلوم است، که اگر شما می خواهید نقل قول در داخل یک رشته، به یاد بیاورید که ما استفاده کرده ایم دو نقل قول نقل قول در سمت چپ و سمت راست به پایان می رسد از رشته ما تا کنون. که به نظر می رسد به اشتباه است. اگر شما می خواهید برای قرار دادن یک نقل قول در وسط یک string-- و، در واقع، گیج کننده است برای دیدن. و بنابراین شما مجبور به فرار، پس به صحبت می کنند، دو نقل قول با چیزی مانند، به معنای واقعی کلمه، بک اسلش نقل قول. و برخی دیگر از هنوز هم وجود دارد. و خواهیم دید که بیشتر از کسانی که در استفاده واقعی قبل از اینکه طولانی. بنابراین اجازه دهید از انتقال داده ها، و نمایندگی، و عملگرهای محاسباتی، همه که به ما برخی از ساختمان بلوک با آن به بازی. اما در حال حاضر اجازه دهید در واقع به ما بقیه از واژگان که ما در حال حاضر هفته گذشته با خراش با در نظر گرفتن نگاهی به برخی دیگر سازه در C-- نه همه آنها. اما ایده های ما برای دیدن واقعا فقط به ترجمه از تاکید یک زبان، خراش، به دیگری، C. و در طول زمان، ما را انتخاب کنید تا ابزار بیشتر برای ابزار ما، پس به صحبت، نحوی. و، در واقع، شما خواهید دید که ایده اکنون نه از هفته گذشته آشنا. بنابراین اجازه دهید این کار را. اجازه دهید به جلو و شلاق تا یک برنامه که در واقع با استفاده از برخی عبارات، عبارت بولی باشد. اجازه دهید من جلو بروید اینجا و ایجاد یک فایل جدید. من این condition.c تماس بگیرید. اجازه دهید من به جلو و شامل کتابخانه CS50. و اجازه دهید من به جلو و شامل استاندارد IO.h برای توابع ما، و تابع () printf، و به ترتیب است. اجازه دهید من خودم که تکیهکلامهای دادن اعتبار اصلی اعضای هیات، که توضیح خواهیم دوباره به در آینده است. حالا اجازه دهید من به جلو بروید و به خودم یک int طریق INT دریافت. سپس اجازه دهید من به جلو و انجام این کار. من می خواهم بگویم اگر من less-- اجازه دهید تمایز بین مثبت، منفی، یا ارزش صفر است. بنابراین اگر من کمتر از صفر است، به من اجازه فقط باید این برنامه به سادگی می گویند، منفی، بک اسلش نفر، دیگری اگر من بزرگتر از صفر است. در حال حاضر من، البته، رفتن به می گویند تابع () printf مثبت، بک اسلش نفر. و پس از آن دیگری اگر-- من می توانم این کار را. اگر من برابر با 0 من می تواند انجام. اما من می خواهم گیری در حداقل یک اشتباه در حال حاضر. به یاد بیاورید که علامت مساوی است برابر نیست، به عنوان ما انسان ها آن را می دانم. اما عملگر انتساب است. و ما نمی خواهیم به 0 در راست و آن را در من در سمت چپ. بنابراین برای جلوگیری از این سردرگمی، و یا شاید سوء استفاده از علامت مساوی، انسان تصمیم گرفت چند سال پیش که در بسیاری از زبان های برنامه نویسی زمانی که می خواهید برای برابری بررسی بین چپ و راست، شما در واقع استفاده برابر است با برابر. بنابراین شما ضربه علامت مساوی دو بار. هنگامی که شما می خواهید به اختصاص از راست به سمت چپ، شما یک علامت مساوی استفاده کنید. بنابراین ما می تواند this-- دیگری را انجام اگر من برابر با برابر صفر است. من پس از آن می تواند برود و باز آکولاد من، و می گویند، تابع () printf 0، بک اسلش نفر، انجام می شود. اما به یاد داشته باشید که چگونه این چنگال در جاده ها می تواند کار کند. و، واقعا، فقط در مورد منطق فکر می کنم. من یک عدد است. این یک عدد صحیح است، به طور خاص. و این بدان معناست که آن را به کمتر از 0، یا بیشتر از 0، 0 یا. بنابراین نوع از این وجود دارد مورد پیش فرض ضمنی. و بنابراین ما می تواند، درست مثل ابتدا، توزیع با دیگری اگر، و فقط می گویند دیگری. منطقی، اگر شما در برنامه نویس می دانم که تنها وجود دارد سه سطل به که سناریو می توانید اولین fall--، دوم، و یا سوم در این case-- نمی زحمت اضافه کردن دقت بیشتر و منطق اضافی وجود دارد. فقط جلو با رفتن مورد به طور پیش فرض در اینجا از دیگری. در حال حاضر، اجازه دهید به جلو پس از ذخیره این کار، مطمئن شرایط نقطه بریده بریده conditions-- یک رابط کاربری عالی، چون من باعث نمی کاربران، همانطور که قبلا ذکر شده است. اما این خوب است. ما آن را ساده نگه دارید. بیایید سعی کنید تعداد 42. و این مثبت است. بیایید سعی کنید تعداد منفی 42، منفی است. بیایید سعی کنید مقدار 0. و، در واقع، کار می کند. در حال حاضر، شما با مشکلات قبل از دیدن طولانی، همه چیز آزمایش، سه بار، احتمالا کافی نیست. شما احتمالا می خواهید به آزمون برخی اعداد بزرگتر، برخی کوچکتر اعداد، برخی از موارد گوشه ای، به عنوان ما به آنها توصیف می کنند. اما در حال حاضر، این است که برنامه بسیار ساده است. و من کاملا مطمئنم که، منطقی، که آن را به سه مورد می افتد. و، در واقع، حتی اگر ما فقط با تمرکز بر جنبه های منفی بالقوه از عدم دقت و سرریز، در واقعیت که در آن بسیاری از مشکلات CS50 را، ما می رویم نیست که نگران باشید در مورد، تمام وقت، این مسائل از سرریز و عدم دقت، دلیل، در واقع، در C، آن را در واقع نه همه که آسان برای جلوگیری از آن چیز است. اگر شما می خواهید به تعداد بالا بزرگتر، و بزرگتر، و بزرگتر، که معلوم است تکنیک های شما وجود دارد می توانید استفاده کنید، اغلب شامل همه چیز به نام کتابخانه ها، مجموعه ای از کد که مردم دیگر نوشت که شما می توانید استفاده کنید، و زبان های دیگر مانند جاوا و دیگران، در واقع آن را بسیار آسان تر به دفعات مشاهده شده و حتی بالاتر. پس از آن واقعا است برخی از این خطرات یک تابع از زبان استفاده می کنید. و در هفته های آینده، ما ببینید که چگونه خطرناک C واقعا می تواند اگر شما آن را استفاده نمی کند. اما از وجود دارد، و با پایتون و جاوا اسکریپت، خواهد ما در لایه پوشش حمایت های اضافی، و اجرا کمتر از کسانی خطرات. بنابراین اجازه دهید کمی بیشتر منطق جالب در برنامه های ما. بنابراین اجازه دهید من به جلو و ایجاد برنامه ای به نام منطقی فقط بنابراین من می تواند با برخی از بازی منطق، logical.c. من فقط کپی کنید و برخی کد از پیش از آن پس من به عقب بر گردیم این نقطه شروع خوب است. اجازه دهید من این زمان انجام C. کاراکتر من رفتن به آن نام C را فقط به خاطر اینکه متعارف، یک شخصیت از کاربر. و اجازه دهید مانند وانمود من اجرای بخشی که برنامه کنترل از راه دور، به حذف برنامه قبل از آن از شما خواسته کاربر برای حذف یک فایل. چگونه می توانیم این کار؟ من می خواهم بگویم، اگر C برابر برابر، نقل قول را تمام کردن، Y، سپس من قصد دارم به فرض که کاربر بله انتخاب کرده است. من فقط رفتن به چاپ بله. اگر آن را در واقع نوشتن برنامه حذف، ما می تواند فایل حذف کنید با خطوط بیشتری از کد. اما ما آن را ساده نگه دارید. دیگری اگر c برابر برابر n-- و در حال حاضر در اینجا، من قصد دارم برای گفتن، کاربر باید به معنای هیچ. و پس از آن دیگر، شما می دانید چه؟ من نمی دانم چه چیز دیگری کاربر در حال رفتن به تایپ کنید. بنابراین من فقط رفتن به می گویند که که خطا است، هر او در واقع تایپ. بنابراین آنچه که در اینجا؟ تفاوت اساسی وجود دارد در مقابل آنچه که در گذشته انجام داده ام. به نقل از دو، به نقل از دو، دو نقل قول ها، و در عین حال، به نقل از واحد، نقل قول تکی. به نظر می رسد در C، که زمانی که شما می خواهید به ارسال نامه رشته، شما استفاده از دو علامت، همانطور که ما را شده است با استفاده از این مدت با printf است. اما اگر شما می خواهید برای مقابله با فقط یک تنها شخصیت، یک کاراکتر به اصطلاح، سپس شما می نقل قول تکی استفاده کنید. کسانی از شما که برنامه ریزی شده ام قبل از آن، شما ممکن است حال در این مورد نگران تمایز در زبان خاص. در C، مهم. و تا زمانی که من یک کاراکتر و من می خواهم برای مقایسه که کاراکتر با استفاده از برابر برابر است با برخی از نامه مانند y یا n، من، در واقع، نیاز به نقل قول تکی. در حال حاضر، اجازه دهید به جلو و انجام این کار. اجازه دهید به جلو و ایجاد نقطه منطقی بریده بریده منطقی است. و در حال حاضر من از درخواست. بنابراین، احتمالا، یک تجربه کاربری بهتر در واقع به من بگویید چه به اینجا. اما من قصد دارم به فقط کورکورانه می گویند Y برای بله، خوب، خوب است. بیایید دوباره آن را اجرا، N برای هیچ، خوب است. فرض کنید مانند افراد خاصی من می دانم، کلاه من کلید قفل بر روی تمام است اغلب. بنابراین من سرمایه Y، را وارد کنید، خطا. OK، این دقیقا همان چیزی است که من منتظر. در واقع، کامپیوتر در حال انجام است به معنای واقعی کلمه چه من آن را گفته به انجام برای بررسی حروف کوچک و کوچک Y N. این مانند خوب احساس نمی تجربه کاربر، هر چند. اجازه دهید من برای درخواست قبل هم حروف کوچک و یا مورد بالا. پس از آن معلوم، شما ممکن است بخواهید چیزی شبیه این بگوید در ابتدا، مانند به معنای واقعی کلمه و یا C برابر برابر سرمایه تک Y به نقل از. معلوم است، C ندارد این کلمه کلیدی تحت اللفظی و یا. اما آن را دو میله های عمودی. شما باید برای نگه داشتن کلید Shift معمولا، اگر شما با استفاده از یک صفحه کلید، و ضربه زدن به نوار عمودی کلید بالا کلید بازگشت خود را. اما این نوار عمودی نوار عمودی یا به معنی. اگر، در مقابل، ما می خواستیم می گویند و مانند در ابتدا، ما می تواند علامت آمپرسند است. که باعث می شود هیچ حس منطقی در اینجا، چرا که یک انسان می تواند احتمالا نمی تایپ هر دو Y و کوچک Y و سرمایه Y به عنوان شخصیت است. بنابراین یا چیزی است که ما قصد در اینجا. بنابراین اگر من این کار را در هر دو مکان، یا ج برابر برابر سرمایه N، در حال حاضر دوباره، را منطقی، دوباره منطقی است. در حال حاضر، من می توانم Y را تایپ کنید. و من می توانم آن را دوباره با انجام سرمایه Y، یا N. سرمایه و من می توانم در دیگری را اضافه کنید ترکیب هنوز هم. بنابراین این یک منطقی است برنامه تا آنجا که در حال حاضر من منطقی برای چک کردن این مقدار و یا این مقدار است. و من لازم نیست که، لزوما، آمد تا با دو IFS بیشتر و یا دیگری IFS. من در واقع می توانید ترکیب برخی از مربوط منطق با هم در این راه. بنابراین این بهتر خواهد بود طراحی به سادگی گفت: اگر C برابر با حروف کوچک Y، چاپ بله، دیگری اگر c برابر سرمایه Y، چاپ بله، دیگری اگر c برابر lower-- به عبارت دیگر، شما لازم نیست که به بیشتر و بیشتر شاخه. شما می توانید برخی از معادل ترکیب شاخه منطقی، به عنوان در این راه. بنابراین اجازه دهید نگاهی به فقط یک مواد تشکیل دهنده نهایی، یک ساختار نهایی، که C اجازه می دهد تا. و ما در آمده آینده به دیگران هنوز هم. و سپس ما را با نگاه نتیجه در نه صحت code-- گرفتن کد به work-- اما طراحی کد و کاشت آن دانه در اوایل. بنابراین اجازه دهید من به جلو و باز کردن یک فایل جدید در اینجا. میدونی چیه؟ من قصد دارم مجبور به اجرای مجدد که همان برنامه، اما با استفاده از یک ساختار متفاوت است. بنابراین من اجازه به سرعت خودم را دسترسی به شامل CS50.H برای کتابخانه CS50، io.h استاندارد برای printf است. من اعتبار اصلی اعضای هیات من را. و پس از آن در اینجا، اجازه من به جلو بروید و این کار را. کاراکتر C می شود از کاراکتر، درست مثل قبل. و من قصد دارم به استفاده از یک ساختار جدید now-- تغییر دهید، به چه شخصیت؟ بنابراین سوئیچ نوع مانند تعویض آهنگ های قطار. یا، واقعا، آن است که نوع از اگر دیگری، اگر دیگری اگر، اما نوشته شده تا حدودی متفاوت است. سوئیچ این شکل است. شما باید سوئیچ، و پس از آن چه شخصیت و یا تعداد که می خواهید به نگاه، پس از آن برخی آکولاد را دوست دارم در ابتدا، فقط می گویند این مسائل. و سپس شما باید موارد متفاوت است. شما اگر و دیگری استفاده نمی کند. شما به معنای واقعی کلمه مورد کلمه استفاده کنید. و شما چیزی شبیه به این می گویند. بنابراین در مورد یک Y حروف کوچک، و یا در مورد سرمایه Y، جلو بروید و چاپ بله. و پس از آن از سوئیچ شکستن. خودشه. انجام شد. دیگری اگر، پس به صحبت می کنند، حروف کوچک N، یا سرمایه N، سپس پیش بروید و چاپ از به هیچ، و سپس شکستن. Else-- و این نوع است که مورد پیش فرض indeed-- تابع () printf error-- و فقط برای اندازه گیری خوب، هر چند منطقی این استراحت لازم نیست چرا که ما در پایان هستید از سوئیچ به هر حال، من در حال حاضر شکستن از سوئیچ. بنابراین این به نظر می رسد کمی متفاوت است. اما، منطقی، آن را در واقع معادل آن. و چرا شما استفاده یکی را بر دیگری؟ گاهی اوقات، فقط ترجیح شخصی، گاهی اوقات زیبایی شناسی، اگر من در این نگاه در حال حاضر، چیزی وجود دارد برای توان گفت خوانایی این کد. منظور من، هرگز این واقعیت است که این ذهن کد برای بسیاری از ما در اتاق جدید است. اما آن را فقط نوع بسیار است. شما ببینید حروف کوچک Y، سرمایه Y، کمتر مورد n، به طور پیش فرض سرمایه N، آن را فقط به نوع جهش در شما در راه که، مسلما، شاید مثال قبلی با IFS، و میله های عمودی، و IFS دیگری، نه ممکن است. بنابراین این واقعا یک ماده از شخصی است انتخاب، واقعا، یا خوانایی، از کد. اما از نظر عملکرد، به من اجازه جلو بروید و یک سوئیچ، نقطه اسلش سوئیچ، و در حال حاضر در Y حروف کوچک تایپ کنید، سرمایه Y، حروف کوچک N، سرمایه N، دیوید، دوباره سعی کنید دلیل این که در یک شخصیت واحد. اجازه دهید X، خطا، به عنوان انتظار می رود. و، logically-- و این چیزی است من تشویق در general-- حتی اگر ما در حال تنها خراش سطح برخی از این ویژگی. و آن را ممکن است واضح زمانی که شما خود نشستن در صفحه کلید، این چطوری کار میکنه؟ چه انجام این کار؟ چیز زیبا در مورد داشتن یک لپ تاپ، یا دسکتاپ، و یا دسترسی به یک کامپیوتر با یک کامپایلر، و با یک ویرایشگر کد مثل این، است شما تقریبا می توانید همیشه این پاسخ پرسش برای خودتان فقط با تلاش. به عنوان مثال، اگر بلاغی درخواست در دست بود، چه اتفاقی می افتد اگر شما را فراموش اظهارات استراحت خود را؟ که در واقع یک چیزی که بسیار رایج را انجام دهید، دلیل آن به نظر نمی مثل شما واقعا به آنها نیاز دارید. آنها واقعا کامل نیست خود را فکر مثل یک پرانتز یا در اشکال مختلف بند کند. اجازه دهید به جلو و کامپایل مجدد کد و ببینید. بنابراین سوئیچ، سوئیچ بریده بریده نقطه است. بیایید تایپ در صورت پایین تر Y، مورد بالا، وارد کنید. بنابراین من Y تایپ. این برنامه گفت: بله، نه، خطا، به عنوان اینکه آن در حال تغییر بود ذهن خود را. اما این نوع از بود، چرا که چه اتفاقی می افتد با یک سوئیچ حالت اول این است که بازی در اصل به معنای، هی کامپیوتر، اجرای تمام از کد زیر آن. و اگر شما نمی گویم استراحت، و یا آیا شکستن نمی گویند، و یا استراحت می گویند نیست، کامپیوتر حال رفتن به ضربه از طریق تمام کسانی که از خطوط و اجرای همه آنها تا آن را به که آکولاد می شود. بنابراین ترمز، در واقع، لازم است. اما یک غذای آماده در اینجا این است، هنگامی که در شک، سعی کنید چیزی. شاید برای اولین بار کد خود را ذخیره کنید، و یا آن را ذخیره کنید در یک فایل اضافی اگر شما واقعا در مورد نگران هستید از دست دادن و نیاز به بازیابی کاری که شما می دانید به کار است. اما سعی کنید همه چیز. و آیا نمی شود به عنوان ترس، شاید، از آنچه که کامپیوتر ممکن است انجام دهید، یا این که شما ممکن است چیزی را بشکند. شما همیشه می توانید برگرداندن به برخی از نسخه های قبلی است. بنابراین اجازه دهید به دنبال پایان دادن به در طراحی از کد. ما این توانایی را در حال حاضر به ارسال شرایط و حلقه نوشتن، و متغیرها، و توابع پاسخ. بنابراین، رک و پوست کنده، ما مهربان هستید از پشت در که در آن ما یک هفته پیش با خراش بود، البته با یک متنی کمتر قانع کننده محیط زیست از ابتدا اجازه می دهد تا. اما توجه کنید که چگونه به سرعت ما را به دست آورد که واژگان، حتی اگر آن را رفتن به در حالی که کمی غرق در، به طوری که ما هم اکنون می توانید این واژگان استفاده برای نوشتن برنامه های جالب تر است. و اجازه دهید یک قدم برای دستیابی به این، شرح زیر است. اجازه دهید من به جلو و ایجاد یک فایل جدید در اینجا. من قصد دارم به پاسخ این prototype.c و معرفی برای اولین بار، توانایی به توابع خود را. برخی از شما ممکن است این با خراش انجام می شود، به موجب آن شما می توانید ایجاد خود را بلوک های سفارشی خود در ابتدا، و سپس آنها را به مکان بکشید هر کجا که شما می خواهم در C. دوست و در بسیاری از برنامه نویسی زبان، شما می توانید دقیقا انجام که-- را توابع خود را، اگر آنها در حال حاضر وجود ندارد. بنابراین، برای مثال، اجازه دهید من به جلو بروید و شامل CS50.H، و شامل استاندارد IO.h، بی اعتبار اصلی نوع int است. و در حال حاضر ما یک آماده برای رفتن به حفره یا سوراخ. من همه چیز را چاپ حفظ مانند نام افراد امروز. و احساس می کند که like-- نمی تواند خوب اگر وجود دارد یک تابع به نام نام چاپ شد؟ من لازم نیست به استفاده از printf. من لازم نیست به خاطر داشته باشید تمام کدهای فرمت. چرا من، و یا چرا کسی که قبل از من نیست، ایجاد یک تابع به نام چاپ نام، که با توجه به برخی از نام، به سادگی آن را چاپ؟ به عبارت دیگر، اگر من می گویم، هی، کامپیوتر، من یک رشته با درخواست از کاربران برای چنین، از طریق تابع رشته مطلع CS50 است. با سلام، کامپیوتر، قرار داده است که رشته در متغیر در سمت چپ، و پاسخ آن را. و پس از آن، با سلام کامپیوتر، به جلو و چاپ که نام شخص، انجام می شود. در حال حاضر، این امر می تواند خوب است، چرا این برنامه، به درستی به نام، من می گوید آنچه را که قرار است انجام از طریق نام آن تابع است. به من اجازه رفتن و نمونه اولیه، وارد کنید. و متاسفانه، این است که به پرواز. Prototype.c، خط 7، شخصیت 5، خطا، اعلام ضمنی از نام تابع چاپ در C99، C99 نامعتبر به این معنی که یک نسخه از C که در سال 1999 بود. که تمام است. بنابراین من نمی دانم که چه همه این به این معنی است. اما من تشخیص خطا با رنگ قرمز. این خیلی واضح است. و به نظر می رسد که با شخصیت سبز در اینجا، مسئله این است که با نام چاپ، باز پرانتز ها، پرانتز بسته، نیمه روده بزرگ است. اما اعلام ضمنی عملکرد ما انجام داد خلاصه زودتر ببینید. این به این معنی، به سادگی، که صدای جرنگ جرنگ نمی داند که من چه می گویم. من یک کلمه فرهنگ لغت استفاده می شود که آن را هرگز دیده می شود یا قبل از آموزش داده شده است. و بنابراین من نیاز به آن را آموزش این تابع به معنی. بنابراین من قصد دارم به جلو بروید و انجام این کار. من قصد دارم به جلو بروید و پیاده سازی عملکرد خود را به نام چاپ نام. و من قصد دارم برای گفتن، به شرح زیر، که آن را این، تابع () printf، سلام، درصد S، بک اسلش نفر، نام، نیمه روده بزرگ. پس چه بود من فقط انجام دهید؟ پس از آن معلوم، به اجرای تابع خود را، ما به نوعی قرض برخی از همان ساختار اصلی که ما فقط شده مسلم بود، و من مطمئن شوید فقط کپی کردن و چسباندن تقریبا چه من در گذشته نوشتن. اما متوجه الگوی اینجا. INT، اصلی، از درجه اعتبار ساقط، ما از هم جدا کسی را دست انداختن قبل از اینکه طولانی که در واقع به معنی. اما امروز، فقط متوجه موازی. از درجه اعتبار ساقط، نام چاپ، نام رشته، به طوری که وجود دارد یک کلمه کلیدی بنفش، که ما قصد داریم به شروع فراخوانی یک نوع بازگشت، نام تابع، و سپس ورودی. بنابراین، در واقع، ما می توانیم تقطیر این نوع از هفته گذشته مانند به عنوان، این نام و یا است الگوریتم کد ما رفتن به write-- الگوریتم های اساسی کد ما در حال رفتن به ارسال. این ورودی آن است. این خروجی آن است. این تابع، نام چاپ، است طراحی شده را به یک رشته به نام نام، یا هر چیز دیگری، به عنوان ورودی، و پس از آن از درجه اعتبار ساقط. این هیچ چیزی نمی گرداند، مانند دریافت رشته و یا از نوع int است. بنابراین آن را به من چیزی دست است. آن را فقط به یک عوارض جانبی، پس به صحبت می کنند، چاپ نام شخص. بنابراین اطلاع، خط 7، من می توانید نام چاپ پاسخ. خط 10، من می توانم تعریف و یا اجرای نام نسخه قابل چاپ. اما، متاسفانه، این کافی نیست. اجازه دهید من به جلو و کامپایل مجدد این پس از صرفه جویی. ایست، در حال حاضر، من آن را ساخته ام بدتر از آن، به نظر می رسد. اعلامیه بنابراین ضمنی نام تابع چاپ نامعتبر است. و، دوباره، خطاهای بیشتر وجود دارد. اما همانطور که قبلا هشدار، حتی اگر شما غرق دریافت کنید، یا کمی غمگین به دیدن بسیاری از اشتباهات، تمرکز تنها در اولین در ابتدا، به دلیل آن فقط ممکن است اثر آبشاری داشته اند. بنابراین C، و یا صدای جرنگ جرنگ به طور خاص، هنوز هم نام چاپ به رسمیت نمی شناسد. و به دلیل صدای جرنگ جرنگ است، با طراحی، نوع گنگ. این تنها چیزی است که شما آن را به انجام. و آن را تنها می کند در جهت که در آن شما آن را به انجام. بنابراین من اصلی در خط چهار تعریف کرده اند، مانند ما انجام داده ایم بسیار اغلب. من نام چاپ بر روی خط 10 تعریف کرده اید. اما من در تلاش برای استفاده از نام چاپ بر روی خط هفت. آن را خیلی زود، هنوز وجود ندارد می کند. بنابراین من می تواند باهوش، و مانند، خوب، پس اجازه دهید فقط بازی همراه، و حرکت نام چاپ تا در اینجا، و دوباره کامپایل. اوه خدای من. این کار کرده است. به همین سادگی بود. اما منطق است که دقیقا. شما باید برای تدریس صدای جرنگ جرنگ آنچه در آن است با تعریف تابع اول. سپس شما می توانید از آن استفاده کنید. اما صادقانه بگویم، این احساس مانند یک شیب لغزنده است. بنابراین هر بار که من اجرا به یک مشکل، من فقط رفتن به برجسته و کپی کد من نوشت، آن را قطع و آن را اینجا وارد شود. و، قطعا، ما می تواند تدبیر برخی از حالات که در آن یک تابع ممکن است نیاز به تماس است. و شما فقط می توانید در هر قرار داده نشده تابع بالا هر. پس از آن معلوم وجود دارد یک راه حل بهتر است. ما می توانیم ترک این باشد. و صادقانه بگویم، آن را به طور کلی خوب است، و راحت و طراحی خوب برای قرار دادن اصلی اول، دلیل، دوباره، اصلی درست مثل زمانی که پرچم سبز کلیک، که تابع این است که می شود به طور پیش فرض اجرا می شود. بنابراین شما نیز ممکن است قرار داده است آن را در بالای فایل به طوری که وقتی شما و یا هر دیگر انسان به نظر می رسد در فایل شما می دانید چه خبر است فقط با خواندن اولین اصلی است. پس از آن معلوم، ما می توانیم صدای جرنگ جرنگ به فعالانه، با سلام، صدای جرنگ جرنگ، در خط چهار، من قول می دهم برای اجرای یک تابع به نام چاپ نام طول می کشد که یک نام رشته به نام به عنوان ورودی، و بازده هیچ چیز، بی اعتبار است. و من در اطراف برای دریافت اجرای آن بعد. در اینجا می آید اصلی اصلی در حال حاضر در خط 9 می توانید استفاده کنید چاپ نام به دلیل صدای جرنگ جرنگ است اعتماد که، در نهایت، آن را تعریف روبرو می شوند از اجرای نام چاپ. بنابراین پس از صرفه جویی در فایل من، اجازه دهید من جلو بروید و نمونه اولیه، به نظر می رسد خوب این زمان. نقطه بریده بریده، نمونه اولیه، به من اجازه جلو بروید و تایپ یک نام است. دیوید، سلام دیوید، Zamila، سلام Zamila، و در واقع، در حال حاضر کار می کند. بنابراین عنصر در اینجا این است که ما در ساخته شده یک تابع سفارشی، مانند یک سفارشی بلوک ابتدا ما خواستار آن است. اما بر خلاف خراش که در آن شما می توانید فقط آن را ایجاد و شروع به استفاده از آن، در حال حاضر ما باید یک کمی موشکاف تر، و در واقع آموزش صدای جرنگ جرنگ برای استفاده، و یا به آن انتظار. در حال حاضر، به عنوان یک کنار، چرا این همه هم ما فقط کورکورانه در ایمان از جمله بوده است CS50.H، و از جمله استاندارد IO.h؟ خب، معلوم است، در میان چند چیز دیگر، همه که در آن نقطه ساعت فایل های، که اتفاق می افتد به فایل های. آنها فایل های هدر در حال، پس به صحبت. آنها هنوز هم در C نوشته شده اما آنها یک نوع متفاوت از فایل است. در حال حاضر، شما تقریبا می توانید فرض که همه این است که در داخل CS50.H برخی یک آستر مانند این، نمی باشد. برای توابع به نام چاپ نام، اما برای دریافت رشته، مطلع شناور، و چند نفر دیگر. و نمونه های اولیه مشابه وجود دارد، یک آستر، در داخل io.h استاندارد برای printf، که در حال حاضر در خود عملکرد چاپ نام من. بنابراین به عبارت دیگر، در تمام این مدت ما باید فقط کورکورانه کپی کردن و چسباندن این جمله، شامل که، چه خبر است؟ اینها تنها ادلهای به به آنچه به عنوان توابع صدای جرنگ جرنگ ، در واقع، اجرا، فقط در جای دیگر در فایل های مختلف در جای دیگر بر روی سیستم. بنابراین ما نام چاپ اجرا کرده ام. این کند که این اثر جانبی چاپ چیزی بر روی صفحه نمایش. اما در واقع نمی من چیزی دست است. چگونه ما در مورد رفتن اجرای برنامه ای که به من چیزی دست تماس؟ خوب، اجازه دهید این را امتحان کنید. اجازه بدهید به جلو و پیاده سازی return.c فایل به نام بنابراین ما می توانیم که چگونه چیزی را نشان می دهد مانند مطلع رشته، یا مطلع متوسط، است که در واقع بازگشت چیزی به کاربر. اجازه دهید به جلو و تعریف بی اعتبار اصلی نوع int است. و، دوباره، در آینده، ما توضیح آنچه که int و از درجه اعتبار ساقط است که در واقع انجام می دهند. اما برای امروز، ما بی چون و چرا پذیرفتن. من قصد دارم به جلو بروید و تابع () printf، برای یک تجربه کاربری خوب، x است. و سپس من برای رفتن به صبر کاربران به من X با INT مطلع است. و سپس من قصد دارم به جلو بروید و چاپ x را به مربع است. بنابراین، هنگامی که شما فقط یک دارند صفحه کلید، مردم معمولا استفاده از هویج کمی نماد بر روی صفحه کلید برای نشان به قدرت از، و یا از توان. بنابراین مربع ایکس حاضر من است. و در حال حاضر من قصد دارم به انجام این کار. من فقط می توانند انجام دهید X چه مربع؟ x به توان X بار x است. و ما این برخی زمان پیش در حال حاضر امروز. این مانند احساس نمی که پیشرفت های زیادی. میدونی چیه؟ بیایید اهرم برخی از این ایده از آخرین باری که از انتزاع. آیا آن را نمی شود خوب اگر یک تابع به نام وجود دارد مربع است که دقیقا همان است که می کند؟ آن را هنوز هم، در پایان از روز، آیا همین ریاضی. اما اجازه دهید انتزاعی دور ایده گرفتن یک عدد ضرب دیگر، و فقط آن را یک نام را، مانند مربع این مقدار است. و، به عبارت دیگر، در C، اجازه دهید یک تابع ایجاد نام مربع است که دقیقا همان است که انجام می دهد. آن را به مربع نامیده می شود. آن را به یک نوع int است. و ما فقط به آن N، به طور پیش فرض. اما ما می تواند آن را هر چیزی که ما می خواهیم پاسخ. و تمام است که آن را به انجام دهید، به معنای واقعی کلمه، بازگشت است در نتیجه n بار N. اما به دلیل آن است بازگشت چیزی که کلمه کلیدی در بنفش ما است پیش از این هرگز دیده می شود، من، در خط 11، می توانید نه تنها می گویند از درجه اعتبار ساقط این زمان. از درجه اعتبار ساقط، در مثال ما فقط دیدم نه از نام چاپ، فقط به این معنی، کاری بکنید. اما من چیزی دست نیست. در این مورد، من نمی خواهم به بازگشت n بار N، یا هر چیز دیگری است که، این تعداد است. بنابراین من نمی توانم بگویم، هی، کامپیوتر، من هیچ چیز بازگشت، باطل است. آن را به بازگشت، از طبیعت، یک int. و به طوری که همه که در اینجا است. ورودی به مربع در حال رفتن به یک int. و به طوری که ما می توانیم از آن استفاده کنید، آن را به است یک نام، N. آن را به خروجی یک int که یک نام نیاز ندارد. ما می توانیم آن را به اصلی را ترک، و یا هر کس با استفاده از من به یاد داشته باشید این مقدار اگر ما می خواهید با متغیر خود را دارد. و، دوباره، تنها جدید اینجا را بازگشت است. و من فقط انجام برخی از ریاضی. اگر من واقعا می خواستم به غیر ضروری، من می توانم بگویم کالا INT می شود n بار N. و پس از آن من می توانم بگویم، بازگشت محصول می باشد. اما، دوباره، به نظر من قبل از این design-- خوب بودن نیست مانند، چرا معرفی یک نام، یک نماد، مثل محصول، فقط به فورا آن را بازگشت؟ این یک پاک کن کوچک است، کمی تنگ تر، بنابراین به صحبت می کنند، فقط می گویند بار بازگشت N N، خلاص شدن از شر این خط در دسترس نباشد. و آن کد فقط کمتر به خواندن است، فرصت کمتری برای اشتباهات. و اجازه دهید اگر این را ببینید واقع در حال حاضر کار می کند. حال حاضر، من قصد دارم برای رفتن جلو و بازگشت است. آه، آه، اعلام ضمنی تابع. من این اشتباه قبل، هیچ معامله بزرگ. اجازه بدهید من فقط تایپ کنید، و یا برجسته و کپی، دقیقا همان عملکرد نمونه اولیه، یا امضا، از تابع تا اینجا. یا من می تواند طیف تابع حرکت می کند. اما که کمی تنبل. بنابراین ما انجام این کار نیست. در حال حاضر، اجازه دهید بازگشت دوباره، نقطه بازگشت بریده بریده. X است 2. توان x 4 است. X است 3. توان x 9 است. و تابع به نظر می رسد در حال حاضر به کار شود. بنابراین چه تفاوت که اینجا هستید؟ من یک تابع که مربع نامیده می شود، در این مورد، که من در ورودی قرار داده است. و من به عقب بر گردیم خروجی. و با این حال، پیش از این، اگر من مثال دیگر باز از پیش از آن که نام prototype.c بود، من تا به حال نام چاپ، که بازگشت از درجه اعتبار ساقط است، پس به صحبت می کنند، و یا آن چیزی بازگشت، و به سادگی یک عارضه جانبی داشته باشد. بنابراین آنچه که در اینجا؟ خب، در نظر گرفتن تابع دریافت رشته برای فقط یک لحظه. ما شده ایم با استفاده از تابع دریافت رشته به صورت زیر. ما تا به حال یک تابع از رشته، مانند شامل CS50.H، شامل استاندارد IO.h، هوشمند، اصلی، بی اعتبار است. و پس از آن هر بار که من این نام رشته مطلع تا کنون، من گفته ام چیزی شبیه به رشته ها می شود از رشته، به دلیل دریافت string-- اجازه دهید این رشته مطلع get.c-- پاسخ به خودی خود یک رشته را برمی گرداند که من پس از می استفاده کنید، و می گویند، سلام، کاما، درصد S، بک اسلش N، ​​S. بنابراین این مثال همان است، واقعا، که ما قبلا بود. بنابراین رشته یک مقدار را برمی گرداند. اما یک لحظه پیش، رشته چاپ یک مقدار بازگشت نیست. آن را به سادگی یک اثر جانبی. بنابراین این یک تفاوت اساسی دارد. ما را دیده ام مختلف انواع توابع در حال حاضر، که برخی از آنها بازگشته اند ارزش ها، که برخی از آنها را انجام دهد. تا شاید آن رشته، یا از نوع int و یا شناور است. یا شاید آن را فقط از درجه اعتبار ساقط. و تفاوت در این است که این توابع که دریافت اطلاعات و بازگشت به یک مقدار در واقع آوردن چیزی به جدول، پس به صحبت. بنابراین اجازه دهید پیش بروید و در یک مجموعه نهایی از نمونه است که به یک معنا، در حال حاضر، چگونه ممکن است ما، در واقع، انتزاعی بهتر، و بهتر، و بهتر است، یا بیشتر، و بیشتر، و بیشتر، به منظور برای نوشتن، در نهایت، کد بهتر است. اجازه دهید به جلو، و در روح از ابتدا زیر را انجام دهید. اجازه دهید من به جلو و شامل CS50.h و استاندارد IO.h. اجازه بدهید به جلو و به خودم یک int، اصلی، بی اعتبار است. و اجازه دهید من به جلو بروید، پاسخ این cough.c. و اجازه دهید من جلو و فقط به مانند خراش، چاپ کردن سرفه / N. و من می خواهم به انجام این سه بار. بنابراین من، البته، فقط رفتن برای کپی کردن و سه بار وارد کنید. من در حال حاضر رفتن به سرفه سرفه بریده بریده نقطه. بیایید خودم یک اتاق کمی بیشتر به در اینجا، را وارد کنید، سرفه، سرفه، سرفه. وجود دارد، بدیهی است، در حال حاضر یک فرصت را برای بهبود. من کپی و جا به جا چند بار امروز. اما این تنها بود، بنابراین من نمی به نوع شخصیت به عنوان بسیاری از. من هنوز هم تغییر چه آن خط کد هستند. این سه خط یکسان هستند، که احساس می کند تنبل و در واقع، و احتمالا رویکرد درست نیست. بنابراین با چه مواد تشکیل دهنده می تواند ما این کد را بهبود بخشد؟ ما لازم نیست که به کپی و چسباندن کد. و، در واقع، هر زمان شما احساس خود کپی کردن و چسباندن، و حتی تغییر کد، شانس هستند یک راه بهتر وجود دارد. و، در واقع، وجود دارد. اجازه دهید من به جلو و انجام یک حلقه for، حتی اگر به نحو ممکن نیست آمده به طور طبیعی است. این کار را سه بار، به سادگی با انجام شرح زیر است و من به اتفاق می دانم که این از عمل. اما ما یک تعدادی از نمونه های حال حاضر است. و شما آنلاین را ببینید مراجع تر هنوز هم. این نحو در خط 6، که بسیار شبیه به خراش است که تکرار بلوک، سه بار تکرار کنید. این جادویی کوچک در حال حاضر. اما این بیشتر خواهد شد، و بیشتر آشنا. و آن را به تکرار خط هشت، سه بار، به طوری که اگر من دوباره کامپایل سرفه را، نقطه بریده بریده سرفه، سرفه، سرفه، سرفه. هنوز کار می کند به همان شیوه. به طوری که همه خوب هستند و خوب است. اما این بسیار انتزاعی است. آن را کاملا درست است. اما آن را مانند وجود دارد احساس می کند می تواند یک فرصت، به عنوان در جهان ابتدا، به نوع شروع برای اضافه کردن برخی معانی اینجا به طوری که من نه فقط برخی برای حلقه، و یک تابع است که می گوید سرفه، یا سرفه. میدونی چیه؟ اجازه دهید برای یک کولر کمی از آن، و در واقع ارسال یک تابع است که برخی از عوارض جانبی، پاسخ آن سرفه. و آن را طول می کشد هیچ ورودی، و هیچ ارزش به عنوان خروجی بر می گرداند. اما شما می دانید چه می کند؟ آن را this-- تابع () printf، نقل قول را تمام کردن، سرفه. و در حال حاضر در اینجا، من قصد دارم به جلو بروید و برای هوشمند، من می شود صفر، من کمتر از 3، من به علاوه به علاوه. من قصد دارم تابع () printf به انجام نیست، که مسلما اجرای سطح پایین جزئیات. برای من مهم نیست که چگونه به سرفه. من فقط می خواهم به استفاده از تابع سرفه. و من فقط رفتن به پاسخ سرفه. حال حاضر، متوجه دوگانگی. هنگامی که شما یک تابع، اگر شما نمی می خواهید را به آن ورودی، کاملا خوب است. فقط پرانتز باز، نزدیک پرانتز، و شما انجام می شود. هنگامی که شما یک تابع را تعریف، و یا اعلام نمونه آزمایشی تابع، اگر شما در پیشبرد دانم آن را رفتن به هر گونه استدلال، می گویند در آن پرانتز وجود دارد باطل است. و باعث می شود خاصی است که شما خواهد به طور تصادفی نمی آن سوء استفاده. اجازه دهید من جلو بروید و سرفه. و، البته، من یک اشتباه ساخته شده است. لعنتی، که وجود دارد اعلام ضمنی. اما این خوب است. این تعمیر آسان است. من فقط نیاز به نمونه اولیه بالاتر در پرونده من از من در واقع با استفاده از آن. بنابراین در حال حاضر اجازه دهید سرفه دوباره، خوب است. حالا کار میکند. را سرفه، سرفه، سرفه، سرفه. بنابراین شما ممکن است فکر می کنم که ما واقعا بیش از مهندسی این مشکل است. و، در واقع، ما می باشد. این یک خوب نیست نامزد یک برنامه در حال حاضر برای فاکتورگیری مجدد، و انجام چه نام تجزیه سلسله مراتبی، که در آن شما را به برخی از کد، و سپس شما نوع از همه چیز عامل، بنابراین به عنوان به نسبت معناشناسی بیشتر به آنها، و استفاده از آن مدت در نهایت طولانی تر است. اما یک بلوک ساختمان به سمت این برنامه های پیچیده تر که ما شروع خواهد شد نوشتن قبل از اینکه طولانی که اجازه می دهد تا ما را به واژگان که با آن به ارسال کد بهتر است. و، در واقع، اجازه دهید اگر ببینید که ما می توانید این بیشتر تعمیم. به نظر می رسد کمی لنگ که من، اصلی، باید در مورد این رفو نگران حلقه، و دوباره و دوباره خواستار سرفه. چرا من نمی توانم فقط سرفه بگویم، مدیر سه بار سرفه؟ به عبارت دیگر، به همین دلیل نمی توانم فقط دادن ورودی به سرفه و انجام این کار؟ چرا من نمی توانم فقط می گویند، در سرفه اصلی سه بار. و در حال حاضر، این نوع از جادویی. آن را بسیار تکرار شونده را در اینجا. و آن را، در واقع، یک گام عزیزم. اما فقط توانایی برای گفتن در خط هشت، سرفه، سه بار، آن را فقط بسیار بیشتر قابل خواندن. و، به علاوه، من لازم نیست که می دانم یا مراقبت چگونه سرفه اجرا شده است. و، در واقع، بعد از آن در مدت و برای پروژه های نهایی، اگر شما مقابله با یک پروژه با یک همکلاسی یا دو همکلاسی، شما متوجه است که شما در حال رفتن به به، یا می خواهید به، تقسیم کار است. و شما در حال رفتن به خواهید برای تصمیم گیری در پیش است، که رفتن را به انجام آنچه، و که در آن قطعه؟ و آن را نمی تواند به خوبی اگر شما به عنوان مثال، را به اتهام نوشتن اصلی، انجام می شود. و هم اتاقی خود، و یا خود را شریک به طور کلی، طول می کشد مراقبت از اجرای سرفه. و این تقسیم بندی، این دیوار از انتزاع، یا لایه انتزاع اگر شما خواهد شد، فوق العاده قدرتمند، زیرا به ویژه برای بزرگتر، برنامه های پیچیده تر و سیستم ها، آن اجازه می دهد تا چند نفر را برای ساخت همه چیز با هم، و در نهایت کوک کار خود را با هم در این راه. اما، البته، ما نیاز به در حال حاضر ثابت سرفه. ما نیاز به سرفه به که، هی، شما می دانید چه؟ شما در حال رفتن به نیاز به یک input-- تا از درجه اعتبار ساقط نیست، اما از نوع int و در حال حاضر. اجازه دهید به جلو قرار داده و به سرفه از نوع int. من می شود صفر است. من کمتر از چند بار است. من قبل از سه گفت. اما این چیزی است که من می خواهم نیست. من می خواهم سرفه به تعمیم داده شود حمایت از هر تعداد تکرارها. بنابراین، در واقع، آن را N که من می خواهم، هر کاربر به من می گوید. در حال حاضر، می توانید پیش بروید و می گویند چاپ سرفه. و بدون توجه به چه تعداد کاربر می گذرد در، من که چند بار تکرار. بنابراین در پایان روز، برنامه یکسان است. اما توجه کنید تمام این مسائل حتی می تواند در یک فایل دیگر باشد. در واقع، من در مطمئن شوید که لحظه چگونه تابع () printf اجرا شده است. من در حال حاضر مطمئن شوید که چه از رشته، و یا از نوع int، و یا شناور اجرا می شوند. و من نمی خواهم آنها را بر روی صفحه نمایش من را ببینید. عنوان آن است، من شروع به تمرکز بر روی برنامه های من، نه آن دسته از توابع. و به این ترتیب، در واقع، به محض اینکه شما شروع ساخت کد مثل این است، می تواند ما حتی حرکت سرفه به یک فایل جداگانه؟ شخص دیگری می تواند آن را اجرا می کنند. و شما و برنامه های خود را تبدیل به بسیار زیبا، و بسیار قابل خواندن، مسلما، واقعا چهار برنامه خط راست وجود دارد. بنابراین اجازه دهید حال حاضر پیش بروید و ایجاد یک تغییر است. توجه داشته باشید که نمونه من به تغییر تا بالا. بنابراین اجازه دهید تعمیر که من تا من نمی در فریاد زد است. را سرفه، اجازه دهید من اجرا سرفه یک بار بیشتر، هنوز هم انجام همین کار. اما الان، به ما یک مواد تشکیل دهنده برای یک نسخه نهایی. میدونی چیه؟ من نمی خواهم فقط سرفه، لزوما. من می خواهم به چیزی کلی تر. بنابراین شما می دانید چه چیزی؟ من می خواهم به انجام این کار. من می خواهم به، بسیار شبیه خراش می کند، یک بلوک می گویند، اما نه فقط چیزی می گویند برخی تعداد بار. من می خواهم آن را به می گویند یک رشته بسیار خاص است. و، در نتیجه، من نمی می خواهم آن را فقط سرفه می گویند. من می خواهم آن را به می گویند هر آنچه رشته در گذشت. بنابراین اطلاع، من کلی به این طوری که در حال حاضر مثلا احساس می کند مانند یک نام خوب برای این کار، مانند خراش، دو آرگومان می گیرد، بر خلاف خراش. یکی یک رشته است. یکی از نوع int است. و من می توانم آنها را تغییر دهید. من فقط نوع مانند ایده می گویند رشته اول، و سپس چند بار بعد. از درجه اعتبار ساقط به این معنی است که هنوز هم هیچ چیزی نمی گرداند. اینها فقط طرف بصری هستند اثرات، می خواهم با [؟ اردن،؟] یک اثر جانبی کلامی از فریاد. هنوز هم چیزی بار N، 0 تا، اما به n برابر نیست. این به این معنی N کل بار. و پس از آن فقط نسخه قابل چاپ کردن هر چه که رشته است. بنابراین من واقعا تعمیم ام این خط از کد. بنابراین در حال حاضر، چگونه می توانم پیاده سازی تابع سرفه؟ من می توانم سرفه از درجه اعتبار ساقط است. و من هنوز هم می تواند در را چگونه چند بار که شما می خواهید به سرفه کردن. اما میدونی چیه؟ من هم اکنون می توانید زدن توپ برای گفتن دارد. من می توانم پاسخ می گویند با کلمه سرفه، عبور در ش. و اگر من می خواهم به هم پیاده سازی، فقط برای تفریح، یک تابع عطسه، من می توانم برخی تعداد بار عطسه. و من می توانید نگه دارید استفاده مجدد N، زیرا توجه کنید که متر در این زمینه و یا دامنه تنها در این تابع وجود دارد. و n در این زمینه تنها در این تابع در اینجا وجود دارد. بنابراین ما باز خواهم گشت این مسائل از حوزه. و در اینجا، من فقط رفتن به گفتن نیست، achoo، و سپس n بار، نیمه روده بزرگ است. و در حال حاضر، من فقط نیاز به قرض گرفتن این تابع امضا تا اینجا. بنابراین سرفه درست است. عطسه خالی در حال حاضر درست است. و من هنوز هم فقط نیاز است. بنابراین من قصد دارم برای گفتن، بگو رشته ها، اعضای هیات N، نیمه روده بزرگ. بنابراین من بیش از حد مهندسی هک از این برنامه است. و این را نمی کند لزوما به این معنی این است آنچه شما باید انجام در هنگام نوشتن حتی ساده ترین برنامه. چیزی را که به وضوح واقعا ساده است، واقعا کوتاه، و دوباره پیاده سازی آن با استفاده از کد بیش از حد. اما در واقع شما خواهید دید، و در زمان نگاه کردن به این نمونه ها، و درک، آه، کسانی که مراحل ما در زمان به واقع تعمیم، عامل چیزی، تا زمانی که در پایان روز کد من است که در واقع بسیار مناسب. اما اگر من به سرفه سه بار پس از عطسه، سه بار، من به سادگی رفتن به تکرار این، برنامه را سرفه، و اجرا سرفه. و من سه سرفه و سه عطسه. و این اساسی است پارادایم، اگر شما خواهد شد، برای ما چگونه ممکن است در مورد رفتن در واقع اجرای یک برنامه. اما اجازه دهید فقط ببینید در حال حاضر آنچه در آن است ما انجام داده ایم از این همه زمان، و چه برخی از قطعات نهایی در پشت این دستور ساده می باشد. در پایان روز، ما با استفاده از صدای جرنگ جرنگ به عنوان کامپایلر ما بوده است. ما شده ایم نوشتن منبع کد، تبدیل آن از طریق صدای جرنگ جرنگ به کد ماشین. و ما با استفاده از را فقط به منظور تسهیل کلید ما به طوری که ما لازم نیست به خاطر داشته باشید کسانی که ورد صدای جرنگ جرنگ است. اما آنچه را در واقع انجام می دهند؟ و به نوبه خود، چیزی است که صدای جرنگ جرنگ در واقع انجام می دهند؟ به نظر می رسد، هر چند ما ساده بحث امروز با گفتن، شما را کد منبع، تصویب آن به عنوان ورودی به یک کامپایلر، که به شما می دهد خروجی از دستگاه کد، معلوم است وجود دارد مراحل مختلف در داخل وجود دارد. و تدوین اتفاق می افتد به چتر مدت برای یک دسته کامل از مراحل. اما اجازه دهید فقط کسی را دست انداختن این واقعا به سرعت. به نظر می رسد که ما انجام شده است همه چیز هر بار که من یک برنامه اجرا شود، یا هر بار که من یک برنامه امروز کامپایل. بنابراین پیش پردازش اشاره به this-- هر چیزی را در یک برنامه C، همانطور که ما دوباره و دوباره خواهید دید، که با این نماد هش شروع می شود، یا نماد هشتگ در اینجا، به معنای آن یک دستور پیش پردازنده است. این بدان معناست که در این صورت، کامپیوتر، انجام کاری با این فایل شما در واقع قبل کد را کامپایل کنید. در این مورد، هش شامل، در اصل، راه سی گفت، هی کامپیوتر، به دریافت محتویات از CS50.h و آنها را در اینجا وارد کنید. هی کامپیوتر، به دریافت محتویات استاندارد IO.h، هر کجا که باشد در هارد دیسک، آن را در اینجا وارد کنید. بنابراین کسانی که چیزهایی اتفاق می افتد برای اولین بار در طول پردازش. و صدای جرنگ جرنگ همه از این برای ما. و آن را به تا رفو سریع، شما حتی نمی چهار چیز متفاوت اتفاق می افتد. اما این اولین گام است. آنچه در واقع اتفاقی می افتد؟ خب، این مقام بعدی گام تدوین شده است. و معلوم است که تدوین برنامه از لحاظ فنی به معنای رفتن از کد منبع، چیزهایی که ما را امروز شده است نوشتن، به چیزی نام کد اسمبلی، چیزی که به نظر می رسد کمی متفاوت است. و، در واقع، ما می توانیم این واقعی سریع را ببینید. اجازه دهید من در واقع به IDE من برو. اجازه دهید من جلو و hello.c باز کند، که این برنامه بسیار برای اولین بار است که ما با آن امروز شروع شد. و اجازه دهید من به جلو و اجرای صدای جرنگ جرنگ کمی متفاوت، صدای جرنگ جرنگ-S، hello.c، است که در واقع به رفتن من hello.s فایل دیگر به من بدهید. و ما احتمالا هرگز دوباره این نوع از کد را ببینید. اگر شما یک سطح پایین تر کلاس سیستم مانند CS61، شما یک مقدار زیادی بیشتر از این نوع کد. اما این زبان اسمبلی است. این X86 زبان اسمبلی که CPU است که زمینه ای CS50 IDE در واقع درک می کند. و مرموز آن را به عنوان نگاه کنید، آن چیزی است کامپیوتر را درک بسیار خوب است. Q زیر، این جمع و تفریق است. این جنبش وجود دارد. خواستار وجود دارد از توابع در اینجا، X اورینگ، یک جنبش، یک افزودنی، پاپ، بازگشت. بنابراین وجود دارد برخی از آنها بسیار دستورالعمل سطح پایین که در پردازنده های درک کنند که که پیشتر اشاره کردم. این چیزی است که اینتل در داخل است. الگوهای از وجود دارد صفر و آنهایی که نقشه به این arcanely دقت کنید، اما تا حدودی خوب به نام، دستورالعمل ها، پس به صحبت. این چیزی است که اتفاق می افتد زمانی شما کد خود را کامپایل کنید. شما دریافت می کنید مونتاژ زبان خارج از آن، که معنی مرحله سوم است که جمع آوری که کد اسمبلی به، در نهایت، ماشین صفر code-- و آنهایی که، نه متن است که ما فقط یک لحظه پیش دیدم. بنابراین قبل از پردازش می کند که پیدا و جایگزین، و چند چیز دیگر. کامپایل طول می کشد منبع خود را کد از C، کد منبع که ما نوشت، به مونتاژ کد که ما فقط در نگاه کرد. نصب و راه اندازی طول می کشد که مونتاژ کد را به صفر و که CPU واقعا درک در پایان روز است. و ایجاد ارتباط بین آخرین مرحله این است که اتفاق می افتد برای us-- دوباره، اینقدر تند و سریع ما حتی نمی notice-- که می گوید، هی کامپیوتر، همه از صفر و آنهایی که حاصل از کامپایل کد دیوید، و عملکرد اصلی خود را در این مورد. و هی کامپیوتر، به دریافت همه از صفر و آنهایی که که کارکنان CS50 نوشت در داخل کتابخانه CS50. مخلوط آن با دیوید. و هی کامپیوتر، به دریافت تمام صفر و آنهایی که شخص دیگری سال نوشت پیش برای printf است. و اضافه کردن آن به همه چیز، به طوری که ما کرده ایم کردم صفر و آنهایی که من، صفر و آنهایی که CS50 کارکنان است، صفر printf و آنهایی که، و هر چیز دیگری که ما با استفاده. همه آنها با هم به یک ترکیب برنامه ای به نام، در این مورد، سلام. فقط تا پس، ما استفاده از کامپایل کلمه. و ما را برای اعطا که وقتی ما می گویند، تدوین برنامه های خود را، به این معنی، هی انجام پیش پردازش، مونتاژ، و ارتباط دادن. اما در واقع برخی از چیزهای آبدار وجود دارد رفتن وجود دارد در زیر هود. و به خصوص اگر شما کنجکاو برخی از زمان، شما می توانید شروع مجبور در اطراف در این سطح پایین تر است. اما در حال حاضر، متوجه است که در میان takeaways در امروز کاملا به سادگی آغاز یک روند، از گرفتن راحت با چیزی شبیه سلام جهان. در واقع، بیشتر از آنچه که ما امروز قطعا نمی خواهد در غرق فوق العاده سریع. و آن را به برخی را زمان، و برخی از عمل. و شانس هستند، شما مرتب سازی بر اساس از می خواهید به ضربه صفحه کلید خود را یا فریاد زدن در روی صفحه نمایش. و همه از این OK. هر چند، شاید نه به سعی کنید آن را در کتابخانه بسیار است. و در نهایت، شما قادر هر چند، برای شروع دیدن الگوهای، هر دو در کد خوب که شما نوشته ام و در اشتباهات که شما ساخته شده است. و بسیار شبیه به فرایند تبدیل شدن به یک TF یا CA است، شما شروع به دریافت بهتر و بهتر دیدن آن الگوها، و فقط حل خود را مشکلات خود را در نهایت. در این میان، وجود دارد مقدار زیادی خواهد بود از ما به من قرض بدهید به شما پشتیبانی، و به شما به از این طریق. و در نوشتن یو پی اس برای تمام مشکلات شما را از طریق هدایت همه از دستورات که من قطعا از مطمئن شوید بسیاری از عمل در حال حاضر، اما ممکن است پرواز بر سر یکی از در حال حاضر. و این کاملا خوب. اما، در نهایت، شما در حال رفتن به شروع به دیدن الگوهای پدیدار شود. و هنگامی که شما گذشته تمام از جزئیات احمق، مثل پرانتز، و آکولاد و نیمه دونقطه، و مسائل، رک و پوست کنده، که نه در همه فکری جالب. و آن است که هدف از نه در نظر گرفتن هر کلاس مقدماتی. این ایده که می رویم به اهمیت است. این حلقه است، و شرایط و توابع، و با قدرت تر از انتزاع، و مقاطعه از کد، و طراحی خوب، و خوب سبک، و در نهایت صحت کد خود را، که در نهایت به مهم ترین. بنابراین هفته آینده، ما این را ایده هایی که ما برای اولین بار در ابتدا دیدم و در حال حاضر ترجمه به C. و ما شروع به را معرفی برای اولین بار از حوزه دنیای واقعی درس. ما در جهان از امنیت، و به طور خاص تر رمزنگاری، هنر تقلا اطلاعات. و در میان اولین مشکلات شما خودتان خواهد شد به فراتر ارسال بازی با برخی از نحو و حل برخی منطقی مشکلات، در نهایت قبل از اینکه طولانی، است که در واقع تقلا، و یا رمز در آوردن، و در نهایت این اطلاعات را رمزگشایی کرد. و همه چیز را ما انجام داده ایم امروز، نسبتا کم خواهد شد سطح، فقط رفتن به اجازه می دهد ما را به یک، و یک، و یک گام دیگر به سمت بالا نوشتن کد جالب ترین و در عین حال. بنابراین بیشتر در مورد که در هفته آینده. [پخش ویدئو] چه می تواند شما را به من در مورد به آخرین باری که شما او را دیدم؟ چه می توانم بگویم، واقعا؟ منظور من، آن مانند هر دیگر بود تمرین پیش تولید، به جز چیزی وجود دارد او گفت در پایان که با من گیر کرده است. -این CS50 بود. یعنی هر کس برش است، کار بزرگ در تمرین. ناهار یعنی خبر؟ آره، من و شما می توانید گرفتن یک ساندویچ در یک بیت. اجازه بدهید من فقط با کسب کردن دیوید واقعا به سرعت. دیوید؟ دیوید؟ [پایان دادن به پخش]