Dasturlash asoslari bo'yicha Garvard ma'ruzalarini hali ko'rmaganlar bu yerga kiring: https://javarush.com/quests/QUEST_HARVARD_CS50 =)
Kirish. CS50 Kursning tuzilishi
Do'stlar! Kirish qismida biz sizga CS50 tuzilishi haqida eslatib o'tamiz (yoki kimga aytsa ham). Kurs 12 hafta davom etadi. Har haftada ikkita ma'ruza, shuningdek, barcha turdagi seminarlar va tushuntirishlar mavjud. Ma’ruzalar tayyor bo‘lgach, shunga o‘xshash maqolalarni e’lon qilamiz. Unda ma'ruzalarning qisqacha tavsifi, "qisqa ma'lumotlar" bo'yicha eslatmalar va qo'shimcha ma'lumotlar, shuningdek, amaliy topshiriqlarning tarjimalari mavjud. Nolinchi hafta ma'ruzalari quyidagi masalalarni qamrab oldi:- Ikkilik sanoq sistemasi.
- ASCII
- Algoritmlar va algoritmik fikrlash
- Kompilyatorlar
- Scratch tili
- Mantiqiy ifodalar
- Shartlar
- Velosipedlar
- O'zgaruvchilar
- Funksiyalar
- Massivlar
- Oqimlar
- Voqealar
- Axborotni raqamli shaklda qanday ifodalash mumkinligini tushuning.
- Asosiy dasturiy ta'minot konstruktsiyalari va tushunchalarini o'rganing.
- Scratch yordamida o'z animatsiyangizni, o'yiningizni yoki interaktiv faoliyatingizni yarating.
- Do'stlaringizni hayratda qoldiring =).
CS50 0-hafta (1-2-ma'ruza): eslatmalar
Algoritmlar
Umid qilamizki, siz allaqachon ma'ruzalarni tomosha qildingiz va algoritm muammolarni hal qilishni (turli xil masalalar, matematik yoki "N metro stantsiyasiga qanday borish kerak") bosqichlarga bo'lishini tushundingiz. Bundan tashqari, har bir qadam cheklangan vaqt ichida bajarilishi kerak va ma'lum miqdordagi qadamlar bo'lishi kerak. Bundan tashqari, keyingi bosqich avvalgisiga bog'liq. Algoritmlar haqida ko'proq o'qishingiz mumkin, masalan, bu erda . Agar siz ingliz tilini bilsangiz, bu erda Devid Malan tomonidan yaratilgan ajoyib TED animatsiyasi: https://youtu.be/6hfOvs8pY1k Umuman olganda, videodagi ma'lumotlar ma'ruzada buni takrorlaydi =).Ikkilik sanoq sistemasi
Bizda 10 ta barmoq bor va tizim o'nlikdir. Ya'ni, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 raqamlari yordamida qanchalik katta bo'lishidan qat'i nazar, istalgan sonni ifodalashimiz mumkin. har xil narsalar: agar bu raqam oxirgi bo'lsa, u birliklar o'rnida, oxirgidan oldingi raqam o'nliklar qatorida, hatto chap tomonda yuzliklar qatorida va hokazo. Asosan, har qanday raqam raqamlar yig'indisi sifatida yozilishi mumkin, ularning har biri ma'lum bir darajaga o'nga ko'paytiriladi. Birliklar holatida - nolga teng. Masalan, 1573 = 3*10 0 + 7*10 1 +5*10 2 +1*10 3 . Raqamlar ko'paytiriladigan songa sanoq tizimining asosi deyiladi. O'nlik sistema uchun asos mantiqan o'nta. Kompyuterning barmoqlari yo'q, lekin ikkita holat mavjud: shartli ravishda "oqim oqadi" va "oqim oqmaydi", nol va bitta. Shunga ko'ra, kompyuter xotirasidagi barcha raqamlar (va umuman ma'lumotlar) faqat ikkita raqamdan iborat - 0 va 1. Ularning joylashuvi, o'nlik sanoq sistemasidagi kabi, raqamni ko'rsatadi. Faqat endi raqamni o'nning darajasiga emas, balki ikkining darajasiga ko'paytiriladigan raqamlar yig'indisiga ajratish mumkin. 0 binary = 0 1 ikkilik = 1 2 ikkilik = 10 7 10 =111 2 Ikkilikdan o'nlikka o'tkazishni o'rganing. Bu qanday amalga oshirilishini allaqachon tushungan bo'lsangiz kerak - biz shunchaki raqamning eng o'ngdan boshlab raqamini olamiz va uni bazaga uning raqamiga mos keladigan quvvatga ko'paytiramiz va har bir raqam bilan hamma narsani qo'shamiz. Misol: 101101 ikkilik sonining o'nlik analogini topamiz 2 Eng o'ngdagisi = 1*2 0 Keyingi nol = 0*2 1 O'ngdan uchinchisi = 1*2 2 To'rtinchisi = 1*2 3 .. va shunga o'xshash 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 Bir qatorda joylashgan sakkizta lampochkani tasavvur qiling. Ularning har biri o'z kalitiga ega. Lampochkalarning har biri zaryadsizlanishdir. Siz nimani tasavvur qila olasiz, birinchi ma'ruzani eslang (u erda shunday qurilma bor) yoki bu erda siz uchun vidjet: http://cdn.cs50.net/2016/x/psets/0/pset0/bulbs.html Play u bilan, uni "his" mashq qiling ikkilik tizim. O'nlikdan ikkilik tizimga o'tkazish. Bu erda ham hamma narsa juda oddiy, agar siz mohiyatni tushunsangiz. Bu erda bizda 57 10 raqami bor . Uni ikkilik tizimga aylantirish uchun ikkita maksimal quvvat bu raqamdan oshmasligini aniqlashingiz kerak. 2 6 = 64. Bu juda ko'p. Lekin 2 5 = 32. Endi biz eng muhim raqamni aniqladik. 32 10= 100000 2 . Endi biz keyingi raqamni qidirmoqdamiz. 57-32 = 25. Endi 25 uchun biz ikkining 25 dan oshmaydigan darajasini qidiramiz. 2 4 = 16. Bu bizning keyingi raqamimiz ham 1 ga teng ekanligini anglatadi. 32+16 = 48 10 = 110000 2 . 57 – 48 = 9. 2 3 = 8, bu 9 dan kichik. Bu keyingi raqam ham bitta bo'lishini anglatadi. 32 + 16 + 8 = 56 10 = 111000 2 . 57-56 = 1, ya'ni faqat bitta kuch qoldi, 2 0 . Shunday qilib, 57 10 = 111001 2 . Agar to'satdan biror narsa tushunarsiz bo'lib qolsa, siz ko'proq Vikikitobda o'qishingiz mumkin va agar siz ingliz tilida kuchli bo'lsangiz, ma'ruzaga kichik bir qo'shimcha.ASCII
Kompyuter faqat nol va birlarni tushunadi va uning xotirasi siz yuqorida ko'rganingizdek, kalitlari bo'lgan juda uzun lampochkalar qatori sifatida ifodalanishi mumkin. Biz allaqachon kompyuterda raqamlarni qanday ifodalashni tushunamiz. Qolgan ma'lumotlar haqida nima deyish mumkin? Xatlar, rasmlar? Aytaylik, ingliz alifbosida 26 ta harf bor. Ya'ni, nazariy jihatdan biz 0 dan 25 gacha raqamlar bilan harflarni faqat ikkilik tizimda ifodalashimiz mumkin. Quyidagi savol tug'iladi: bizda kichik yoki katta harf borligini qanday tushunish mumkin? Tinish belgilari haqida nima deyish mumkin? Bo'shliqlar kabi ko'rinmas belgilar? Qisqasi, bizga kodlash tizimi kerak, Cap! 1960-yillarda belgilarni kodlaydigan juda ko'p turli xil sxemalar mavjud edi. Bir xillikning yo'qligi muammo bo'lib chiqdi va 1963 yilda Amerika Standartlar Instituti, ANSI, ASCII (American Standard Code for Information Interchange) kodlash sxemasini ishlab chiqdi va joriy qildi. Har bir ASCII belgisi etti bit yoki etti bitdan iborat bo'lib, ularning har biri 0 yoki 1 qiymatini qabul qilishi mumkin. 7 bit ikkilik tizimda 0 dan 127 gacha raqamlarni o'z ichiga olishi mumkin, ya'ni bizda belgilarni kodlash uchun 128 ta raqam mavjud. Bu yozma ingliz nutqini kodlash uchun etarli bo'lib tuyuladimi? Hisoblaymiz: az - 26 variant AZ - 26 yana 0-9 - 10 ,;:~& va boshqa tinish belgilari - 32 Va yana bitta bo'sh joy. Jami - 95 belgi. Qolgan 33 ta boʻsh opsiya qatorni taslim qilish yoki karetani qaytarish kabi boshqaruv belgilar deb ataladigan belgilar uchun ishlatiladi: https://ru.wikipedia.org/wiki/ASCII#/media/File:ASCII_Code_Chart.svg Buni farqlash muhim. 0-9 belgilar va raqamli qiymatlar 0-9. 0-9 belgilar ASCII 48-57 qiymatlari bilan ifodalanadi. Shunisi qiziqki, ushbu ASCII qiymatlarining eng o'ngdagi to'rttasi 0-9 raqamli qiymatlarning ikkilik ko'rinishlaridir. Bu ASCII qiymatlari va ularning haqiqiy raqamli qiymatlari o'rtasida konvertatsiya qilish usulini biroz soddalashtiradi. Dasturlashni boshlaylikmi?Scratch
Shunday qilib, Scratch. Ma'ruzada sizga ushbu vizual dasturlash tili va uning asosiy buyruqlari haqida gapirib berildi. Scratch-ni o'zingiz sinab ko'rish uchun havolaga o'ting va "Qo'shilish" tugmasini bosing. Ro'yxatdan o'tganingizdan so'ng, siz onlayn dasturlashni boshlashingiz mumkin. Ha, aytmoqchi, bugungi kunda Scratch qisman ruslashtirilgan. Biroq, yordam hali ham ingliz tilida. Agar xohlasangiz, siz o'ynashingiz va ma'ruzada ko'rsatilgan talaba loyihalari kodini ko'rishingiz mumkin. Mana Pikachu pastry Catch . Yoki chiqindilarni turli idishlarga saralash loyihasi: https://scratch.mit.edu/projects/71161586/ Devid va kompaniya sizdan bunday murakkab loyihalarni amalga oshira olmayman deb o'ylayotgan bo'lsangiz, tashvishlanmaslikni so'raydi: bu daraja allaqachon ma'lum mahorat talab qiladi. .Mashq qilish
-
Scratch-da sodir bo'ladigan jarayonlarni yaxshiroq tushunish uchun siz bir nechta loyihalar uchun manba kodini bu yerdan yuklab olishingiz mumkin . O'ynang va ko'ring. Birovning kodini o'rganish juda foydali. Bu siz hali o'rganmagan dasturlarning ichida nima borligini aniqlashning eng yaxshi usullaridan biridir. Ushbu ilovalar qanday ishlashini tushunishni boshlaganingizdan so'ng, xavfsiz davom etishingiz mumkin.
-
Endi o'zingiz biror narsa qilish vaqti keldi. Qiyinchilik kichik loyihani noldan amalga oshirish bilan birga zavqlanishdir. Bu animatsiya, o'yin, interaktiv harakat bo'lishi mumkin.
- Dasturda kamida ikkita sprit (belgilar, tasvirlar) bo'lishi kerak va ulardan biri mushuk bo'lmasligi kerak =).
- Kamida uchta skript (harakat) bo'lishi kerak.
- Kamida bitta shart, bitta tsikl va bitta o'zgaruvchi bajarilishi kerak.
- Dasturga kamida bitta tovush kiritilishi kerak.
GO TO FULL VERSION