1 00:00:00,000 --> 00:00:05,410 2 00:00:05,410 --> 00:00:07,640 >> דאג LLOYD: בסדר, כל כך בואו נדבר על לולאות. 3 00:00:07,640 --> 00:00:10,015 אז לולאות הן סוג של מגניבים משום שהם מאפשרים התכנית שלך 4 00:00:10,015 --> 00:00:12,050 לבצע שורות קוד שוב ושוב ושוב. 5 00:00:12,050 --> 00:00:15,600 שוב ושוב, מבלי להעתיק ולהדביק או אחר לחזור עליהם. 6 00:00:15,600 --> 00:00:17,630 ישנם שלוש גדולים סוגים של לולאות תראו. 7 00:00:17,630 --> 00:00:21,010 בטח יש לך הזדמנות להשתמש כל אחד כפי שאתה התקדמות דרך CS50. 8 00:00:21,010 --> 00:00:22,940 חלק מהלולאות הללו הם די מוכר לך מהתחלה, 9 00:00:22,940 --> 00:00:25,814 אז שוב, כפי שעשינו עם תנאי, אנחנו הכנסנו אותם זה לצד זה 10 00:00:25,814 --> 00:00:28,930 אם יש אנלוגיה אנחנו יכולים לצייר. 11 00:00:28,930 --> 00:00:33,600 >> הראשון הוא לנצח מהתחלה, אשר משווה לזמן (אמיתי). 12 00:00:33,600 --> 00:00:35,390 זה מה שאנחנו קוראים ללולאה אינסופית. 13 00:00:35,390 --> 00:00:38,560 שורות קוד בין מתולתל פלטה, כמו חלקי פאזל 14 00:00:38,560 --> 00:00:41,190 נכון שבתוך C של לחסום לנצח, 15 00:00:41,190 --> 00:00:45,290 יבצע שוב ושוב מלמעלה למטה, שוב ושוב ושוב, 16 00:00:45,290 --> 00:00:46,085 לנצח. 17 00:00:46,085 --> 00:00:48,710 אחרי הכל, אם אתה זוכר שלנו דיון בביטויים בוליאנית, 18 00:00:48,710 --> 00:00:51,060 אמיתי הוא תמיד נכון. 19 00:00:51,060 --> 00:00:53,250 אז אם אנחנו עושים משהו כל כך ארוך כמו אמיתי 20 00:00:53,250 --> 00:00:58,227 הוא true-- זה נראה קצת silly-- אמיתי תמיד נכון, כך שזה תמיד ירוץ. 21 00:00:58,227 --> 00:01:00,060 זה ירוץ לנצח ו לנצח נצחים עד ש 22 00:01:00,060 --> 00:01:02,900 למצוא דרך לפרוץ אותו עם הצהרת הפסקה, ששוב, 23 00:01:02,900 --> 00:01:06,350 ראינו לפני קצת בזמן שאנחנו דיברו על מתג. 24 00:01:06,350 --> 00:01:08,725 >> או בדרך אחרת פשוט להורגנו תכנית, שדרך אגב, 25 00:01:08,725 --> 00:01:11,110 אם אי פעם אתה מוצא את עצמך ב מצב עם לולאה אינסופית 26 00:01:11,110 --> 00:01:13,484 ואתה לא יודע איך להפסיק התכנית שלך מלפעול. 27 00:01:13,484 --> 00:01:16,527 רק פגע שליטה ו- C ו שיהרוג את התכנית שלך בשבילך. 28 00:01:16,527 --> 00:01:18,360 אבל זה, שוב, הוא נקרא לולאה אינסופית. 29 00:01:18,360 --> 00:01:19,818 זה לולאה שתפעל לנצח. 30 00:01:19,818 --> 00:01:22,570 31 00:01:22,570 --> 00:01:25,610 עכשיו, בזמן שלולאות אינן תמיד אינסופי, כי גם 32 00:01:25,610 --> 00:01:27,880 אנחנו יכולים להחליף את וליאנית ביטוי עם משהו 33 00:01:27,880 --> 00:01:29,867 קצת יותר שימושי מאשר רק אמיתי. 34 00:01:29,867 --> 00:01:30,950 אז הנה דוגמא נוספת. 35 00:01:30,950 --> 00:01:34,600 בעוד וכמה בוליאנית ביטוי ופלטה אז מתולתלת. 36 00:01:34,600 --> 00:01:38,310 זה פחות או יותר דומה לחזור עד, מהתחלה. 37 00:01:38,310 --> 00:01:40,700 למרות בשני, אני להסביר את ההבדל. 38 00:01:40,700 --> 00:01:44,310 >> אז ב- C, אם ביטוי בוליאני בתוך בעוד הלולאה 39 00:01:44,310 --> 00:01:47,980 מעריך לנכון, הקווים קוד בין הסוגריים המסולסלים 40 00:01:47,980 --> 00:01:51,900 יבצע שוב ושוב שוב ושוב ושוב, עד ביטוי בוליאני 41 00:01:51,900 --> 00:01:55,174 מעריך שווא. 42 00:01:55,174 --> 00:01:57,340 אז לדוגמא, ייתכן ש יש סוג מסוים של דלפק. 43 00:01:57,340 --> 00:02:01,440 אז אומר לך בתחילת לולאה זה אומרת int x שווה לאפס. 44 00:02:01,440 --> 00:02:06,370 בעוד x הוא פחות מ -100, לעשות כמה דברים שבתוך סוגריים מסולסלים, 45 00:02:06,370 --> 00:02:10,570 אז בסופו של הלולאה שלך, שאתה אומר x בתוספת בתוספת, אתה הגדלה x. 46 00:02:10,570 --> 00:02:13,360 בסופו של x יקבל 100 ואתה יהיה 47 00:02:13,360 --> 00:02:15,760 להפסיק כי המצב x הוא פחות מ -100 48 00:02:15,760 --> 00:02:19,416 כבר לא יהיה נכון ברגע שx שווה ל -100. 49 00:02:19,416 --> 00:02:21,820 100 הוא לא פחות מ -100. 50 00:02:21,820 --> 00:02:25,870 >> עכשיו מבלבל במקצת, ההתנהגות בלוק השריטה הוא הפוך. 51 00:02:25,870 --> 00:02:29,110 אז להיות זהיר מאוד אם זה ההסתערות הראשונה שלך לשימוש בלולאות. 52 00:02:29,110 --> 00:02:33,630 בעיקרון, חוזר עד הבלוק בScratch 53 00:02:33,630 --> 00:02:35,970 יחזור על משהו שוב ושוב ושוב, 54 00:02:35,970 --> 00:02:40,460 עד הביטוי, בוליאנית ביטוי במשושה הוא אמיתי. 55 00:02:40,460 --> 00:02:43,860 אז זה ימשיך לעשות זה עד שזה נכון. 56 00:02:43,860 --> 00:02:48,881 בינתיים, תהיה תוך הלולאה תמשיך לעשות את זה עד שהוא כוזב. 57 00:02:48,881 --> 00:02:51,630 אז הם די דומים, אבל יש שהבחנה קטנה רק 58 00:02:51,630 --> 00:02:55,140 להיות זהיר של במיוחד כמו שאתה עושה ההסתערות הראשונה שלך ממעבר 59 00:02:55,140 --> 00:02:58,149 לגרד לג. 60 00:02:58,149 --> 00:03:00,190 הסוג של הלולאה הבא הוא בעצם די דומה. 61 00:03:00,190 --> 00:03:02,860 זה נקרא לעשות בזמן לולאה. 62 00:03:02,860 --> 00:03:07,060 לולאה זו תבצע את כל הקווים קוד בין הסוגריים המסולסלים פעם, 63 00:03:07,060 --> 00:03:09,530 ואז זה יהיה לבדוק ביטוי בוליאני. 64 00:03:09,530 --> 00:03:11,700 אם ביטוי בוליאני מעריך לנכון, 65 00:03:11,700 --> 00:03:14,340 זה יחזור וחזור תהליך זה שוב ושוב 66 00:03:14,340 --> 00:03:17,690 ושוב, עד בוליאנית ביטוי מעריך שווא. 67 00:03:17,690 --> 00:03:23,370 אז לולאה זו, בניגוד ללולאה בזמן, היא מובטח לרוץ לפחות פעם אחת. 68 00:03:23,370 --> 00:03:26,080 זה יכול להיות די שימושי. 69 00:03:26,080 --> 00:03:28,011 >> לבסוף, יש לנו ללולאה. 70 00:03:28,011 --> 00:03:30,010 ללולאות הם סוג של מבחינה תחבירית לא אטרקטיבי 71 00:03:30,010 --> 00:03:32,330 ויש הרבה הולכים כאן, כך לשאת איתי 72 00:03:32,330 --> 00:03:34,640 כפי שאנו מנסים ולשבור חתיכות אלה בנפרד. 73 00:03:34,640 --> 00:03:36,810 בדרך כלל, במקרה השימוש של ללולאה הוא 74 00:03:36,810 --> 00:03:40,136 רוצה לחזור על משהו מספר מסוים של פעמים. 75 00:03:40,136 --> 00:03:42,010 בדוגמא זו כאן, יש לי הבלוק חוזר 76 00:03:42,010 --> 00:03:44,010 מהתחלה, שהוא מקביל ללולאה 77 00:03:44,010 --> 00:03:47,340 ב- C, חוזר משהו 10 פעמים. 78 00:03:47,340 --> 00:03:49,250 וללולאה ב השמאל שם, ש 79 00:03:49,250 --> 00:03:51,410 היא ארבע לולאה ש היה עושה את אותו הדבר. 80 00:03:51,410 --> 00:03:52,570 זה הייתי הולך 10 פעמים. 81 00:03:52,570 --> 00:03:56,720 ספירה מאפס, אנחנו להגדיל לעבור כל הלולאה. 82 00:03:56,720 --> 00:03:59,220 ואנחנו ממשיכים לעשות את זה עד הוא אני פחות מ -10. 83 00:03:59,220 --> 00:04:00,134 >> אז מה קורה? 84 00:04:00,134 --> 00:04:01,550 יש המון קוד שם. 85 00:04:01,550 --> 00:04:03,424 בואו לשבור אותו ל מה שקורה צעד 86 00:04:03,424 --> 00:04:05,684 צעד כפי שאנו לחפור ללולאה. 87 00:04:05,684 --> 00:04:08,350 הדבר הראשון שקרה הוא משתנה הדלפק הוא מרכז. 88 00:04:08,350 --> 00:04:11,970 הכל מהשמאל לכי ראשון פסיק בתוך הסוגריים 89 00:04:11,970 --> 00:04:12,970 הוא הוצא להורג. 90 00:04:12,970 --> 00:04:15,180 במקרה זה, אנחנו אומר int i שווה 0. 91 00:04:15,180 --> 00:04:18,709 הכרזה משתנה חדש בשם i, שמשתנים הוא מספר שלם סוג 92 00:04:18,709 --> 00:04:22,570 ואנחנו אומרים את הערך בתוך משתנה כי הוא הולך להיות אפס. 93 00:04:22,570 --> 00:04:25,480 >> הדבר השני שאנחנו עושים הוא לאחר מכן, אנו מעריכים באופן מיידי 94 00:04:25,480 --> 00:04:26,750 ביטוי בוליאני. 95 00:04:26,750 --> 00:04:30,100 ביטוי בוליאני הוא ב אמצע של שתי נקודה-פסיק. 96 00:04:30,100 --> 00:04:31,360 אני הוא פחות מ -10. 97 00:04:31,360 --> 00:04:32,410 זה נכון כאן, נכון? 98 00:04:32,410 --> 00:04:36,030 אנחנו פשוט אמרתי הוא שאני שווה אפס, וכך הוא 0 פחות מ -10, 99 00:04:36,030 --> 00:04:38,040 וכדי שהמצב נכון ועכשיו אנחנו יהיו 100 00:04:38,040 --> 00:04:40,640 להמשיך לבצע את הגוף של הלולאה. 101 00:04:40,640 --> 00:04:41,480 אם זה היה שקר. 102 00:04:41,480 --> 00:04:46,380 אם, למשל, אמרתי במקום אני שווה 0 שם אמרתי שאני שווה 15, 103 00:04:46,380 --> 00:04:47,820 int i שווה 15. 104 00:04:47,820 --> 00:04:51,450 ובכן 15 הוא לא פחות מ -10, כדי ש אף פעם לא היה נכנסים לגוף של הלולאה 105 00:04:51,450 --> 00:04:55,450 כי ביטוי בוליאני שם היה להעריך שהוא שקרי. 106 00:04:55,450 --> 00:04:59,060 >> לאחר שאנחנו עוברים מלמעלה למטה, אנו נתקלים כי סגירת סד מתולתל, 107 00:04:59,060 --> 00:05:00,830 דבר שלישי שקורה. 108 00:05:00,830 --> 00:05:03,840 משתנה הדלפק הוא מוגדל, או לייתר דיוק, את הקווים 109 00:05:03,840 --> 00:05:07,790 קוד של הצהרה לאחר פסיק שני בתוך 110 00:05:07,790 --> 00:05:10,500 לסוגר לולאות מבוצעת. 111 00:05:10,500 --> 00:05:13,250 אז אנחנו מתחילים על ידי אומר int i שווה 0. 112 00:05:13,250 --> 00:05:15,770 אז לבדוק אם או לא ביטוי בוליאני הוא אמיתי. 113 00:05:15,770 --> 00:05:17,469 0 הוא פחות מ, 10 כך שזה נכון. 114 00:05:17,469 --> 00:05:19,510 אז אנחנו הולכים להמשיך לגוף הלולאה. 115 00:05:19,510 --> 00:05:22,676 דברים יקרה בתוך הלולאה, ו כאשר אנו נתקלים שבמתולתלים סגירה 116 00:05:22,676 --> 00:05:25,660 הסד, הדבר הבא שאנחנו אנחנו זה להגיד שתוספת, בתוספת. 117 00:05:25,660 --> 00:05:28,860 הייתי אפס כרגע הוא שאני אחד. 118 00:05:28,860 --> 00:05:33,100 לאחר מכן, אנחנו שוב לבדוק את הערך של ביטוי בוליאני באמצע. 119 00:05:33,100 --> 00:05:34,900 אחת מהן הוא פחות מ -10. 120 00:05:34,900 --> 00:05:38,325 אז אנחנו נעבור את זה לעבד שוב ושוב. 121 00:05:38,325 --> 00:05:40,590 אנחנו נגיע לסגירה סד מתולתל שוב. 122 00:05:40,590 --> 00:05:44,090 אנחנו להגדיל אני מ 1 עד 2 ו2-3. 123 00:05:44,090 --> 00:05:48,290 וכן הלאה וכן הלאה וכן הלאה, עד ש סופו של דבר הערך של i הופך 10. 124 00:05:48,290 --> 00:05:49,950 האם 10 פחות מ -10? 125 00:05:49,950 --> 00:05:51,200 מס ' 126 00:05:51,200 --> 00:05:53,800 ספירה מ 0, אנחנו כבר נעלמו עד 10 חזרות של לולאה. 127 00:05:53,800 --> 00:05:57,204 אנחנו כבר חזרתי 10 פעמים, פשוט כפי שעשינו בגוש Scratch. 128 00:05:57,204 --> 00:05:59,370 ואז זה בעצם תהליך לארבע לולאה. 129 00:05:59,370 --> 00:06:01,630 >> עכשיו לוקח מן קוד בפועל ולשים אותו 130 00:06:01,630 --> 00:06:05,120 רק כמה הצהרות כלליות בסיסיות. 131 00:06:05,120 --> 00:06:06,550 הנה מה שקורה. 132 00:06:06,550 --> 00:06:09,290 כל הדוחות ב להתחיל מבוצעים ראשון. 133 00:06:09,290 --> 00:06:11,260 אולי יש לך יותר מפעם אחת. 134 00:06:11,260 --> 00:06:13,440 לאחר מכן, ביטוי בוליאני מסומן. 135 00:06:13,440 --> 00:06:17,850 אם הביטוי מעריך לנכון, לבצע את גוף לולאת פעם אחת. 136 00:06:17,850 --> 00:06:21,060 אם הביטוי מעריך לכוזב, שנסיים. 137 00:06:21,060 --> 00:06:23,040 אנחנו לא לבצע גוף של הלולאה בכל. 138 00:06:23,040 --> 00:06:25,530 אחרי שהוצאנו להורג גוף הלולאה פעם אחת, 139 00:06:25,530 --> 00:06:29,487 אז אנחנו עושים את מה שהוא ב חלק תוספת שם. 140 00:06:29,487 --> 00:06:31,820 שהיא בדרך כלל הולכת להיות משהו כמו שתוספת, בתוספת 141 00:06:31,820 --> 00:06:34,510 או משהו כזה, ש משנה משתנה דלפק. 142 00:06:34,510 --> 00:06:37,390 ואז, אחרי שתוספת, ש לבדוק את הביטוי שוב 143 00:06:37,390 --> 00:06:41,120 וחזור על שלבים אלה שוב ושוב ושוב, עד הביטוי הוא 144 00:06:41,120 --> 00:06:42,890 כבר לא נכון. 145 00:06:42,890 --> 00:06:44,469 >> אז מה הם המקרים השימוש ללולאה? 146 00:06:44,469 --> 00:06:46,760 השתמשו להשתמש בלולאה בזמן, כאשר אתה רוצה לולאה לחזור 147 00:06:46,760 --> 00:06:51,200 מספר לא ידוע של פעמים, אבל זה אולי לא יכול להפעיל את כל. 148 00:06:51,200 --> 00:06:53,940 דוגמא נפוצה מאוד של בשימוש בעת לולאה 149 00:06:53,940 --> 00:06:56,480 הוא להפעיל את בקרת הזרימה למשחק. 150 00:06:56,480 --> 00:06:59,040 אתה אולי לא יודע כמה זמן משתמש הולך להיות משחק, 151 00:06:59,040 --> 00:07:01,440 אבל אתה רוצה לשמור עושה את אותו הדבר. 152 00:07:01,440 --> 00:07:04,970 עדכון העמדות שדונים שונים על הלוח. 153 00:07:04,970 --> 00:07:07,490 אתה רוצה לשמור על דברים נע בכל העת, 154 00:07:07,490 --> 00:07:09,110 אבל אתה לא יודע מתי משתמש הוא הולך להפסיק לשחק 155 00:07:09,110 --> 00:07:10,450 או כאשר הם הולכים נגמרים של חיי. 156 00:07:10,450 --> 00:07:12,741 אז לולאה בזמן שהוא באמת טוב למשהו כזה. 157 00:07:12,741 --> 00:07:14,130 זה מקרה שימוש טוב. 158 00:07:14,130 --> 00:07:16,230 >> למטלות תוך לולאה, זה די דומה. 159 00:07:16,230 --> 00:07:19,746 אתה רוצה לולאה לחזור ידועה מספר פעמים, אבל לפחות פעם אחת. 160 00:07:19,746 --> 00:07:22,370 אתה יכול להשתמש בזה למשחק מדי, אבל במקרה שימוש נפוץ מאוד 161 00:07:22,370 --> 00:07:24,420 הוא להציג הודעה למשתמש עבור קלט. 162 00:07:24,420 --> 00:07:28,609 באופן כללי, אפשר לומר משהו כמו, לתת לי מספר חיובי, 163 00:07:28,609 --> 00:07:30,650 ואתה עלול לשים את זה בתוך לולאה לעשות בזמן. 164 00:07:30,650 --> 00:07:33,900 אז זה תמיד יהיה לשאול אותם ב לפחות פעם אחת למספר חיובי. 165 00:07:33,900 --> 00:07:36,850 אם הם נותנים לך מספר חיובי, אתה עלול לשבור את הלולאה. 166 00:07:36,850 --> 00:07:37,599 ייתכן שאתה עשית. 167 00:07:37,599 --> 00:07:39,900 ביטוי בוליאני ב לעשות בזמן עשוי להיות שגוי. 168 00:07:39,900 --> 00:07:41,137 >> ואתה לא שואל אותם שוב. 169 00:07:41,137 --> 00:07:44,470 אם הם נותנים לך מספר שלילי שבי הם הקלידו מילה או משהו ש 170 00:07:44,470 --> 00:07:46,630 לא ממש שימושי ל לך, אתה יכול להשתמש 171 00:07:46,630 --> 00:07:49,770 אל תוך הלולאה לחזור ולעשות זה שוב ושוב ושוב. 172 00:07:49,770 --> 00:07:52,410 אתה בהחלט רוצה לשאול שלהם לתת לך מספר אחת, 173 00:07:52,410 --> 00:07:56,350 אבל אתה לא יודע כמה פעמים לאחר שהם עלולים להיות מזיקים. 174 00:07:56,350 --> 00:08:00,540 וכך לעשות בזמן זה שימוש גדול מקרה ללהציג הודעה למשתמש עבור קלט. 175 00:08:00,540 --> 00:08:03,060 וללולאות להשתמש מקרה בדרך כלל הוא כאשר 176 00:08:03,060 --> 00:08:06,230 אתה רוצה לחזור על לולאה מספר בדיד פעמים, 177 00:08:06,230 --> 00:08:08,230 לא אם כי ייתכן יודע את מספר הפעמים 178 00:08:08,230 --> 00:08:10,040 רגע התכנית עוברת הידור. 179 00:08:10,040 --> 00:08:15,510 >> כך למשל, אולי יש לך תכנית שבו אתה תנחה את המשתמש למספר. 180 00:08:15,510 --> 00:08:17,660 והם נכנסים 100. 181 00:08:17,660 --> 00:08:20,510 ולאחר מכן שלך ללולאה במקרה שמפעיל 100 פעמים. 182 00:08:20,510 --> 00:08:22,480 או שאולי הם נכנסים 1,000 בתכנית שלך 183 00:08:22,480 --> 00:08:24,570 ולאחר מכן להפעיל את הלולאה 1,000 פעמים. 184 00:08:24,570 --> 00:08:26,987 זה מספר מסוים של פעמים. 185 00:08:26,987 --> 00:08:28,820 הם לא בהכרח יודע מה מספר ש 186 00:08:28,820 --> 00:08:31,010 הוא תכנית רגע הידור. 187 00:08:31,010 --> 00:08:35,010 זה לא כמו לולאה בזמן איפה זה יכול להיות אינסופי. 188 00:08:35,010 --> 00:08:37,127 זה די מספר שאתה פשוט לא יודע. 189 00:08:37,127 --> 00:08:39,210 עכשיו למרות שיש לי כל המקרים שימוש אלה תוארו, 190 00:08:39,210 --> 00:08:41,501 עליך לדעת כי ביפה הרבה בכל מצב, 191 00:08:41,501 --> 00:08:44,110 אתה יכול מחלף כל שלוש הלולאות הללו. 192 00:08:44,110 --> 00:08:46,890 אתה יכול להשתמש ללולאה שבו אתה אחרת היה להשתמש בלולאה בזמן. 193 00:08:46,890 --> 00:08:49,860 אתה יכול להשתמש בלולאה לכל מקום היית להשתמש לעשות בזמן לולאה וכן הלאה. 194 00:08:49,860 --> 00:08:53,680 זה יכול להיות קצת מסובך לפעמים, כך בדרך כלל זה תרגול טוב 195 00:08:53,680 --> 00:08:55,140 לדבוק במקרה שימוש טיפוסי. 196 00:08:55,140 --> 00:08:57,599 השתמש לעשות בזמן הלולאה אם ​​אתה רצה משהו פעם אחת, לפחות. 197 00:08:57,599 --> 00:09:00,514 השתמש ללולאה אם ​​אתה רוצה לעשות משהו מספר מסוים של פעמים. 198 00:09:00,514 --> 00:09:03,730 אחרי הכל, זו הסיבה שיש שלושה סוגים שונים של לולאות. 199 00:09:03,730 --> 00:09:06,172 >> אז הם יכולים לשמש בהקשר הנכון. 200 00:09:06,172 --> 00:09:07,880 אבל אתה יכול מחלף שלהם אם אתה רוצה. 201 00:09:07,880 --> 00:09:10,790 אם אתה מרגיש נוח עם לולאות בזמן ואתה תמיד רוצה להשתמש בזמן לולאות. 202 00:09:10,790 --> 00:09:12,623 זה משהו ש אתה יכול לעשות, למרות ש 203 00:09:12,623 --> 00:09:15,590 יכול להיות קצת מבחינה תחבירית שבו ללולאה מסובכת, 204 00:09:15,590 --> 00:09:17,850 יהיה הרבה יותר פשוט. 205 00:09:17,850 --> 00:09:21,100 >> שמי דאג לויד וזה CS50. 206 00:09:21,100 --> 00:09:22,688