מי שעדיין לא צפה בהרצאות של הרווארד על יסודות התכנות, עבור לכאן: 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 Play עם זה, תרגל "להרגיש" את זה מערכת בינארית. המרה מעשרוני לבינארי. גם כאן הכל מאוד פשוט, אם אתה מבין את המהות. כאן יש לנו את המספר 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, רק במערכת הבינארית. נשאלת השאלה הבאה: כיצד נוכל להבין אם יש לנו אות קטנה או גדולה? מה לגבי סימני פיסוק? סימנים בלתי נראים כמו רווחים? בקיצור, אנחנו צריכים מערכת קידוד, קאפ! בשנות ה-60, היו תוכניות רבות ושונות שקודדו תווים. חוסר האחידות התברר כבעיה, ובשנת 1963, מכון התקנים האמריקאי, ANSI, פיתח והציג את ערכת הקידוד ASCII (American Standard Code for Information Interchange). כל תו ASCII מורכב משבעה סיביות, או שבעה סיביות, שכל אחת מהן יכולה לקבל את הערך 0 או 1. 7 סיביות יכולות להחזיק מספרים מ-0 עד 127 בבינארי, כלומר יש לנו 128 מספרים לקידוד תווים. נראה שזה מספיק כדי לקודד דיבור באנגלית כתוב? בואו נספור: 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 הוא בחלקו Russified. עם זאת, העזרה עדיין באנגלית. אם תרצו, תוכלו לשחק וגם להסתכל בקוד של פרויקטים של סטודנטים שהודגמו בהרצאה. הנה תפיסת מאפה פיקאצ'ו . או פרויקט עם מיון פסולת למיכלים שונים: https://scratch.mit.edu/projects/71161586/ דוד והחברה מבקשים ממך לא לדאוג אם אתה חושב שאתה לא יכול לעשות פרויקטים מורכבים כל כך: הרמה הזו כבר דורשת מיומנות מסוימת .תרגיל
-
כדי להבין טוב יותר את התהליכים שקורים ב-Scratch, אתה יכול להוריד את קוד המקור של מספר פרויקטים מכאן . תשחק ותראה. לימוד קוד של מישהו אחר הוא מאוד שימושי. זו אחת הדרכים הטובות ביותר לגלות מה יש בתוך אותן תוכניות שאתה בעצמך עדיין לא התבגרת אליהן. ברגע שתתחיל להבין איך יישומים אלה עובדים, אתה יכול להמשיך הלאה בבטחה.
-
עכשיו הגיע הזמן לעשות משהו בעצמך. האתגר הוא ליהנות תוך יישום פרויקט קטן מאפס. זה יכול להיות אנימציה, משחק, פעולה אינטראקטיבית.
- התוכנית חייבת להכיל לפחות שני ספרייטים (דמויות, תמונות), ואחד מהם בהחלט לא חייב להיות חתול =).
- חייבים להיות לפחות שלושה סקריפטים (פעולות).
- יש לבצע לפחות תנאי אחד, לולאה אחת ומשתנה אחד.
- יש לכלול לפחות צליל אחד בתוכנית.
GO TO FULL VERSION