3.3: דגם מחשב ראשון
- Page ID
- 207738
להלן שתי שורות של קוד מחשב היוצרות תוכנית המדגמנת את מושבת החיידקים כשהיא מכפילה כל שעה. אם לא ראית קוד מחשב בעבר, אל תפחד מזה; נעבור על זה בזהירות למטה.
N = 1; t = 0;
בעוד (t <= 5* 24) {הדפסה (N); N = N* 2; t = t+1;}
התוכנית לעיל כתובה בשפת תכנות גנרית - ניתן להריץ אותה כשפת התכנות R, כשפה AWK, או, עם התאמות קלות כשפה C, Java או מספר אחרים. קוד מסוים זה זהה במהותו בשפות רבות.
"המשפט" הראשון הוא N = 1. זה מורה למחשב להגדיר את מספר החיידקים, N, שווה ל-1. פסיק (;) מסיים את ההצהרה ומפריד אותה מההצהרות הבאות. המשפט הבא הוא t = 0. זה מורה למחשב להגדיר את הזמן t ל 0. חיידק אחד בזמן אפס יוצר את "התנאים ההתחלתיים", וברגע שהמחשב סיים את הקו הזה, אומרים שהתוכנית "מאותחלת".
השורה השנייה של התוכנית מעורבת יותר, אך ניתן להבין אותה בשני חלקים. החלק הראשון משמאל, ואילו (t <= 5*24), מורה למחשב לחזור על קבוצת קוד למשך 5 ימים מדומים של 24 שעות כל אחד. החלק השני הוא הקוד שיש לחזור עליו, בתוך הפלטה מימין, {...} .
בהתחשב בחלק הראשון, בעוד הוא "מילת מפתח" המורה למחשב לחזור על משהו עד "התנאי" בסוגריים כבר לא נכון. במקרה זה, בתוך הסוגריים הוא t<= 5*24, אשר עצמו מורכב משלושה חלקים, t, <=, ו 5*24. החלק הראשון, t, מייצג את הזמן, שזה עתה אותחל לאפס בשורת הקוד הקודמת. החלק השני, <=, הוא הסמל של "פחות או שווה ל." שישה סמלי "השוואה" כאלה אפשריים, ==, <, <=, >, >=, ו! =, המייצג השוואה שווה, פחות מ, פחות או שווה, גדול מ, גדול או שווה, ולא שווה, בהתאמה. בחלק השלישי, הכוכבית (*) היא סמל לכפל, ולכן 5*24 פירושו "חמש פעמים עשרים וארבע", דרך לייצג את המספר 120, או את מספר השעות מיום שני עד שישי - משך הזמן שתרבית החיידקים המשוערת היא להתרבות.
קידוד מחשבים הוא עסק מדויק, שבו וריאציות זעירות יכולות לעשות הבדלים עצומים. המחשב הוא המתורגמן המילולי האולטימטיבי. דוגמה לכך פשוט חלפה בפסקה הקודמת. בקידוד, סימן שווה יחיד, =, פירושו "שנה משהו כדי להיות שווה ל", ואילו שני סימני שווה רצופים, ==, פירושו "השווה כדי לראות אם שני דברים זהים."
אם אתה רגיל קידוד, אתה כבר מכיר את הדקויות האלה, אם זה כל חדש לך, זה משהו להתרגל. פריימרים שונים באינטרנט יכולים לעזור, אך אל תתייאש אם זה נראה קשה בהתחלה; קידוד מחשבים מתגלה כאחד הדברים הקלים ביותר לקפוץ אליהם אך אחד התחומים הקשים ביותר בכל המאמץ האנושי להגיע בדיוק נכון. זמן וסבלנות יעזרו.
אם נחזור לקוד, הביטוי בעוד (t<= 5*24) פירושו, במקרה זה, לחזור על משהו כל עוד הזמן, t, הוא פחות או שווה ל 120 שעות, 5 פעמים 24. ושמשהו שיש לחזור עליו מופיע בתוך הפלטה מימין, {...} . (אגב, שפות תכנות רבות משתמשות בשלושה סמלים עיקריים לקיבוץ מידע - הנקראים סוגריים, {}, סוגריים, [] וסוגריים, (). הם משמשים לסוגים שונים של קבוצות, אך למרבה הצער השימוש בהם אינו עקבי בכל השפות.)
ההצהרה הראשונה בתוך הפלטה היא הדפסה (N). (עיין בחזרה לתוכנית שתי השורות.) "הדפס" הוא מונח שנותר מהימים שבהם מחשבים היו מתקשרים בעיקר על ידי הדפסה על נייר. עכשיו המונח רק אומר "תצוגה". משמעות ההצהרה היא "להציג את מספר הפרטים באוכלוסייה, N, בשלב זה. "זה הוגדר ל-1 בשורה הקודמת, כך שכאשר המחשב מריץ הדפסה (N) בפעם הראשונה, הוא יציג את המספר 1, בדרך כלל על המסך שלך.
המשפט הבא, N=N*2, נקרא "N שווה N כפול שניים". זה דומה בצורתו להצהרה בשורה הראשונה, N=1, שהתחילה את העניינים עם חיידק בודד. החלק 'N =' זהה. זה אומר למחשב שמספר החיידקים, N, עומד להשתנות. (כמובן, למחשב אין מושג על מה התוכנית - שאתה מפעיל תוכנית בנושא חיידקים.) מה ש - N ישתנה אליו הוא מיד מימין לסימן השווה, N*2. הכוכבית (*) פירושה להכפיל. אז הצהרה זו אומרת אפוא למחשב להכפיל את הערך של N. זה מה שאוכלוסיית החיידקים המשוערת עושה כל שעה, ולכן הצהרה זו מדגמנת את ההכפלה.
המשפט השלישי על הקו, t = t+1, נקרא "t שווה t פלוס אחד." זה דומה בצורתו להצהרה בשורה הראשונה, t = 0, שהתחילה את העניינים בזמן שעון של אפס. במילים אחרות, בדוגמה זו של לתת לחיידקים לגדול במשך שבוע עבודה של חמישה ימים, אנו לוקחים את חצות יום שני בבוקר לשעה אפס. חמישה ימים לאחר מכן, בחצות יום שישי בלילה, זה הופך לשעה 120 (5 ימים פעמים 24 שעות ביום שווה 120 שעות). אז באופן דומה, t= אומר למחשב שהזמן t עוסק בשינוי. בעקבות סימן השוויון זה מה שהוא צריך לשנות ל, t+1, או אחד יותר ממה שהוא כרגע, שמקדם את הזמן בשעה. זהו מודל זמן נפרד, ולכן הוא מתקרב למערכת האמיתית על ידי דוגמנות רגעים ספציפיים בלבד.
שלוש ההצהרות הללו מנוהלות לפי הסדר, משמאל לימין, מציגות תחילה את מספר החיידקים, לאחר מכן מדגמנות את הכפלת אוכלוסיית החיידקים, ולאחר מכן מתקדמות לשעה הבאה. אגב, אולי עלה בדעתך ששתי ההצהרות האחרונות יכולות להיכתב בכל סדר, או אפילו לרוץ בו זמנית - הן עצמאיות, כך שההזמנה לא תהיה חשובה.
לאחר הפעלת כל שלוש ההצהרות, התצוגה שלך תכיל את המספר 1, N יהיה 2 ו - t יהיה 1. לאחר מכן המחשב בוחן את הקוד בתוך הסוגריים המשויכים למילת המפתח ואילו כדי לראות אם יש להפעיל שוב את שלוש ההצהרות שבתוך הפלטה. תנאי זה מציין שכל עוד הזמן t קטן או שווה ל -120, יש לחזור על שלוש ההצהרות. בשלב זה, t שווה ל 1, וזה בהחלט פחות מ 120. לכן שלוש ההצהרות יפעלו שוב.
זה נקרא "לולאה", ועכשיו המחשב יתחיל בפעם השנייה סביב הלולאה, ויריץ את שלוש ההצהרות שוב כפי שרצו קודם, אך כעת עם ערכים שהשתנו של N ו - t. ראשית הוא יציג N, השווה כעת ל -2, כך שהוא יציג 2. ואז הוא יכפיל את N שוב, ישנה אותו משני חיידקים ל -4, ויגדיל את הזמן t ב -1, משעה 1 לשעה 2.
כך התהליך חוזר. בחינת המצב בתוך הסוגריים, המחשב מגלה כי 2 הוא פחות או שווה ל 120, ולכן שלוש ההצהרות בתוך הפלטה מופעלות שוב. זה נמשך ונמשך עד t גדול מ -120, ואז הלולאה מסתיימת. בסוף, t יהיה 121 ו - N יהיה כל מספר שהושג בתהליך ההכפלה.
קוד זה ממחיש שני היבטים בסיסיים של קידוד מחשב: "בדיקת מצב" ו"לולאה". בתוכניות גדולות יותר לולאות "מקוננות" בתוך לולאות אחרות ובדיקות מצב מקוננות בהתאם. אבל תוכנית זו של שתי שורות, עם אתחול השורה הראשונה והקו השני מפעיל לולאה, מספיקה לדגם הראשון שלנו. בקרוב תראו שזה לא מודל טריוויאלי, אלא כזה שמדגים חוק ביולוגיה בלתי ניתן להפרה, שדרווין השתמש בו ישירות ביצירת תורת האבולוציה שלו.