کسانی که هنوز سخنرانی های هاروارد در مورد اصول برنامه نویسی را تماشا نکرده اند، به اینجا بروید: https://javarush.com/quests/QUEST_HARVARD_CS50 =)
معرفی. ساختار دوره CS50
دوستان! در مقدمه، ساختار CS50 را به شما یادآوری می کنیم (یا به شما می گوییم). دوره 12 هفته طول می کشد. هر هفته دو سخنرانی و همچنین انواع سمینارها و توضیحات وجود دارد. به محض آماده شدن سخنرانی، مقالاتی مانند این را منتشر خواهیم کرد. این شامل شرح مختصری از سخنرانیها، یادداشتهایی در مورد "مطالب کوتاه" و اطلاعات اضافی، و همچنین ترجمه تکالیف عملی است. سخنرانی های هفته صفر موضوعات زیر را پوشش می دهد:- سیستم اعداد باینری
- ASCII
- الگوریتم ها و تفکر الگوریتمی
- کامپایلرها
- زبان خراش
- عبارات بولی
- شرایط
- چرخه ها
- متغیرها
- کارکرد
- آرایه ها
- جریان ها
- مناسبت ها
- درک اینکه چگونه اطلاعات را می توان به صورت دیجیتالی نمایش داد.
- ساختارها و مفاهیم اولیه نرم افزار را بیاموزید.
- انیمیشن، بازی یا فعالیت تعاملی خود را با استفاده از Scratch ایجاد کنید.
- دوستان خود را تحت تاثیر قرار دهید =).
CS50 هفته 0 (سخنرانی 1-2): یادداشت ها
الگوریتم ها
امیدواریم قبلاً سخنرانی ها را تماشا کرده باشید و متوجه شده باشید که الگوریتم حل مسائل (مسائل مختلف، مسائل ریاضی یا "نحوه رسیدن به ایستگاه مترو N") را به مراحل تقسیم می کند. علاوه بر این، هر مرحله باید در مدت زمان محدودی انجام شود و باید تعداد مشخصی از مراحل وجود داشته باشد. همچنین مرحله بعدی به مرحله قبلی بستگی دارد. برای مثال میتوانید در اینجا درباره الگوریتمها بیشتر بخوانید . اگر انگلیسی بلد هستید، در اینجا یک انیمیشن فوق العاده TED از دیوید مالان وجود دارد: https://youtu.be/6hfOvs8pY1k اگرچه به طور کلی اطلاعات موجود در ویدیو همان چیزی را در سخنرانی تکرار می کند =).سیستم اعداد باینری
ما 10 انگشت داریم و سیستم اعشاری است. یعنی با استفاده از اعداد 0، 1، 2، 3، 4، 5، 6، 7، 8، 9 هر عددی را هر چقدر هم که بزرگ باشد می توانیم نمایش دهیم. بسته به اینکه عدد در کجای عدد باشد، می تواند به این معنی باشد. چیزهای مختلف: اگر این رقم آخرین باشد، پس در مکان واحدها قرار دارد، عدد ماقبل آخر در مکان ده ها، حتی بیشتر به سمت چپ در مکان صدها قرار دارد و غیره. اساساً هر عددی را می توان به صورت مجموع ارقام نوشت که هر کدام در ده به توان خاصی ضرب می شود. در مورد واحدها - صفر. به عنوان مثال، 1573 = 3*10 0 + 7*10 1 +5*10 2 +1*10 3 . عددی که ارقام در آن ضرب می شوند، پایه سیستم اعداد نامیده می شود. برای سیستم اعشاری، مبنای منطقاً ده است. کامپیوتر هیچ انگشتی ندارد، اما دو حالت وجود دارد: به طور مشروط "جریان جریان دارد" و "جریان جریان ندارد"، صفر و یک. بر این اساس، تمام اعداد (و اطلاعات به طور کلی) در حافظه کامپیوتر فقط از دو رقم تشکیل شده است - 0 و 1. مکان آنها، مانند سیستم اعداد اعشاری، رقم را نشان می دهد. فقط اکنون می توان عدد را به مجموع ارقام ضرب کرد نه در توان های ده، بلکه در توان های دو تجزیه کرد. 0 در باینری = 0 1 در باینری = 1 2 در باینری = 10 7 10 = 111 2 آموزش تبدیل از باینری به اعشاری. احتمالاً قبلاً متوجه شده اید که چگونه این کار انجام می شود - ما به سادگی رقم عدد را که از سمت راست شروع می شود در نظر می گیریم و آن را در پایه به توان مربوط به رقم آن ضرب می کنیم و همه چیز را با هر رقم جمع می کنیم. مثال: بیایید آنالوگ اعشاری عدد باینری 101101 را پیدا کنیم 2 سمت راست ترین = 1*2 0 صفر بعدی = 0*2 1 سومی از سمت راست = 1*2 2 چهارمی = 1*2 3 .. و به همین ترتیب 101101 2 = 1*2 0 + 0*2 1 + 1*2 2 + 1*2 3 + 0*2 4 + 1*2 5 = 1 + 0 + 4 + 8 + 0 + 32 = 45 10 تصور کنید هشت لامپ در یک ردیف چیده شده اند. هر کدام سوئیچ مخصوص به خود را دارند. هر یک از لامپ ها یک تخلیه است. چه چیزی می توانید تصور کنید، اولین سخنرانی را به خاطر بسپارید (چنین دستگاهی در آنجا وجود دارد) یا در اینجا یک ویجت برای شما وجود دارد: http://cdn.cs50.net/2016/x/psets/0/pset0/bulbs.html پخش با آن، سیستم باینری "احساس" آن را تمرین کنید. تبدیل از اعشار به باینری. در اینجا نیز همه چیز بسیار ساده است، اگر اصل را درک کنید. در اینجا ما عدد 57 10 را داریم . برای تبدیل آن به سیستم باینری، باید تعیین کنید که حداکثر توان دو از این عدد تجاوز نمی کند. 2 6 = 64. این به وضوح زیاد است. اما 2 5 = 32. اکنون مهم ترین رقم را تعیین کرده ایم. 32 10= 100000 2 . اکنون به دنبال رقم بعدی هستیم. 57-32 = 25. حالا برای 25 به دنبال توان دو هستیم که از 25 تجاوز نکند. 2 4 = 16. یعنی رقم بعدی ما نیز برابر است با 1. 32+16 = 48 10 = 110000 2 . 57 – 48 = 9. 2 3 = 8، این کمتر از 9 است. یعنی رقم بعدی نیز یک خواهد بود. 32 + 16 + 8 = 56 10 = 111000 2 . 57-56 = 1، یعنی فقط یک توان باقی مانده است، 2 0 . بنابراین 57 10 = 111001 2 . اگر ناگهان چیزی مبهم باقی ماند، میتوانید بیشتر در ویکیکتاب بخوانید، و اگر زبان انگلیسی قوی هستید، در اینجا یک اضافه کوچک به سخنرانی آورده شده است.ASCII
همانطور که در بالا دیدید، کامپیوتر فقط صفر و یک را میفهمد، و حافظه آن را میتوان بهعنوان یک رشته بسیار طولانی از لامپها با سوئیچ نشان داد. ما قبلاً درک کرده ایم که چگونه اعداد را در رایانه نشان دهیم. بقیه اطلاعات چطور؟ نامه ها، عکس ها؟ فرض کنید در الفبای انگلیسی 26 حرف وجود دارد. یعنی از نظر تئوری می توانیم حروف را با اعداد از 0 تا 25 فقط در سیستم باینری نمایش دهیم. سوال زیر مطرح می شود: چگونه می توانیم بفهمیم که حرف کوچک داریم یا بزرگ؟ در مورد علائم نگارشی چطور؟ علائم نامرئی مانند فضاها؟ به طور خلاصه، ما به یک سیستم کدگذاری نیاز داریم، Cap! در دهه 1960، طرح های مختلفی وجود داشت که کاراکترها را رمزگذاری می کردند. فقدان یکنواختی یک مشکل بود و در سال 1963، مؤسسه استانداردهای آمریکا، ANSI، طرح رمزگذاری ASCII (کد استاندارد آمریکایی برای تبادل اطلاعات) را توسعه و معرفی کرد. هر کاراکتر ASCII از هفت بیت یا هفت بیت تشکیل شده است که هر کدام می تواند مقدار 0 یا 1 را داشته باشد. به نظر می رسد که این برای رمزگذاری گفتار نوشتاری انگلیسی کافی است؟ بیایید بشماریم: az - 26 گزینه AZ - 26 گزینه دیگر 0-9 - 10 ,;:~& و سایر علائم نگارشی - 32 و یک فاصله دیگر. مجموع - 95 کاراکتر. 33 گزینه خالی باقیمانده برای به اصطلاح کاراکترهای کنترلی استفاده می شود، مانند تغذیه خط یا بازگشت کالا: https://ru.wikipedia.org/wiki/ASCII#/media/File:ASCII_Code_Chart.svg تمایز بین کاراکترهای 0-9 و مقادیر عددی 0 -9. کاراکترهای 0-9 با مقادیر ASCII 48-57 نشان داده می شوند. جالب است بدانید که چهار بیت سمت راست این مقادیر ASCII نمایش دودویی مقادیر عددی 0-9 هستند. این تا حدودی راه تبدیل بین مقادیر ASCII و مقادیر عددی واقعی آنها را ساده می کند. برنامه نویسی را شروع کنیم؟خراش
بنابراین، خراش. در مورد این زبان برنامه نویسی بصری و دستورات اولیه آن در سخنرانی به شما گفته شد. برای امتحان کردن Scratch برای خودتان، پیوند را دنبال کنید و روی "پیوستن" کلیک کنید. پس از ثبت نام، می توانید برنامه نویسی را به صورت آنلاین شروع کنید. بله، اتفاقا، امروز Scratch تا حدی روسی شده است. با این حال، کمک هنوز به زبان انگلیسی است. در صورت تمایل می توانید بازی کنید و همچنین به کد پروژه های دانشجویی که در سخنرانی نشان داده شده است نگاه کنید. اینجا شیرینی پیکاچو است . یا پروژه ای با تفکیک زباله در ظروف مختلف: https://scratch.mit.edu/projects/71161586/ دیوید و شرکت از شما می خواهند که نگران نباشید اگر فکر می کنید نمی توانید چنین پروژه های پیچیده ای را انجام دهید: این سطح قبلاً به مهارت نیاز دارد. .ورزش
-
برای درک بهتر فرآیندهایی که در Scratch اتفاق میافتند، میتوانید کد منبع چندین پروژه را از اینجا دانلود کنید . بازی کن و ببین یادگیری کد شخص دیگری بسیار مفید است. این یکی از بهترین راهها برای یافتن آنچه در داخل آن برنامهها وجود دارد است که خودتان هنوز به بلوغ نرسیدهاید. هنگامی که شروع به درک نحوه عملکرد این برنامه ها کردید، می توانید با خیال راحت ادامه دهید.
-
حالا وقت آن است که خودتان کاری انجام دهید. چالش این است که سرگرم شوید و در عین حال یک پروژه کوچک را از ابتدا اجرا کنید. این می تواند انیمیشن، بازی، اکشن تعاملی باشد.
- این برنامه باید حداقل دو جن (شخصیت، تصویر) داشته باشد و یکی از آنها قطعاً نباید گربه = باشد.
- حداقل باید سه اسکریپت (اکشن) وجود داشته باشد.
- حداقل یک شرط، یک حلقه و یک متغیر باید اجرا شود.
- حداقل یک صدا باید در برنامه گنجانده شود.
GO TO FULL VERSION