שפת C אל השיא הוצאת הוד-עמי לספרי מחשבים http://www.hod-ami.co.il מחבר: זיו איילון עורך :יצחק עמיהוד שמ ות המ וצר ים והש יר ות ים המ וזכר ים בספר ה ינם שמ ות מסחר י ים רש ומ ים של החבר ות שלהם .ה וצאת ה וד-עמ י עשתה כמ יטב יכ ולתה למס ור מ ידע א וד ות השמ ות המסחר י ים המ וזכר ים בספר זה ולצ י י ן את שמ ות החבר ות ,המ וצר ים והש יר ות ים .שמ ות מסחר י ים רש ומ ים )registered (trademarksהמ וזכר ים בספר צ ו ינ ו בהתאמה. Windowsהינו מוצר רשום של חברת Microsoft ספר זה מ י ועד לתת מ ידע א וד ות מ וצר ים ש ונ ים .נעש ו מאמצ ים רב ים לגר ום לכך שהספר יה יה שלם ואמ י ן ככל שנ ית ן ,אך א י ן משתמעת מכך כל אחר י ות שה יא .המ ידע נ ית ן "כמ ות שה וא" )" .("as isה וצאת ה וד-עמ י א ינה אחרא ית כלפ י יח יד א ו ארג ו ן עב ור כל א ובד ן א ו נזק אשר י יגרם ,אם י יגרם ,מהמ ידע שבספר זה ,א ו מהתקל יט ור שמצ ורף ל ו. © www.hod-ami.co.il לשם שטף הקריאה כתוב ספר זה בלשון זכר בלבד .ספר זה מיועד לגברים ונשים כאחד ואין בכוונתנו להפלות או לפגוע בציבור המשתמשים/ות. © כל הזכויות שמורות הוצאת הוד-עמי לספרי מחשבים בע"מ ת.ד 6108 .הרצליה 46160טלפון09-9564716 : [email protected] פקס09-9571582 : אין להעתיק או לשדר בכל אמצעי שהוא ספר זה או קטעים ממנו בשום צורה ובשום אמצעי אלקטרוני או מכני ,לרבות צילום והקלטה ,אמצעי אחסון והפצת מידע ,ללא אישור בכתב מאת ההוצאה ,אלא לשם ציטוט קטעים קצרים בציון שם המקור. All Rights Reserv ed הוצאת הוד-עמי לספרי מחשבים 2 w w w . hod-ami.co.il מבוא ייחוד הספר הספר " שפת Cאל ה שיא" נכתב עקב מחסור בספרי לימוד נאותים ב שפה העברית להוראת שפת ,Cלדעתי .זכורים לי הק שיים בהם נתקלתי כא שר למדתי לרא שו נה את ה שפה מספרים שה ניחו כי לקורא ידע קודם בתכ נות .מכיון שלא היו ב נמצא ספרי לימוד ב נו שא ,נאלצתי להסתפק בספרים אלו ,ק שים להב נה ככל שהיו. החל מ ש נת הלימודים ת ש"ס מאפ שר מ שרד החי נוך לע נות על שאלון בחי נת הבגרות במדעי המח שב ב שפת .Cעקב כך גבר הצורך בספרי לימוד ל שפת Cהמיועדים למתחילים ,שהרי רוב התלמידים ה ניג שים לבחי נת הבגרות במדעי המח שב אי נם בעלי ניסיון קודם בתכ נות. " שפת Cאל ה שיא" מיועד במיוחד לתלמידים אלה ,בהיותו הספר היחיד המלמד את שפת C על-פי תוכ נית הלימודים של מקצוע מדעי המח שב .הספר מיועד לכל אדם העו שה את צעדיו הרא שו נים בתכ נות בכלל וב שפת Cבפרט ,ואי נו דור ש מהקורא ידע קודם בתכ נות .מו שגים רבים ה נזכרים כמוב נים מאליהם בספרי מח שבים אחרים ,כגון אלגוריתם ,שפת תכ נות ומהדר, מוסברים במלואם בספר זה .הפרקים הרא שו נים עוסקים בהרחבה בתורת האלגוריתמיקה ובתר שימי זרימה ,ובכך נבדל הספר מיתר ספרי הלימוד ,שמתעלמים לגמרי מ נו שאים ח שובים אלה .למע שה ,כל נו שא בתוכ נית הלימודים מוסבר בספר בבהירות רבה ולעומק .מצד אחד, הספר עוסק ב נו שא מהרמה הבסיסית והתיאורטית ביותר ,ומצד ש ני ,הוא מעמיק בכל תחום ותחום ,תוך שימת לב מיוחדת ל שגיאות נפוצות. © www.hod-ami.co.il גם מבחי נה דידקטית נבדל הספר מספרי לימוד אחרים .נע שה שימו ש רב בתיבות טקסט )מלל( בולטות ,המזהירות את הקורא מפ ני פעולה מסוכ נת ,מסבות את ת שומת ליבו ל נו שא ח שוב וכדומה .למעלה ממאה איורים מלווים את הכתוב וממחי שים פעולות תכ נות ותהליכים מורכבים, מתארים תחביר של הוראות ב שפה ,מייצגים את קוד המקור בתר שימי זרימה ועוד .כמאה דוגמאות מלאות ,מלוות בהסברים מפורטים ,מ נחות את הקורא כיצד ל שלב את כל רכיבי ה שפה ליצירת תוכ ניות שימו שיות ויעילות. דרישות כדי ללמוד לתכ נת עליך להצטייד ב שלו שה דברים :במהדר של שפת ,Cבספר לימוד ובכוח רצון. מהדר של שפת Cמסופק יחד עם הספר ,כך ש שתי הדרי שות הרא שו נות כבר נע נו .כל ש נותר לך הוא לה שקיע ולהתמיד .אם תלמד בעקביות ותתרגל את החומר ה נלמד ,תפ נים במהרה את חוקי שפת Cותיווכח עד כמה עיסוק זה מה נה ומספק. שים לב! אם בר שותך מהדר ,Cתוכל לה שתמ ש בו במקום במהדר המסופק עם הספר .קיימים מהדרים רבים ל שפת Cהפועלים תחת סביבות DOS ו ,Windows -והתוכ ניות המופיעות בספר ירוצו בהצלחה תחת כולם. מתוך הספר שפת Cאל השיא צלצלו עכ שיו! 09-9564716 הוצאת הוד-עמי לספרי מחשבים 3 w w w . hod-ami.co.il מבנה הספר כאמור ,הספר מחולק למספר פרקים ,כא שר כל פרק עוסק ב נו שא אחר ב שפת .Cלהלן תיאור קצר של פרקי הספר: פרק 1 - אלגוריתמיקה ,פרק זה מהווה מבוא למדעי המח שב ,ודן באופן תיאורטי באופן בו י ש לתכ נן הוראות המיועדות למח שב. פרק 2 - הרקע לשפת ,Cפרק זה דן ב שפות תכ נות בכלל וברקע ל שפת Cבפרט. פרק 3 - כלי הפיתוח של השפה ,פרק זה מסביר כיצד מבצע המח שב הוראות הכתובות ב שפת Cוכיצד לה שתמ ש במהדר ה שפה. פרק 4 - אבני היסוד של השפה ,בפרק זה מתחיל התכ נות המע שי ב שפת .Cהפרק מסביר בקצרה כיצד ב נויה תוכ נית ב שפת ,Cכיצד להציג מלל על המסך ומהם רכיבי ה שפה. פרק 5 - משתנים ,בפרק זה מוסברים הגדרת מ שת נים ,מ שפטי ה שמה ואופרטורים שו נים, ופליטת וקליטת ערכים. פרק 6 - משפטי תנאי ,פרק זה עוסק בביטויי יחס ,באופרטורים לוגיים ובהוראות מות נות. פרק 7 - לולאות ,פרק זה עוסק בהוראות לביצוע חוזר. פרק 8 - פונקציות ,פרק זה עוסק בהגדרות פו נקציות ,בהצהרות עליהן וב שליחת פרמטרים אליהן. פרק 9 - מערכים ,פרק זה מסביר כיצד להגדיר ,לפ נות ולאתחל מערכים בעלי מימדים שו נים. פרק 10 - מחרוזות ,פרק זה מסביר כיצד לעבד נתו ני מלל באופן י שיר ועל ידי פו נקציות הספריה לטיפול במחרוזות. למי מיועד הספר © www.hod-ami.co.il הספר מיועד לכל אדם המעו ניין ללמוד לתכ נת ב שפת Cרבת העוצמה .הספר מתאים הן למי שאין בר שותו ידע קודם בתכ נות והן למתכ נתים ה"מהגרים" ל שפת Cמ שפות תכ נות אחרות. מתכו נת הספר הוכ נה במכוון עבור תלמידים ה ניג שים לבחי נת הבגרות ביסודות מדעי המח שב ברמה של 2יחידות לימוד ,ולכן הוא אי נו מקיף את כל התחומים הק שורים לתכ נות ב שפת .Cאך ה נו שאים המרכזיים ב שפת Cמועברים בהעמקה רבה – כה רבה למע שה ,עד שמספר נו שאים אי נם נחוצים לבחי נת הבגרות. נו שאים אלו מסומ נים בתוכן הע ניי נים ולאורך הספר בכוכבית )✪ ( ,ואלה הם: הסעיף ביטויים מורכבים בפרק ,5מ שת נים הסעיף ערכי ביטויי יחס בפרק ,6מ שפטי ת נאי הסעיף אופרטור הפסיק בפרק ,7לולאות הסעיף משפטי בקרה נוספים בפרק ,7לולאות הסעיף אופני הגדרה והצהרה נוספים בפרק ,8פו נקציות אופן הלימוד הספר מחולק למספר פרקים ,כא שר כל פרק עוסק ב נו שא אחר ב שפת .Cכדי לתכ נת ביעילות ב שפת Cעליך ללמוד היטב את כולם .הפרקים אי נם ערוכים בהכרח בסדר קו שי עולה; ייתכן כי פרק מסוים יהיה פ שוט יותר מזה שקדם לו .רמת הקו שי גם מו שפעת מהידע הקודם שבר שותך. התוכ ניות המוצגות בפרקים הרא שו נים של הספר הי נן פ שוטות ולא שימו שיות במיוחד ,שכן יכולות התכ נות שבר שות נו מוגבלות .בהמ שך הלימוד נתחיל לכתוב תוכ ניות מורכבות היכולות ל שמ ש אות נו אף לצרכי היום-יום .בחלק מהמקרים נעדיף להציג דוגמאות פ שוטות ופחות מתוך הספר שפת Cאל השיא צלצלו עכ שיו! 09-9564716 הוצאת הוד-עמי לספרי מחשבים 4 w w w . hod-ami.co.il שימו שיות כדי להקל על הלמידה ,שהרי עדיף להדגים את ה נו שא ה נלמד בתוכ נית קצרה ככל ה ניתן. כיצד להשתמש בספר ניתן ללמוד מהספר ב שתי דרכים .אם אי נך מכיר את ה שפה ,מומלץ להתחיל בפרק הרא שון ולהתקדם ,בקצב המתאים לך ,אל הפרקים הבאים .לא מומלץ לדלג על פרקים ,מ שום שרובם מסתמכים על חומר ש נלמד בפרקים הקודמים להם .אם אתה כבר מכיר את שפת ,Cתוכל להעמיק בעזרת הספר ב נו שאים ספציפיים שאי נך מכיר או ש שכחת ,תוך שימו ש בתוכן הע ניי נים ובאי נדקס. תרגול הספר מספק את כל התיאוריה הדרו שה ל שם הצלחה בבחי נת הבגרות במדעי המח שב ,אך התרגול בכתיבת תוכ ניות מלאות ח שוב לאין ערוך .מומלץ בחום כי תקליד את כל התוכ ניות במח שב ותתר שם מפעולתן )הסבר על כתיבת התוכ ניות והרצתן במח שב מופיע בפרק .(3מלבד העובדה שהקלדה מקלה על זכירת כללי ה שפה ,לאחר שכתבת את התוכ נית תוכל לערוך אותה ולבחון את ה שפעות ה שי נוי על ריצת התוכ נית ,ובכך לרכו ש ידע רב. הספר " שפת – Cתרגול אל ה שיא" ,שראה אור בהוצאת הוד-עמי ,מהווה אמצעי מו שלם לתרגול החומר התיאורטי והמע שי ה נלמד בספר זה .הספר כולל מאות תרגילים מגוו נים :החל מ שאלות פתוחות ,דרך מציאת טעויות במ שפטים נתו נים וכלה במטלות תכ נות מלאות .מב נה הספר תואם במלואו את מב נה הספר הזה ,כך ש נוח ללמוד עם ש ניהם בו-זמ נית .לאחר קריאת סעיף מסוים בספר זה תוכל לפ נות אל אותו סעיף בספר התרגילים ובכך לתרגל ולהפ נים את החומר ה נלמד. הדוגמאות © www.hod-ami.co.il מלבד הסברים וקטעי תוכ ניות קצרים ,הספר כולל כמאה דוגמאות מלאות .דוגמאות אלו מ שולבות עם החומר התיאורטי ה נלמד ,והן מאפ שרות לחזור עליו וליי שם אותו במסגרת של תוכ נית מלאה. כל דוגמה מורכבת מתרגיל ,מפתרון מלא ומהסבר .התרגיל הוא המטלה אותה מבצעת הדוגמה. הפתרון הוא בדרך כלל תוכ נית מלאה ב שפת ,Cוהוא מתבסס על החומר ש נלמד באותו סעיף. הסברי הדוגמה ה נוגעים לחומר החד ש שמוצג בה מפורטים מאוד ומלווים ,במידת הצורך, באיורים. תוכל לה שלים את המטלות המוסברות בדוגמאות לפ ני קריאת פתרו נותיהן ,ובכך לתרגל את החומר ה נלמד. מוסכמות ספר הכתוב כגו ש מלל רצוף אי נו נעים לקריאה .בספר זה נע שה שימו ש במוסכמות הבאות כדי להקל על קריאתו: ) (1אם נהנית מהקריאה אזי מלל המוצג בגופן כזה מציין רצף הגיו ני כל שהו של הוראות. )א( ספר לחבריך ) (2אחרת )א( ספר לנו ;sum = number1 + number2 ;av erage = grades / 10 מתוך הספר שפת Cאל השיא מלל בלעז המוצג בגופן שרוחב אותיותיו קבוע מציין הוראות הכתובות ב שפת .C צלצלו עכ שיו! 09-9564716 הוצאת הוד-עמי לספרי מחשבים 5 w w w . hod-ami.co.il כל פרק מכיל מספר דוגמאות ,ה נפתחות באיור זה. ãåâîä סימן זה מציין סוף של דוגמה. FILE.Cכל התוכ ניות המלאות המוצגות בספר מצויות בתקליטור המסופק עמו .כא שר נציג תוכ נית מלאה ב שפת ,Cנכתוב ברא שה את שם הקובץ שלה. כל תוכ נית מלאה מוצגת כדוגמה ממוספרת כדי ש נוכל 8.4לפ נות אליה בקלות בהמ שך הלימוד .המספר שמ שמאל ל נקודה מציין את מספר הפרק בו מופיעה התוכ נית, והמספר שמימין ל נקודה מציין את מספר התוכ נית בפרק זה .תוכ נית 8.4היא ,לכן ,התוכ נית הרביעית בפרק ה שמי ני. תוכנית )(v oid main { תוכ נית מלאה תיכתב במסגרת אפורה ומוצללת. } )( v oid mainהדוגמאות המוצגות בספר מוסברות בפירוט רב .כדי להסביר שורה מסוימת ,נציג אותה על רקע אפור ואת זוהי הגדרת הפו נקציה הרא שית. ההסבר לה נכתוב בהמ שך. } { © www.hod-ami.co.il אלה הם סוגריים מסולסלים. כבר ב שלב מוקדם של הלימוד נכתוב תוכ ניות המציגות !Hello there הודעות על המסך .כא שר נרצה להדגים את ההודעה שמציגה תוכ נית מסוימת ,נר שום אותם בתוך מסגרת. רצף הוראות מכו נה אלגוריתם ) .( algorithm /* ... */ כא שר ניתקל במו שג חד ש נר שום אותו באות מודג שת ו נציין את המו נח הזהה לו בא נגלית. סימן זה מייצג שורות הכתובות ב שפת Cשאי נן מצוי נות במפור ש .נ שתמ ש בסימן זה בעיקר כא שר אין ח שיבות לפעולת שורות אלו או כא שר הסברים אודותיהן יי נת נו בהמ שך. איך לא... במסגרת כזו תופיע דוגמה לפעולה אסורה. במח שבה ש נייה... מהי המסגרת הזו? במסגרת כזו תופיע שאלה ות שובה בצידה. זהירות! במסגרת כזו תופיע אזהרה המתריעה מפ ני ביצוע פעולה מסוכ נת. מתוך הספר שפת Cאל השיא צלצלו עכ שיו! 09-9564716 הוצאת הוד-עמי לספרי מחשבים w w w . hod-ami.co.il 6 עצה במסגרת כזו תופיע המלצה ב נו שא מסוים. שים לב! במסגרת כזו יופיע נו שא ח שוב שראוי לציי נו במיוחד. ידע מתמטי מקצוע מדעי המח שב ק שור בטבורו למתמטיקה ,וגם בבחי נת הבגרות במדעי המח שב מופיעות שאלות המצריכות הב נה בסיסית במתמטיקה .הידע המתמטי ה נדר ש להב נת חומר הלימוד נרכ ש בחטיבת הבי ניים ,ולכן מו שגים מתמטיים פ שוטים כגון חזקה ,שור ש וממוצע אי נם מוסברים .זהו אי נו ספר לימוד במתמטיקה ,אך מו שגים מתמטיים מורכבים יותר ,כגון עצרת ומ שוואה ריבועית ,מוסברים בקצרה ובליווי דוגמאות. במהלך הלימוד נפ נה אל קבוצות מספרים מסוימות תוך ציון שמן .כדי שלא נצטרך להסביר את תכו נותיה של קבוצה בכל פעם ש נדון בה ,נתאר עתה את כל קבוצות המספרים הבסיסיות. קבוצות מספרים כמות המספרים הקיימים בימי נו היא אי נסופית .במהלך אלפי ה ש נים האחרו נות ,חילקו אותם המתמטיקאים למספר קטגוריות .ברא שית הדרך נעזרו א נ שים במספרים כדי לייצג כמויות של פריטים בהם ה שתמ שו בחיי היומיום .כמויות אלו היו חיוביות ו שלמות ,ולכן מספרים אלו היו ,2 ,1 ,3וכדומה .מספרים אלו מכו נים בימי נו מספרים טבעיים ) .( natural numbers © www.hod-ami.co.il ההי נדים הרחיבו את טווח המספרים שהיו ידועים באותה תקופה בבוח נם את המתרח ש כא שר מפחיתים מספר גדול ממספר קטן .קל היה להפחית 2מ ,4-אך הפחתה של 4מ 2-ה ניבה מספר שלא ניתן היה לייצגו על ידי המספרים הטבעיים .מספר כזה יוחס לקבוצת מספרים ה נקראים מספרים שליליים ) .( negativ e numbersמספרים אלו הי נם מופ שטים ביותר ,שהרי אין דרך להמחי ש כמות שלילית באמצעים העומדים לר שות נו .ואכן ,מתמטיקאים רבים סירבו להכיר בהם בזמ נו. פיתגורס ,מתמטיקאי יוו ני שחי במאה ה שי שית לפ נה"ס ,ומאות תלמידים אותם לימד את רזי המתמטיקה ,חקרו רבות את המספרים הטבעיים .מספרים אלו והמספרים ה שליליים ,יחד עם מספרים המייצגים מ נה בין מספרים שלמים )היי נו ,שברים כגון ¾ ( ,מכו נים מספרים רציונליים ) .( rational numbers קיימים מספרים אותם לא ניתן לייצג באמצעות יחס בין מספרים טבעיים .מספרים אלו מכו נים מספרים אי-רציונליים ) .( irrational numbersמספר אי-רציו נלי אי נו שלם ואי נו שבר ,ולכן לא ניתן לכתבו בכתיב ע שרו ני .מספר אי-רציו נלי מפורסם הוא המספר פאי ) ,( πשערכו בדיוק של ע שר ספרות אחרי ה נקודה הע שרו נית הוא .3.1415926535אך ערך זה ,מדויק ככל שיהיה ,אי נו מדויק לגמרי .מכיון שפאי הוא מספר אי-רציו נלי ,לא קיימת מחזוריות בספרותיו הע שרו ניות )מחזוריות כזו קיימת במספרים כגון 0.333333ו ,( 0.123123123-ולכן לא ניתן לכתבו בדיוק מוחלט. קיומם של מספרים אי-רציו נליים הוכח על ידי אאוקלידס ,ש נולד בערך ב ש נת 330לפ נה"ס. הוכחה ידועה נוספת של אאוקלידס גורסת שקיימים אי נסוף מספרים רא שו ניים .מספר ראשוני ) ( prime numberהוא מספר שהמחלקים היחידים שלו )כלומר ,המספרים בהם הוא מתחלק ללא שארית( הם 1והוא עצמו .מספר שאי נו רא שו ני מכו נה מספר פריק ) .( reducible numberקיימים אי נסוף מספרים רא שו ניים ופריקים. מתוך הספר שפת Cאל השיא צלצלו עכ שיו! 09-9564716 הוצאת הוד-עמי לספרי מחשבים 7 w w w . hod-ami.co.il התקליטור המצורף תוכנת TCLite ל נוחותך תמצא בתקליטור מהדר TCLiteשל בורל נד ,באדיבות חברת .Borlandבאמצעות מהדר זה תוכל להדר את התוכ ניות שבספר .להידור תוכ ניות מורכבות יותר מא שר בספר זה תזדקק למהדר שלם של ה שפה. מהדר TCLiteהוא גירסה קלה של מהדר ,Borland C\C++א שר עוצב על ידי חברת בורל נד ,כדי לאפ שר תרגול של תוכ ניות .C הוראות ההתקנה וההפעלה המלאות נמצאות בתקליטור בקובץ Software\tclite\install.doc אם מותקן כבר מהדר Borlandבמחשב ,אל תתקין את TCLite אלא רק העתק את התוכניות מהתקליטור. התיקיה \software\tclite תוכ נת ,( Turbo C Lite) TCLiteמהדר ל שפת C\C++של חברת ,Borland Internationalא שר מיועד למח שבי IBM PCותואמים .זהו מהדר מהיר מאוד המסוגל ,לפי דיווחי החברה ,להדר מעל 7,000 שורות בדקה. התוכ נה כוללת: © www.hod-ami.co.il ! מהדר ).( compiler !עורך ) ( editorהמ שמ ש לכתיבת ותיקון התוכ ניות. ! מערכת תפריטים נוחה ,לבחירת האופציות ה שו נות במערכת. ! מק שר ).( linker ! מערכת איתור שגיאות בהידור. ! מערכת לב ניית תוכ ניות מקבצי מקור רבים. הודעה ר שיון ה שימו ש לתוכ נה מוגבל להדגמה בלבד .התוכ נה מ שווקת כמו שהיא )" ,("as isללא אחריות לתוצאות העלולות להיגרם מה שימו ש ו/או אי ה שימו ש בתוכ נה מכל סיבה שהיא ,וכן להפסד כספי ,זמן ,רכו ש ו/או כל הפסד אחר שייגרם ,אם ייגרם. התקנת התוכנה ההתק נה וההפעלה פ שוטים .עקוב אחר הסעיפים הבאים .ניתן להתקין תחת ,Windowsאך להפעיל ,רצוי וצריך תחת .DOS ההתק נה תבוצע בסביבת העבודה ,DOSולצורך ההסבר נתייחס לכו נן ) C:אותן פעולות תעבוד נה גם על כל כו נן אחר(. <<אם אתה נמצא בWindows- -כבה והפעל את המחשב במצב >> DOS <<בחלון כיבוי המחשב סמן את האפשרות ?>> Restart the computer in MS-DOS mode מתוך הספר שפת Cאל השיא צלצלו עכ שיו! 09-9564716 הוצאת הוד-עמי לספרי מחשבים w w w . hod-ami.co.il 8 .1י ש לעבור לתיקיית ה שור ש על ידי הפקודה) cd\ :קיצור של ,( change directoryולהגיע למצב זה.C:\>_ : .2במקרה וזה אי נ נו ניסיון התק נה רא שון -י ש למחוק את התיקיה ,TCLITEשבתוכה תותקן התוכ נה .ע שה זאת על ידי הפקודה ,deltree tclite :ואז תראה על המסך את המ שפט הבא: .C:\>deltree tcliteלבסוף ,הק ש >.<Enter אם התיקיה לא קיימת ,הסמן יעבור מיידית ל שורה חד שה וימתין להוראה .אם התיקיה קיימת ,תופיע ה שאלה הזו: _ ]Delete directory "tclite" and all its subdirectories? [y n כלומר" ,האם אתה בטוח שאתה רוצה לבטל תיקיה זו?" הק ש על המק ש > <Yואחר כך על > .<Enterהמח שב ידווח.Deleting tclite... : .3עתה יהיה עליך לעבור לכו נן המתאים של התקליטור )למ של .( X:המעבר ל - X: -על ידי הפקודה) x: :ואז על המסך יהיה כתוב .( C:\>x: :לאחר הק שת > <Enterהסמן המהבהב יופיע אחרי _>\.X: .4 עבור לתיקיה של :TCLite .5 עכ שיו הכל מוכן לביצוע ההתק נה .כתוב את הפקודה ) X:\sof tware\tclite>install c: :שפירו שה, התק נה לתוך כו נן .( C:שים לב :אל תשכח לכתוב ,c:כלומר לאן י ש לבצע את ההתק נה. המח שב ידווח על התק נת התוכ נה .TCLITEמ שך זמן ההתק נה תלוי במהירות המח שב שלך, ויכול להימ שך גם מעל 2דקות .בדרך כלל ההתק נה מהירה יותר. cd software\tclite .6במקרה של תקלה )תקיעת המערכת( י ש לבטל את ההתק נה על ידי > .<Ctrl>+<Cבמקרה זה המח שב י שאל ;Terminate batch job (Y /N)? :כלומר ,האם לסיים את העבודה .יהיה עליך להקי ש > <Yו ,<Enter> -ואז ,בה נחה שי ש די זיכרון בדיסק הק שיח ,לחזור על שלבים .2-5 .7לאחר סיום ההתק נה שים את התקליטור בצד ו שמור אותו כגיבוי .הפעלת התוכ נית והרצת התוכ ניות נע שית מתוך הדיסק הק שיח. © www.hod-ami.co.il הפעלת התוכנה .1 י ש לחזור מכו נן X:לכו נן ,C:ולהימצא בתיקיית ה שור ש של כו נן .C .2הכ ניסה ל - C -על ידי הפקודה C:\>cהמפעילה את קובץ ההפעלה .C.BATכתוצאה ,מקבלים את סביבת העבודה של ,Turbo C/C ++ובתוכה חלון פתוח בצבע כחול, ש שמו) NONAME00.CPP :רק בפעם הרא שו נה ש נכ נסים לתוכ נה( .אם הקובץ c.batלא הועתק לכו נן Cשלך ,העתק אותו יד נית או צור קובץ אצווה חד ש .קובץ ההפעלה של התוכ נה הוא tc.exeש נמצא ב.tclite\bin\ - .3כדאי לסגור את החלון NONAME00.CPPעל ידי צמד המק שים > <Alt>+<F3ואז מקבלים חלון אפור ריק ,שברא שו ר שימת תפריטים על רקע לבן .כרגע אתה מוכן להתחיל לעבוד בעזרת התוכ ניות שבספר. שים לב! ברירת המחדל של המהדר היא לקרוא ול שמור קבצים עם סיומת Cאו .CPP בחר *.cאו *.cppבהתאם לקבצים ) שפת Cאו שפת .( C++ הרצת תוכניות העתק את התיקיה של התוכ ניות לפי ההוראות בהמ שך. .1כדי לקבל תוכ נית -י ש להקי ש > .<F3הק שה זו פותחת "חלון שיחה" ,שכותרתו הרא שית: ") Load a Fileטען קובץ"( וכותרת מ ש נה רא שו נה הי נה Name :ואחריה ,בתוך שורה כחולה עם הדג שה ירוקה כתוב) *.CPP :אתה מריץ תוכ ניות - Cולכן הק ש Backspaceפעמיים כדי שיי שאר רק .*.cאם אי נך רואה דבר הקלד ,*.cולאחר מכן הק ש >.( <Enter מתוך הספר שפת Cאל השיא צלצלו עכ שיו! 09-9564716 הוצאת הוד-עמי לספרי מחשבים w w w . hod-ami.co.il 9 .2תעבור לחלון פ נימי שכותרתו ") Filesקבצים"( ,ותראה על רקע בצבע תכלת 2טורים של שמות קבצים .באופן כללי ,מק שי החיצים מאפ שרים לעבור עם ה"סמן" ,שצבעו ירוק בהיר ,על כל הקבצים. .3בחר את התיקיה הרצויה ואת הקובץ הרצוי .הק שה על > <Enterתכ ניס אותך לתוכ נית .כדי לבחור תיקיה אחרת הק ש על \ ..שמופיע בסוף הר שימה של התוכ ניות. .4 הק שת > <Enterעל שם קובץ תפתח חלון כחול ,שכותרתו במרכז הי נה " :שם הקובץ" ,ובתוך החלון יופיע הטקסט של תוכ נית זו )או של קובץ זה(. .5כדי להריץ את התוכ נית עליך להקי ש על צמד המק שים .<Ctrl>+<F9> :המח שב יתרגם את התוכ נית ל שפת מכו נה ויבצע אותה .כדי לראות את פלט התוכ נית הק ש > .<Alt>+<F5י ש להקי ש על מק ש כל שהו כדי לחזור לחלון התוכ נית. .6 המ שך ההרצה של תוכ ניות נוספות מומלץ באופן הבא :לסגור תחילה את חלון התוכ נית ה נוכחית על ידי צמד המק שים > .<Alt>+<F3אחר כך ניתן לחזור על ה שלבים 1עד ,5כא שר ב שלב 3אפ שר לבחור תוכ נית אחרת. עצה בכל שלב בסעיפי הרצת התוכ ניות אפ שר לבטל שלב כל שהו ולחזור ל שלב הקודם על ידי המק ש >.<Esc אם המח שב שלכם מחובר לר שת ,המלצת נו היא -להקי ש F5בזמן אתחול המערכת כדי לדלג על ביצוע הקבצים autoexec.batו .conf ig.sy s -אם לא תע שו כך ,ייתכן שבתוכ ניות תראו תווים לא מוב נים במקום עברית. כתיבת עברית בתוכנית כדי לכתוב עברית בתוכ נית ב:tclite- .1העתק את הקובץ heb.comמהתיקיה בתקליטור \sof tware\tcliteלכו נן הק שיח הרא שי .C © www.hod-ami.co.il .2הק ש C:\>hebו.Enter- .3היכ נס ל tclite-וכא שר תרצה להקליד עברית ,הק ש ) Ctrl+החזק את Ctrlולחץ על מק ש מי נוס( .נפתח חלון בו תוכל לכתוב .הק ש Enterכדי להכ ניס את מה שהקלדת לתוכ נית. עוד על התוכנה בקובץ Install.docבתיקיה \softw are\tcliteשבתקליטור קוד המקור בתקליטור המצורף התוכ ניות שבספר מצורפות בתקליטור .התוכ ניות הורצו ו נבדקו ,אך ייתכן שתמצא טעות כל שהי בספר או בתוכ ניות שבתקליטור .א נו מבק שים ממך לבדוק את ה נו שא בעצמך ,כחלק מתהליך הלימוד שלך .נודה לך אם תודיע ל נו על ה שגיאה ,אם י ש נה ,כדי ש נוכל לתקן בהדפסת המהדורה הבאה. בתיקיה books\59299תמצא את התוכ ניות בתיקיות לפי מספרי הפרקים. שים לב ,שאם אתה עובד במהדר - TCLiteהכל מתבצע בסביבת המהדר .לא יוצרים קובץ EXEולא יוצאים ל DOS-כדי להריץ אותו .הספר נכתב לשימוש במהדר רגיל ולכן יש לשים לב לשינויים כאשר עובדים ב.TCLite - העתקת קבצי קוד המקור לדיסק הקשיח כדי להעתיק את תכולת התיקיה :books\59299 .1לחץ על לחצן התחל ,תוכ ניות ,סייר .Windows .2לחץ על כו נן התקליטורים וסמן את התיקיה 59299שבתיקיה .books מתוך הספר שפת Cאל השיא צלצלו עכ שיו! 09-9564716 הוצאת הוד-עמי לספרי מחשבים w w w . hod-ami.co.il 10 .3גרור אותה לתיקיה Tcliteאו לתיקיית ה שור ש .C מכיון שמקור הקבצים הוא התקליטור ,הם מסומ נים לקריאה בלבד .י ש ל ש נות מאפיין זה כך: .1בסייר Windowsהיכ נס לתיקיה בדיסק שבה נמצאים הקבצים שהעתקת ) c:\tclite\59299או אחרת(. .2סמן את כולם על ידי .Ctrl+A .3הצב את סמן העכבר מעל האזור המסומן ולחץ לחיצה ימ נית בעכבר. .4מתפריט הקיצור בחר מאפיינים. .5בטל את הסימון בתיבה קריאה בלבד )דאג שהיא תהיה ריקה(. .6לחץ על החל ,לחץ אישור. בדוק האם ה שת נה המאפיין על ידי סימון הקובץ :לחיצה ימ נית ובחירה במאפיינים בתפריט הקיצור .שים לב שהתיבה של קריאה בלבד תהיה ריקה. התוכ ניות המצורפות הורצו ו נבדקו .ע שי נו את מירב המאמצים כדי לבדוק את תקי נות פעולתן ,ולא נותר ל נו אלא לאחל לך תרגול מה נה ומועיל. קרא עוד על התקליטור בנספח ג' בספר ובקובץ ONCDבתקליטור © www.hod-ami.co.il בטבלה מופיעות פו נקציות הספריה של שפת Cשח שוב להכירן .לצד כל פו נקציה מצוי נת התוכ נית בה היא מוזכרת לרא שו נה. פונקציית הספריה התוכנית שם התוכנית printf תוכ נית 4.2 printf .c scanf תוכ נית 5.4 scanf .c pow תוכ נית 5.5 scanf 2.c getch / putch תוכ נית 5.8 arith2.c sqrt תוכ נית 6.3 if else2.c rand / srand תוכ נית 7.8 rand.c abs תוכ נית 9.4 abs.c gets תוכ נית 10.2 pal_str.c strlen תוכ נית 10.3 strlen.c strcpy תוכ נית 10.4 strcpy .c strcat תוכ נית 10.5 strcat.c strcmp תוכ נית 10.6 strcmp.c מתוך הספר שפת Cאל השיא צלצלו עכ שיו! 09-9564716 הוצאת הוד-עמי לספרי מחשבים 11 w w w . hod-ami.co.il תוכן עניינים מקוצר מבוא13 ........................................................................... פרק :1אלגוריתמיקה27 .................................................. פרק :2תרשימי זרימה61 ................................................ פרק :3כלי הפיתוח של השפה87 .................................... פרק :4אבני היסוד של השפה101................................... פרק :5משתנים121........................................................ פרק :6משפטי תנאי 177................................................. פרק :7לולאות233.......................................................... פרק :8פונקציות293....................................................... © www.hod-ami.co.il פרק :9מערכים337......................................................... פרק :10מחרוזות381..................................................... נספח א' :על שפת Cושפות אחרות419........................... נספח ב' :הודעות שגיאה נפוצות427............................... נספח ג' :התקליטור המצורף והתוכנה 445...........TCLite אינדקס 457..................................................................... מתוך הספר שפת Cאל השיא צלצלו עכ שיו! 09-9564716 הוצאת הוד-עמי לספרי מחשבים 12 w w w . hod-ami.co.il תוכן העניינים מבוא13 ........................................................................... ייחוד הספר 13 ..................................................................... דרישות 14 .......................................................................... מבנה הספר14 ...................................................................... למי מיועד הספר 15 ................................................................ אופ 0הלימוד16 ..................................................................... כיצד להשתמש בספר 16 ............................................................ תרגול 16 .......................................................................... הדוגמאות 17 ...................................................................... מוסכמות 17 ....................................................................... ידע מתמטי 20 ...................................................................... קבוצות מספרי20 .................................................................6 התקליטור המצור21 ............................................................. 8 © www.hod-ami.co.il תוכנת 21 ................................................................... TC Lite התיקיה \21 ......................................................... softw are\tclite התקנת התוכנה22 .................................................................. הפעלת התוכנה23 .................................................................. הרצת תוכניות 23 ................................................................... כתיבת עברית בתוכנית 24 ........................................................... קוד המקור בתקליטור המצור24 ................................................ 8 העתקת קבצי קוד המקור לדיסק הקשיח 25 .......................................... פונקציות ספריה חשובות26 ............................................. פרק :1אלגוריתמיקה27 .................................................. מושגי תכנות בסיסיי27 ..........................................................6 האלגורית28 ......................................................................6 כללי 6בתכנו 0האלגורית29 ....................................................... 6 נכו 0מבחינה תחבירית 29 ......................................................... מוב 0לגור 6המבצע29 ............................................................ חד9משמעי 29 ................................................................... נכו 0מבחינה לוגית30 ............................................................. אלגוריתמי 6המיועדי 6לאד30 .................................................... 6 מתוך הספר שפת Cאל השיא צלצלו עכ שיו! 09-9564716 הוצאת הוד-עמי לספרי מחשבים 13 w w w . hod-ami.co.il אלגוריתמי 6פשוטי32 ............................................................6 הוראת הקלט 32 ................................................................... חוקי 6במת 0שמות למשתני33 .................................................. 6 הוראת הפלט34 .................................................................... הוראת ההשמה 34 ................................................................. תנאי38 ........................................................................... 6 ביצוע מותנה באלגוריתמי 6המיועדי 6לאד38 ...................................... 6 ביצוע מותנה באלגוריתמי 6המיועדי 6למחשב 40 ..................................... התנאי המורכב וג43 .............................................................. 6 התנאי המורכב או 45 ............................................................... הוראות תנאי מקוננות 47 ............................................................ לולאות48 ........................................................................... בצע ...פעמי48 ...................................................................6 עבור ...מ ...9עד ...בצע51 .......................................................... כל עוד ...בצע 53 ................................................................... בצע ...עד ש 55 ..................................................................... אלגוריתמי 6ומערכי57 .......................................................... 6 סיכו59 ............................................................................6 © www.hod-ami.co.il פרק :2תרשימי זרימה61 ................................................ תרשימי זרימה פשוטי61 .........................................................6 תרשימי זרימה המיועדי 6לאד61 .................................................. 6 ייצוג פעולות אלגוריתמיות 63 ....................................................... פעולת הקלט 63 ................................................................. פעולת הפלט64 .................................................................. פעולת ההשמה 66 ............................................................... תרשימי זרימה המיועדי 6למחשב 66 ................................................ תרשימי זרימה בעלי תנאי69 .................................................... 6 הוראות תנאי מקוננות 75 ............................................................ תרשימי זרימה בעלי לולאות77 .................................................... סיכו85 ............................................................................6 פרק :3כלי הפיתוח של השפה87 .................................... סוגי קבצי87 ......................................................................6 יצירת הקבצי88 ..................................................................6 הידור88 ........................................................................... קישור 89 .......................................................................... התוכנית הראשונה90 .............................................................. מתוך הספר שפת Cאל השיא צלצלו עכ שיו! 09-9564716 הוצאת הוד-עמי לספרי מחשבים 14 w w w . hod-ami.co.il יצירת קוב; ההרצה90 ............................................................. יצירת קוב; ההרצה מסביבת הפיתוח המשולבת 92 .................................... כתיבת התוכנית 92 ............................................................... הידור וקישור התוכנית 93 ........................................................ הרצת התוכנית94 ................................................................ יצירת קוב; ההרצה משורת הפקודה 94 .............................................. כתיבת התוכנית 94 ............................................................... הידור וקישור התוכנית 95 ........................................................ הרצת התוכנית96 ................................................................ עבודה ע 6המהדר97 ............................................................... הודעות שגיאה 97 .................................................................. הודעות אזהרה 98 .................................................................. התנסות ע 6הודעות המהדר 98 ...................................................... סיכו100...........................................................................6 פרק :4אבני היסוד של השפה101................................... תוכנית שלד 101.................................................................... תווי 6לבני103 ................................................................... 6 פלט בסיסי103...................................................................... © www.hod-ami.co.il ירידה לשורה חדשה 106........................................................... הערות 107.......................................................................... תווי בקרה110...................................................................... מרכיבי השפה 113.................................................................. מילות מפתח 114 ................................................................... מזהי114 .........................................................................6 קבועי114 ........................................................................ 6 אופרטורי115 .................................................................... 6 סימני פיסוק115 .................................................................... מהי פונקציה? 116.................................................................. קריאה לפונקציה 117 ............................................................... קבצי ספריה118.................................................................... סיכו119...........................................................................6 פרק :5משתנים121........................................................ מהו משתנה? 121................................................................... הצבת ערכי122................................................................... 6 סוגי משתני125................................................................... 6 המשתנה השל125 ................................................................ 6 מתוך הספר שפת Cאל השיא צלצלו עכ שיו! 09-9564716 הוצאת הוד-עמי לספרי מחשבים 15 w w w . hod-ami.co.il המשתנה העשרוני 126 .............................................................. דיוק בערכי 6שלמי 6ועשרוניי128 ................................................. 6 הגדרת משתני128................................................................ 6 פלט ערכי משתני130..............................................................6 קליטת ערכי 6מהמשתמש 137..................................................... המשתנה התווי143................................................................. פלט תווי145 ..................................................................... 6 קליטת תווי147 ...................................................................6 הפונקציה 150 ................................................................ putch הפונקציה 151 ................................................................ getch פלט מורכב באמצעות 153................................................... printf אתחול משתני158................................................................ 6 אופרטורי 6מקוצרי159.......................................................... 6 אופרטורי השמה מקוצרי159 ...................................................... 6 אופרטורי העלאה והפחתה עצמית 161 ............................................... ✪ ביטויי 6מורכבי164.........................................................6 ער< מוחזר מאופרטורי העלאה והפחתה עצמית 164 ................................... הער< המוחזר מאופרטורי השמה 169 ................................................ © www.hod-ami.co.il סוגי משתני 6נוספי172...........................................................6 הגדרה ואתחול 173 ................................................................. השמה 173 ......................................................................... קלט ופלט174 ...................................................................... סיכו174...........................................................................6 פרק :6משפטי תנאי 177................................................. ביטויי יחס 177..................................................................... משפט התנאי 180................................................................. if משפט התנאי 185........................................................... if-else קינו 0משפטי 191................................................................. if קינו 0משפטי 194............................................................if-else המשפט 203................................................................. switch גלישה 207 ......................................................................... שורת 212 .................................................................. default אופרטורי 6לוגיי213............................................................. 6 אופרטור וג 6הלוגי 213 ............................................................. אופרטור או הלוגי 216 .............................................................. אופרטור השלילה הלוגי219 ......................................................... שילוב אופרטורי 6לוגיי221 ....................................................... 6 מתוך הספר שפת Cאל השיא צלצלו עכ שיו! 09-9564716 הוצאת הוד-עמי לספרי מחשבים 16 w w w . hod-ami.co.il ✪ ערכי ביטויי יחס 224.......................................................... סיכו231...........................................................................6 פרק :7לולאות233.......................................................... הלולאה 233.................................................................. while הלולאה 242.............................................................. do-while הלולאה 251.....................................................................for ✪ אופרטור הפסיק262 .............................................................. שילוב לולאות ומשפטי תנאי 266................................................... לולאות מקוננות270................................................................ לולאות אינסופיות 279............................................................. ✪ משפטי בקרה נוספי280..................................................... 6 המשפט 280 ................................................................... goto המשפט 283 ................................................................. break המשפט 287 ............................................................... continue סיכו292...........................................................................6 פרק :8פונקציות293....................................................... היתרונות בשימוש בפונקציות 293................................................. הגדרת הפונקציה 294.............................................................. © www.hod-ami.co.il פונקציות פשוטות 296.............................................................. סדר ביצוע פונקציות והחזרה מה300............................................ 0 פונקציות שמקבלות פרמטרי303.................................................6 פונקציות שמחזירות ערכי313................................................... 6 שימושי 6נוספי 6במשפט 320 ................................................. return הצהרת הפונקציה322.............................................................. פונקציות ומשתני327.............................................................6 ✪ אופני הגדרה והצהרה נוספי332............................................ 6 השמטת הער< המוחזר332 .......................................................... השמטת שמות הפרמטרי 6בהצהרת הפונקציה333 .................................... הסגנו 0המסורתי להגדרה ולהצהרה על פונקציה333 ................................... סיכו335...........................................................................6 פרק :9מערכים337......................................................... הצור< במערכי337............................................................... 6 מערכי 6חד9מימדיי338.......................................................... 6 מערכי 6דו9מימדיי347...........................................................6 אתחול מערכי360.................................................................6 אתחול מער< חד9מימדי 360 ......................................................... מתוך הספר שפת Cאל השיא צלצלו עכ שיו! 09-9564716 הוצאת הוד-עמי לספרי מחשבים 17 w w w . hod-ami.co.il אתחול מער< דו9מימדי362 .......................................................... מערכי 6רב9מימדיי365.......................................................... 6 אתחול מער< רב9מימדי 367 ......................................................... שליחת מערכי 6לפונקציות 371.................................................... שליחת מער< חד9מימדי371 ......................................................... שליחת מער< דו9מימדי 377 ......................................................... סיכו379...........................................................................6 פרק :10מחרוזות381..................................................... הקבוע המחרוזתי 381.............................................................. המחרוזת כמער< תווי חד9מימדי 383............................................. אתחול מחרוזות385................................................................ המחרוזות והמשתמש389.......................................................... פלט מחרוזות 389 .................................................................. קליטת מחרוזות 391 ................................................................ הפונקציה 392 ................................................................. gets פונקציות ספריה לטיפול במחרוזות 396........................................... מציאת אור< מחרוזת 397 ........................................................... העתקת מחרוזת 400 ................................................................ © www.hod-ami.co.il הוספת מחרוזת405 ................................................................. השוואת מחרוזות408 ............................................................... מערכי מחרוזות 415................................................................ שליחת מחרוזות לפונקציות 417................................................... שליחת מחרוזת 417 ................................................................ שליחת מער< מחרוזות 417 .......................................................... סיכו418...........................................................................6 נספח א' :על שפת Cושפות אחרות419........................... סוגי שפות תכנות419............................................................... שפת מכונה 419 .................................................................... שפת ס420 ....................................................................... 8 שפה עילית420 ..................................................................... הקשר של שפת Cלשפות התכנות האחרות 422 ....................................... התפתחות שפת 422...............................................................C מ A lgol689ל422 ................................................................. B 9 מ B 9ל423 ....................................................................... C 9 תק423 .................................................................. A N S I C 0 יתרונות השפה וחסרונותיה 424................................................... מתוך הספר שפת Cאל השיא צלצלו עכ שיו! 09-9564716 הוצאת הוד-עמי לספרי מחשבים 18 w w w . hod-ami.co.il תכנות מונחה עצמי 6באמצעות 426......................................... C++ נספח ב' :הודעות שגיאה נפוצות427............................... נספח ג' :התקליטור המצורף והתוכנה 445...........TCLite מה בתקליטור445.................................................................. התיקיות הרלוונטיות לספר 446................................................... קוד המקור446..................................................................... העתקת קבצי קוד המקור לדיסק הקשיח 446 ......................................... תוכנת 447.................................................................. TCLite התקנת התוכנה447 ................................................................. הפעלת התוכנה448 ................................................................. הרצת תוכניות 449 .................................................................. כתיבת עברית בתוכנית 455 .......................................................... מה עוד בתקליטור? 456............................................................ אינדקס 457..................................................................... © www.hod-ami.co.il מתוך הספר שפת Cאל השיא צלצלו עכ שיו! 09-9564716 הוצאת הוד-עמי לספרי מחשבים 19 w w w . hod-ami.co.il פרק 1 אלגוריתמיקה את לימוד מדעי המחשב נפתח בהיכרות עם מושגים בסיסיים הקשורים בתכנות .לאחר מכן נציג בעיות יומיומיות ובעיות ממוחשבות ונראה כיצד לפותרן באופן תיאורטי ,בלי להשתמש במחשב .בפרקים הבאים נשתמש בידע שרכשנו בפרק זה וניישם אותו על ידי תכנות בשפת .C מושגי תכנות בסיסיים המח שבים האי שיים הם חלק מרכזי בחיי נו .הורים מ שתמ שים בהם כדי לפתח את היצירתיות של הפעוטות שלהם; ילדים מ שחקים בהם ב שעות הפ נאי; תלמידים כותבים בהם עבודות להג שה; מדע נים מסתייעים בהם לחי שובים מדעיים מורכבים; חברות מ נהלות באמצעותם את ח שבו נותיהן; מדי נות מאחס נות בהם את נתו ני אזרחיהן ,ועוד. אך לא כל בעיה נית נת לפתרון על ידי מח שב .למ של ,גם המח שבים המ שוכללים ביותר לא יכולים להעריך עבודה בהיסטוריה או לקבוע את גילו המ שוער של אדם על פי תמו נתו – בעוד שכל נער יכול לע שות זאת! © www.hod-ami.co.il בעיות שאי נן מופ שטות ו ש ניתן לפותרן ב שלבים קבועים וברורים מכו נות בעיות לוגיות .דוגמאות לבעיות לוגיות הן חי שוב ממוצע מספרים ,שרטוט מעגל דרך שלו ש נקודות נתו נות ,פתירת מ שוואות מתמטיות וכדומה .אלו הן בעיות שהמח שב יכול לפותרן ,אך לא לפ ני ש נגדיר לו כיצד לע שות זאת. האדם המגדיר הוראות למח שב מכו נה מתכנת ) .( programmerהמתכ נת אחראי על פיתוח התוכ נות המ שמ שות את מ שתמ שי המח שב ,ובידיו כוח רב – ביכולתו לרתום לצידו את כוח העיבוד האדיר של המח שב ,ובכך ליצור תוכ נות רבות-עוצמה מסוגים שו נים. את ההוראות שעל המח שב לבצע כותב המתכ נת בשפת תכנות ) .( programming languageשפת תכ נות היא אמצעי דרכו מועברות ההוראות המילוליות ,ה נכתבות על ידי המתכ נת ,אל המח שב, ב שפה אותה הוא מבין )כפי ש נלמד בהמ שך ,המח שב אי נו מבין י שירות את ההוראות שכותב המתכ נת( .כמו ל שפה מדוברת ,גם ל שפת התכ נות חוקים מ שלה ,ואותם י ש למלא בקפד נות. כ שהחוקים מ שולבים יחדיו נוצרת תוכנית מחשב ) ,( computer programבדומה ל שילוב אוצר מילים ותחביר של שפה מדוברת ליצירת מ שפט מובן .כא שר תופעל תוכ נית המח שב ,תבוצע נה ההוראות המופיעות בה. מתוך הספר שפת Cאל השיא צלצלו עכ שיו! 09-9564716 הוצאת הוד-עמי לספרי מחשבים w w w . hod-ami.co.il 20 תהליך פיתוח טיפוסי של תוכ נית מח שב מוצג באיור הבא: מתכנת נתקל בבעיה מתכנן רצף הוראות לפתירתה מיישמו על-ידי שפת תכנות יוצר תכנית מחשב איור – 1.1תהליך יצירת תוכנית מחשב האלגוריתם רצף הוראות המיועד לפתרון בעיה לוגית כל שהי מכו נה אלגוריתם ) .( algorithmלפ ני ש ניג שים למלאכת התכ נות עצמה )כלומר ,כתיבת ההוראות המיועדות למח שב ב שפת תכ נות( ,נהוג לתכ נן את האלגוריתם שיבצע את הפעולה המבוק שת .נפתח בדוגמה פ שוטה לאלגוריתם המיועד לאדם ,המכיל הוראות כיצד לק נות פחית שתייה ממכו נת מזון אוטומטית: © www.hod-ami.co.il ) (1בחר את המשקה המבוקש ) (2שלשל מטבעות כנדרש לחריץ המטבעות ) (3לחץ על הכפתור המתאים למשקה המבוקש ) (4קח את פחית השתייה שים לב! אלגוריתם זה מיועד ,כמובן ,לאדם .בדרך כלל יעסקו האלגוריתמים ש נפתח בפעולות ממוח שבות ,שהרי מטרת נו היא לגרום למח שב לבצע את הוראות האלגוריתם. כללים בתכנון האלגוריתם נדון עתה בדרי שות שעל האלגוריתם למלא כדי שיהיה נכון ,כלומר ,כדי שי שיג את המטרה ל שמה נכתב. נכון מבחינה תחבירית הוראות אלגוריתם המיועד למח שב נכתבות ,ב שלב זה או אחר ,ב שפת תכ נות .כאמור ,ל שפת התכ נות חוקים להם י ש לציית בדייק נות .אם לא נציית לחוקים אלה כ נדר ש ,תתקבל שגיאה תחבירית ).( sy ntax error נ ניח שב שפת תכ נות כל שהי חיבור ש ני מספרים נע שה על ידי התו ' .'+למ של ,כדי לח שב את סכום המספרים 5ו 6-י ש לכתוב הוראה כזו .5+6 :אם נרצה לבצע הוראה המח שבת סכום זה ,אך מתוך הספר שפת Cאל השיא צלצלו עכ שיו! 09-9564716 הוצאת הוד-עמי לספרי מחשבים 21 w w w . hod-ami.co.il במקום סימן ה '+'-נר שום בטעות את סימן ה ,'@'-כך ,5@6 :תתקבל הוראה שגויה מבחי נה תחבירית. אדם הקורא מ שפט ו נתקל בטעות תחבירית יכול לה שלים את המילים הלא ברורות על פי הק שר המ שפט ,אך לא כן המח שב :פקודה שגויה מבחי נה תחבירית לא תתקבל על ידו. מובן לגורם המבצע הגורם המבצע הוא מי שמבצע את האלגוריתם )אדם ,מח שב אי שי ,רובוט וכדומה( .כדי שהגורם המבצע את האלגוריתם יוכל לבצע את ההוראות המיועדות לו בהצלחה ,עליו להבי נן .הדבר נכון הן לגבי אלגוריתמים המיועדים למח שב והן לגבי אלגוריתמים המיועדים לאדם .למ של ,ההוראה "ח שב את שור שו הריבועי של "1521היא נכו נה אם היא מיועדת למורה למתמטיקה ,אך היא אי נה נכו נה אם היא מיועדת לתלמיד כיתה ב' שזה עתה התחיל את לימודי הח שבון. חד-משמעי על כל הוראה באלגוריתם להיות חד-מ שמעית ,כלומר ,ש ניתן יהיה לבצעה באופן אחד ויחיד. למ של ,האלגוריתם הבא: ) (1קלוט מספר מהמשתמש ) (2אם אפשר ,פלוט את שורשו הריבועי אי נו נכון ,מ שום שהביטוי "אם אפ שר" ניתן לפירו ש באופ נים רבים )אם המספר חיובי? אם המספר שלם? אם המספר קטן ממיליון?( .באופן דומה ,ההוראה "רוץ מספר מטרים" ,המיועדת לאדם ,אי נה נכו נה ,מ שום ש ניתן לבצעה באופ נים רבים ) ש ני מטרים? ע שרה מטרים?(. נכון מבחינה לוגית © www.hod-ami.co.il אלגוריתמים יכולים להיות מורכבים מאוד ולהכיל הוראות רבות .כדי שהבעיה הלוגית תיפתר בהצלחה ,לא מספיק שההוראות תהיי נה נכו נות מבחי נה תחבירית – עליהן גם ,בסופו של דבר, לבצע את המטלה המבוק שת .נסביר זאת על ידי דוגמה פ שוטה .בחן את האלגוריתם הבא, המורה למח שב כיצד לח שב ולפלוט ממוצע של ש ני מספרים נתו נים: ) (1חשב את סכום שני המספרים ) (1חלק את התוצאה ב2- ) (2הצג את התוצאה על המסך אלגוריתם זה הוא מדויק ו נכון .עתה ,בחן את האלגוריתם הבא: ) (1חשב את סכום שני המספרים ) (2הצג את התוצאה על המסך ) (3חלק את התוצאה ב2- באלגוריתם זה הוחלפו שתי ההוראות האחרו נות ,ולכן הוא אי נו פולט את ממוצע ש ני המספרים, אלא את סכומם .כלומר ,למרות שההוראה באלגוריתם נכו נה מבחי נה תחבירית ,האלגוריתם אי נו פותר בהצלחה את הבעיה הלוגית ל שמה הוא נכתב .לכן נאמר כי אלגוריתם זה אי נו נכון מבחי נה לוגית. רוב זמ נו של המתכ נת מו שקע באיתור טעויות לוגיות .טעויות תחביריות מתגלות במהרה )כפי ש נראה בהמ שך ,חוקי שפת התכ נות מגי נים מפ ניהן( ,אך לא כן טעויות לוגיות .טעויות לוגיות עלולות לצוץ בכל שלב של הפיתוח ,במקומות שלא ציפי נו למצאן ,והמח שב לא ידחה אותן. המח שב עוקב אחר הוראותי נו בדיוק ,ועלי נו לוודא שהן אכן מבצעות את המטלה המבוק שת. מתוך הספר שפת Cאל השיא צלצלו עכ שיו! 09-9564716 הוצאת הוד-עמי לספרי מחשבים w w w . hod-ami.co.il 22 אלגוריתמים המיועדים לבני האדם נציג עתה מספר דוגמאות לאלגוריתמים נכו נים ו שגויים המיועדים לאדם. ãåâîä ה נה דוגמה לאלגוריתם מדויק ,המורה לאדם כיצד להיכ נס לבית דרך דלתו ה נעולה באמצעות מפתח: ) (1הכנס את המפתח לחור המנעול ) (2סובב את המפתח סיבוב שלם בכיוון השעון ) (3הוצא את המפתח מהדלת ) (4לחץ על הידית ) (5דחוף קלות את הדלת שים לב! הוראות האלגוריתם הן חד-מ שמעיות ו נית נות בסדר הגיו ני ,אך הן מיועדות לאדם בלבד ) שהרי מח שב אי נו מסוגל לבצע פעולות אלו( .כלומר ,בעוד שהאלגוריתם נכון עבור בן-אדם ,הוא נח שב ל שגוי מבחי נת המח שב. דוגמה © www.hod-ami.co.il נפתח עתה אלגוריתם המורה לאדם כיצד ל שלוח מכתב בדואר: ) (1הכנס את המכתב למעטפה ) (2הדבק בול בפינה הימנית-עליונה של המעטפה ) (3מלא את פרטי המוען והנמען ) (4שלשל את המכתב לתיבת דואר דוגמה בדוגמה זו נבחן אלגוריתם שגוי ,האמור לה נחות את פלו ני כיצד להגיע לתח נת הדלק הקרובה: ) (1המשך לצעוד קדימה עד להצטלבות הרחובות הבאה ) (2פנה שמאלה וצעד כמאה מטרים ) (3פנה ימינה וכעבור זמן קצר היכנס לשביל התחום בפרחים ובוורדים ) (4המשך לצעוד בשביל זה עד שתראה את תחנת הדלק האלגוריתם שגוי מ שום שהוראותיו אי נן חד-מ שמעיות ,שהרי הביטוי "זמן קצר" ניתן להב נה באופ נים שו נים. מתוך הספר שפת Cאל השיא צלצלו עכ שיו! 09-9564716 הוצאת הוד-עמי לספרי מחשבים 23 w w w . hod-ami.co.il אלגוריתמים פשוטים עד כה הצג נו מספר דוגמאות לאלגוריתמים המיועדים לאדם .מעתה נמעיט בדיון על אלגוריתמים "א נו שיים" ,שכן הם אי נם מיועדים למח שב – וספר זה מתמקד בפעולות ממוח שבות .כא שר נפתח אלגוריתמים המיועדים למח שב ,נ שתמ ש במספר הוראות המורות לו לבצע פעולות בסיסיות .על ידי שילוב הגיו ני של הוראות בסיסיות אלו נוכל לפתח אלגוריתמים מורכבים ביותר. שים לב! את ההוראות האלגוריתמיות ש נכיר בפרק זה לא נוכל להריץ י שירות במח שב, מ שום שהן אי נן כתובות ב שפת תכ נות המוב נת לו .הוראות אלו כתובות ב שפה דמוית שפת מח שב ,אך חופ שית ממ נה ,ה נקראת פסאודו-קוד ).( pseudo code הוראת הקלט בפעולת הקלט ) ( inputמתקבלים נתו נים מהאדם המ שתמ ש במח שב ,שיכו נה מעתה המשתמש. בחן ,למ של ,אלגוריתם המורה למח שב כיצד לפלוט ממוצע של ש ני מספרים: ) (1חשב את סכום שני המספרים ) (2חלק את התוצאה ב2- ) (3הצג את התוצאה על המסך אלגוריתם זה הוא חסר מ שמעות אם ש ני המספרים אי נם ידועים .רק כא שר יידע המח שב מהם הערכים שאת הממוצע שלהם עליו להציג ,תופק תועלת מהאלגוריתם .ובכן ,ש ני הערכים בהם תלוי האלגוריתם הם הקלטים ,והם מוז נים על ידי המ שתמ ש. © www.hod-ami.co.il עוצמת הוראות הקלט היא ש ניתן להפעיל את האלגוריתם תוך שימו ש במספרים שו נים בכל פעם, ובכך לה שתמ ש בו פעמים רבות .למ של ,אם ש ני המספרים יהיו 8ו ,20-יוצג המספר ;14אם ש ני המספרים יהיו 100ו ,200-יוצג המספר ,150וכדומה .הפעולות ה נע שות ב ש ני המספרים הן קבועות ,אך מאחר שהמספרים מ שת נים ,מוצגת בכל פעם תוצאה אחרת. כל ערך שמתקבל מהמ שתמ ש בפעולת הקלט מוצב במשתנה ) ,( v ariableהמ שמ ש כאמצעי לאחסון נתו נים .בכל מ שת נה ניתן להציב ערך ,ובהמ שך פעולת האלגוריתם נוכל לקרוא ערך זה ול ש נותו .מעובדה זו ,שערך מ שת נה יכול לה שת נות ,גזור שמו. מ שת נים מיוצגים על ידי שמות המורכבים בעיקר מאותיות לועזיות .לכל מ שת נה יי נתן שם המבדיל אותו מ שאר המ שת נים ,ובאמצעות שם זה נוכל לפ נות אל הערך שבמ שת נה. חוקים במתן שמות למשתנים קיימים ש ני חוקים פ שוטים ב נוגע למתן שמות למ שת נים: ϖשמות מ שת נים יכולים להכיל רק אותיות לועזיות ,ספרות וקו תחתי )_ (. ϖאין להתחיל שם מ שת נה בספרה. שמות מ שת נים חוקיים הם ,למ של number3 ,abc ,x ,ו .f loppy _disk -בתוכ ניות ארוכות מומלץ להע ניק למ שת נים שמות הגיו ניים המרמזים על תפקידם ,כגון tax_rate ,lengthו.perimeter- איך לא... להלן מספר דוגמאות ל שמות מ שת נים לא חוקיים: 1stMonth )אין להתחיל שם מ שת נה בספרה( lov ely day )אין רווח ב שם מ שת נה( מתוך הספר שפת Cאל השיא צלצלו עכ שיו! 09-9564716 הוצאת הוד-עמי לספרי מחשבים 24 w w w . hod-ami.co.il Lotsof $ )אין לה שתמ ש בתו ' '$ב שם מ שת נה( ממוצע )י ש להרכיב שם מ שת נה מאותיות לועזיות( ה נה דוגמה להוראה אלגוריתמית הקולטת ערך מהמ שתמ ש ומציבה אותו במ שת נה ה נקרא :number קלוט מספר למשתנה number כדי לקלוט שלו שה מספרים ולהציבם במ שת נים b ,aו ,c -נכתוב את ההוראות הבאות: ) (1קלוט מספר למשתנה a ) (2קלוט מספר למשתנה b ) (3קלוט מספר למשתנה c ההוראות מוספרו כדי ש נוכל לעקוב אחר הסדר בו הן מבוצעות. שים לב! בפעולת קלט ניתן לקבל נתו נים שו נים מהמ שתמ ש ,כגון הזזת עכבר ,כיבוי והדלקת המדפסת וכדומה .בספר נתמקד בקבלת ערכים מהמקלדת. הוראת הפלט בפעולת הפלט ) ( outputנפלטים נתו נים אל צג המח שב .כדי לפלוט הודעה פ שוטה ,כגון " נא הק ש ש ני מספרים" ,נר שום הוראה אלגוריתמית כזו: © www.hod-ami.co.il הדפס את ההודעה "נא הקש שני מספרים" ניתן להציג באמצעות הוראת הפלט גם ערכי מ שת נים .למ של ,כדי להציג את ערך המ שת נה ,numberנר שום הוראה אלגוריתמית כזו: הדפס את הערך של number דוגמה בדוגמה זו נכתוב אלגוריתם הקולט ש ני מספרים מהמ שתמ ש ופולט אותם בסדר הפוך לסדר בו הוז נו. ) (1קלוט מספר למשתנה num1 ) (2קלוט מספר למשתנה num2 ) (3הדפס את הערך של num2 ) (4הדפס את הערך של num1 אם יוז נו ,למ של ,המספרים 10ו ,20-ייפלטו המספרים 20ו.10- שים לב! בפעולת פלט ניתן לפלוט נתו נים גם למדפסת ,לכרטיס קול ועוד .בספר נתמקד בפליטת ערכים אל צג המח שב. מתוך הספר שפת Cאל השיא צלצלו עכ שיו! 09-9564716 הוצאת הוד-עמי לספרי מחשבים w w w . hod-ami.co.il 25 הוראת ההשמה בפעולת ההשמה ) ( assignmentמקבל מ שת נה ערך כל שהו .שלא כמו בפעולת הקלט ,ערך זה אי נו מוזן על ידי המ שתמ ש ,אלא הוא תוצאה של פעולת חי שוב כל שהי. בכל פעולת ה שמה מפריד חץ המכוון שמאלה בין ש ני שדות: ! משתנה – משמאל לח; ובכיוונו יופיע המשתנה בו יוצב הער<. ! ער& – מימי 0לח; יופיע הער< שיוצב במשתנה. לדוגמה ,הוראה אלגוריתמית המציבה במ שת נה xאת הערך 15תיכתב כך: x ← 15 הערך המוצב במ שת נה יכול להכיל פעולות מתמטיות בסיסיות ,כגון חיבור ,חיסור ,כפל וחילוק. למ של ,הוראה המציבה במ שת נה xאת מכפלת המספרים 3ו 4-תיכתב כך: x←3* 4 ה נה הוראת ה שמה מעט מורכבת יותר: number ← 4 + 3 * 4 - 1 כא שר ייח שב המח שב את הערך שיוצב במ שת נה ,numberהוא י נהג על פי סדר הפעולות המקובל במתמטיקה .כלומר ,פעולת הכפל תבוצע רא שו נה ,אחריה תבוצע פעולת החיבור ואחריה – פעולת החיסור )מ שום שסימן החיבור מופיע לפ ני סימן החיסור( .כלומר ,הוראה זו מחו שבת באופן הבא: number ← (4 + (3 * 4)) - 1 ולכן ,הערך שיוצב במ שת נה numberהוא .15 הטבלה הבאה מציגה את סדר הפעולות על פיו מחו שבים ביטויים מתמטיים: © www.hod-ami.co.il סימן ) הפעולה ( תחימה בסוגריים ^ / * + חזקה ,שור ש ריבועי % - כפל ,חילוק ,שארית חיבור ,חיסור הטבלה ערוכה בסדר יורד ,כלומר ,ככל שפעולה קרובה יותר לרא ש הטבלה ,היא מתבצעת קודם. פעולות ה נמצאות באותה שורה מבוצעות מ שמאל לימין .למ של ,את הביטוי 6 / 2 * 3י ש לקרוא כך ,(6 / 2) * 3 :ולכן ערכו הוא .9 רוב הסימ נים המתמטיים המופיעים בטבלה ודאי אי נם חד שים לך .נתמקד ב ש ני סימ נים מיוחדים: ! הסימ '% ' 0אינו מציי 0אחוזי ,6אלא שארית של חלוקת המספר שמשמאלו במספר שמימינו .למשל ,ער< הביטוי 13 % 6הוא ,1משו 6שהמספר 13מכיל את המספר 6פעמיי ,6והשארית היא .(13 - 6 - 6 = 1) 1 כאשר המספר השמאלי בפעולת שארית קט 0מהמספר הימני ,התוצאה היא המספר השמאלי .למשל ,ער< הביטוי 3 % 4הוא .3 ! הסימ '^' 0מציי 0העלאה בחזקה ,כאשר המספר שמשמאלו הוא בסיס החזקה והמספר שמימינו הוא מערי< החזקה .למשל ,את הביטוי המתמטי ,23שערכו ,8נכתוב כ.2 ^ 3- ניתן לה שתמ ש בערכי מ שת נים בפעולת הה שמה .למ של ,כדי להציב במ שת נה av gאת ממוצע ערכי המ שת נים num1ו ,num2-נכתוב הוראה כזו: av g ← (num1 + num2) / 2 מתוך הספר שפת Cאל השיא צלצלו עכ שיו! 09-9564716 הוצאת הוד-עמי לספרי מחשבים 26 w w w . hod-ami.co.il הסוגריים בהוראה זו הכרחיים ,מ שום שפעולת החילוק מבוצעת לפ ני פעולת החיבור .אילו נכתבה ההוראה בלי סוגריים ,כך: av g ← num1 + num2 / 2 היה מוצב במ שת נה av gסכום הערך שבמ שת נה num1ומחצית הערך שבמ שת נה ,num2ובזאת, כמובן ,לא רצי נו. שים לב! ההוראה האלגוריתמית av g ← (num1 + num2) / 2אי נה מ ש נה את ערכי המ שת נים num1ו .num2-הערך היחיד שמ שת נה בפעולת ה שמה הוא ערך המ שת נה ה נמצא מ שמאל לחץ. עצה כא שר מוצב במ שת נה ביטוי מתמטי מורכב ,ה שתמ ש בסוגריים כדי להקל על קריאתו .למ של ,במקום הביטוי הבא: 7-3*a/b+c כתוב את הביטוי: 7 - ((3 * a) / b) + c שים לב כי לא תחמ נו את כל הערכים המופיעים בביטוי בסוגריים ,כדי לא להק שות על הקריאה שלא לצורך. אותו מ שת נה יכול להופיע מ ש ני צדי חץ הה שמה .למ של ,כדי להעלות ב 2-ערך מ שת נה מסוים, נ ניח ש שמו ,xנכתוב הוראה כזו: © www.hod-ami.co.il x←x+ 2 וכדי להכפיל ב 2-ערך מ שת נה ב שם dנכתוב הוראה כזו: d←d* 2 או הוראה כזו: d←d+d שים לב כי הוראת ה שמה מתבצעת רק באמצעות חץ ,ומ שמאלו יכול להופיע מ שת נה אחד ויחיד. לכן ,ההוראות הבאות אי נן נכו נות: a+b←c num1 ← num2 ← num3 sum = 10 זהירות! פעולות שאסורות באלגברה בסיסית אסורות גם במח שב .למ של ,חלוקה ב0- או הוצאת שור ש ריבועי ממספר שלילי עלולות להביא לקריסת התוכ נית. כמו-כן אין לח שב שארית של חלוקת מספר ב .0-כלומר ,אין לח שב את הביטויים הבאים: num / 0 9 v ase % 0 מתוך הספר שפת Cאל השיא צלצלו עכ שיו! 09-9564716 הוצאת הוד-עמי לספרי מחשבים w w w . hod-ami.co.il 27 הטעויות בביטויים אלה מוב נות מאליהן ,אך ח שוב להפיק מהן לקח לגבי ביטויים מורכבים יותר .למ של ,אם ברצו נ נו לח שב את ערכיהם של ביטויים כגון a / bו ,a % b-ח שוב לוודא כי ערך המ שת נה bאי נו ,0ולפ ני חי שוב הביטוי xי ש לוודא כי המ שת נה xמכיל ערך חיובי. דוגמה בדוגמה זו נכתוב אלגוריתם הפולט את אורך היתר במ שול ש י שר-זווית שאת אורכי ניצביו מזין המ שתמ ש .בהי נתן אורכי ה ניצבים aו b-במ שול ש י שר-זווית ,ניתן למצוא את אורך היתר c על ידי המ שוואה . c = a2 + b2 ) (1קלוט מספר למשתנה a ) (2קלוט מספר למשתנה b )a 2 + b 2 (3 ←c ) (4הדפס את הערך של c אם יוז נו ,למ של ,המספרים 3ו ,4-ייפלט המספר .5 דוגמה האלגוריתם ש נכתוב בדוגמה זו יפלוט את שטחו ואת היקפו של מלבן שאת אורכי צלעותיו הזין המ שתמ ש. ) (1קלוט מספר למשתנה length ) (2קלוט מספר למשתנה w idth )area ← length * w idth (3 © www.hod-ami.co.il ) (4הדפס את הערך של area )perimeter ← 2 * (length + w idth) (5 ) (6הדפס את הערך של perimeter אם הוז נו ,למ של ,המספרים 5ו ,10-ייפלטו המספרים 50ו.30- תנאים הוראות האלגוריתמים שהוצגו עד כה בוצעו תמיד על פי סדר הופעתן .במקרים רבים נרצה לבצע קבוצת הוראות כל שהי אם ת נאי מסוים מתקיים .בסעיף זה נראה כיצד לע שות זאת. ביצוע מותנה באלגוריתמים המיועדים לאדם נ ניח שעלי נו לתכ נן אלגוריתם המיועד לאדם ,הבודק האם י ש צורך בק ניית כיכר לחם .הוראות אלגוריתם כזה ייראו כך: ) (1אם אין בבית כיכר לחם אזי ) (1.1קנה כיכר לחם הוראה ) (1מורכבת מהמילים "אם ...אזי" ומת נאי המופיע בי ניהן .הוראה ) (1.1היא הוראה אלגוריתמית רגילה .אם הת נאי המופיע בהוראה ) (1מתקיים )במקרה זה ,אם אין בבית כיכר לחם( ,תבוצע הוראה )) (1.1במקרה זה" ,ק נה כיכר לחם"( .נהוג לומר כי הוראה ) (1היא הוראת תנאי וכי הוראה ) (1.1שייכת לה. מתוך הספר שפת Cאל השיא צלצלו עכ שיו! 09-9564716 הוצאת הוד-עמי לספרי מחשבים 28 w w w . hod-ami.co.il דוגמה בדוגמה זו נכתוב אלגוריתם עבור אדם המעו ניין לק נות כריך במסעדת מזון מהיר .נדגים את הוראת הת נאי בכך ש ניקח בח שבון אפ שרות שלאדם אין די כסף לק ניית הכריך. ) (1מנה את הכסף שבידיך ) (2מצא כמה עולה כריך ) (3אם בידיך די כסף אזי ) (3.1שלם למוכר ) (3.2קח את הכריך לעיתים קרובות נרצה לבצע קבוצת הוראות אם הת נאי שבהוראת הת נאי אינו מתקיים .הדבר מודגם באלגוריתם הבא: ) (1אם הכנת את שיעורי הבית למחר אזי ) (1.1צפה בטלוויזיה ) (2אחרת ) (2.1הכן את שיעורי הבית למחר הוראה ) (1בודקת האם הוכ נו שיעורי הבית .אם ת נאי זה מתקיים ,תבוצע ההוראה האלגוריתמית ה שייכת להוראת הת נאי ,כלומר ,הוראה ) .(1.1הוראה ) (2מורכבת אך ורק מהמילה "אחרת", והוראה ) (2.1ה שייכת לה תבוצע אם הת נאי שהופיע בהוראה ) (1לא התקיים. שים לב! הוראה מסוג "אם ...אזי ...אחרת" תמיד תבצע אחת )ואחת בלבד( מ שתי קבוצות ההוראות ה שייכות לה .בדוגמה זו ,הוראה אחת בלבד מההוראות ) (1.1ו (2.1)-תתבצע. © www.hod-ami.co.il דוגמה בדוגמה זו נכתוב אלגוריתם המ נחה אדם כיצד לחייג לביתו מטלפון ציבורי. ) (1הרם את שפופרת הטלפון ) (2אם בידך טלכרט אזי ) (2.1הכנס את הטלכרט לחריץ המתאים ) (2.2חייג את המספר המבוקש ) (3אחרת ) (3.1חייג 142לשיחת גוביינא ) (3.2אמור את שמך ) (3.3חייג את המספר המבוקש באלגוריתם זה מ שויכות שתי הוראות להוראת הת נאי ) .(2אם הת נאי המופיע בהוראה זו מתקיים, היי נו ,אם בידי המחייג כרטיס טלכרט ,יבוצעו הוראות ) (2.1ו .(2.2)-אם ת נאי זה אי נו מתקיים, יבוצעו ההוראות ה שייכות להוראה ) ,(3והן הוראות ) (3.2) ,(3.1ו.(3.3)- מתוך הספר שפת Cאל השיא צלצלו עכ שיו! 09-9564716 הוצאת הוד-עמי לספרי מחשבים w w w . hod-ami.co.il 29 ביצוע מותנה באלגוריתמים המיועדים למחשב בעוד ש ניתן לה שתמ ש בת נאים המיועדים לאדם ,לרוב נעסוק בת נאים ממוח שבים .הוראת ת נאי אלגוריתמית המורה למח שב לבדוק ת נאי מסוים ,דומה להוראת הת נאי המיועדת לאדם .ההבדל בין ה שתיים הוא שת נאי ממוח שב תמיד מכיל פעולת יחס כל שהי .ה נה ,למ של ,אלגוריתם הקולט מספר מהמ שתמ ש ומוצא האם הוא מספר שלילי: ) (1קלוט מספר למשתנה number ) (2אם number < 0אזי ) (2.1הדפס את ההודעה "המספר שהוזן הוא שלילי" הת נאי בהוראה ) (2בודק האם ערך המ שת נה numberקטן מ .0-אם ת נאי זה מתקיים ,אזי הוא מספר שלילי ,והוראה ) (2.1מבוצעת .פעולת הבדיקה "קטן מ "...מיוצגת על ידי הסימן '<'. number נהוג לה שתמ ש בסימ ני היחס הבאים בעת כתיבת ת נאים ממוח שבים: דוגמה סימן משמעות < קטן מ... ) a < bהאם ערך המ שת נה aקטן מ של (?b > גדול מ... ) a > bהאם ערך המ שת נה aגדול מ של (?b ≤ קטן או שווה ל... ) a ≤ bהאם ערך המ שת נה aקטן או שווה ל של (?b ≥ גדול או שווה ל... ) a ≥ bהאם ערך המ שת נה aגדול או שווה ל של (?b © www.hod-ami.co.il = שווה ל... ) a = bהאם ערך המ שת נה aשווה ל של (?b >< שו נה מ... ) a <> bהאם ערך המ שת נה aשו נה מ של (?b ת נאי שמתקיים מכו נה תנאי אמת ) ,( true conditionבעוד שת נאי שאי נו מתקיים מכו נה תנאי שקר ) .( f alse conditionהטבלה הבאה מציגה מספר ת נאי אמת ו שקר: תנאי אמת תנאי שקר 1 > 10 - 20 3+1=2-1 -2 ≥ -2 5^2 ≤ 3^2 10 <> 7 3 * (2 + 4) = 10 3+ 1 =2 20 <> 40 / 2 דוגמה האלגוריתם ש נכתוב בדוגמה זו יקלוט שלו שה מספרים מהמ שתמ ש ויפלוט את המספר הגדול ביותר מבי ניהם ,תוך שימו ש בהוראות ת נאי. ) (1קלוט מספר למשתנה a ) (2קלוט מספר למשתנה b ) (3קלוט מספר למשתנה c )x ← a (4 ) (5אם b > xאזי )x ← b (5.1 ) (6אם c > xאזי מתוך הספר שפת Cאל השיא צלצלו עכ שיו! 09-9564716 הוצאת הוד-עמי לספרי מחשבים 30 w w w . hod-ami.co.il )x ← c (6.1 ) (7הדפס את הערך של x הוראה ) (4מציבה את ערך המ שת נה aבמ שת נה .xהוראה ) (5מ שווה בין ערכי המ שת נים bו.x - אם b > xאז גם ,b > aובמקרה זה מבוצעת הוראה ) ,(5.1המציבה את ערך המ שת נה bבמ שת נה .xלאחר ביצוע הוראות אלו יכיל המ שת נה xאת הערך הגדול מבין ערכי המ שת נים aו .b-הוראה ) (6מ שווה בין ערכי המ שת נים cו .x -אם c > xאז גם c > bו ,c > a-ובמקרה זה מבוצעת הוראה ) ,(6.1המציבה את ערך המ שת נה cבמ שת נה .xבאופן זה ,כא שר נפלט ערך המ שת נה x בהוראה ) ,(7נפלט הערך הגדול מבין הערכים שהוז נו. גם באלגוריתמים המיועדים למח שב ניתן לבצע קבוצת הוראות אם הת נאי שבהוראת הת נאי אינו מתקיים .הדבר מודגם באלגוריתם הבא: ) (1קלוט מספר למשתנה a ) (2קלוט מספר למשתנה b ) (3אם a > bאזי ) (3.1הדפס את ההודעה " aגדול מ"b- ) (4אחרת ) (4.1הדפס את ההודעה " aקטן מ b-או שווה לו" הוראה ) (3בודקת האם ערך המ שת נה aגדול מערך המ שת נה .bאם ת נאי זה מתקיים ,תבוצע הוראה ) ,(3.1הפולטת הודעה מתאימה .הוראה ) (4מורכבת אך ורק מהמילה "אחרת" ,והוראה ) (4.1ה שייכת לה תבוצע אם הת נאי שהופיע בהוראה ) (3לא התקיים. © www.hod-ami.co.il דוגמה האלגוריתם הבא ש נכתוב יורה למח שב לקלוט מספר מהמ שתמ ש ולפלוט את שור שו הריבועי .לפ ני הוצאת ה שור ש הריבועי נוודא שהמספר שהוזן אי נו שלילי ,שהרי אין להוציא שור ש ריבועי ממספר שלילי .אם המספר שלילי ,נפלוט הודעת שגיאה. ) (1קלוט מספר למשתנה number ) (2אם number < 0אזי ) (2.1הדפס את ההודעה "שגיאה! אין להוציא שורש ריבועי ממספר שלילי" ) (3אחרת )number (3.1 ← square ) (3.2הדפס את הערך של square התנאי המורכב וגם לעיתים ברצו נ נו לבדוק האם מספר ת נאים מתקיימים במקביל .בחן ,למ של ,את האלגוריתם הפ שוט שהוצג בתחילת סעיף זה: ) (1אם אין בבית כיכר לחם אזי ) (1.1קנה כיכר לחם מתוך הספר שפת Cאל השיא צלצלו עכ שיו! 09-9564716 הוצאת הוד-עמי לספרי מחשבים w w w . hod-ami.co.il 31 אלגוריתם זה נכון לגמרי ,אך הבה נהפכו ל נכון יותר .מאחר שסופרמרקטים סגורים ב שעות מסוימות של היום ,לפ ני ש נק נה כיכר לחם עלי נו לוודא שהסופרמרקט פתוח .אלגוריתם המבצע פעולה זו מוצג להלן: ) (1אם אין בבית כיכר לחם וגם הסופרמרקט פתוח אזי ) (1.1קנה כיכר לחם אלגוריתם זה שו נה מהאלגוריתם הקודם לו ב של תת-ההוראה "וגם ."...תת-הוראה זו מוסיפה להוראה ) (1ת נאי נוסף ,והיא מביאה לכך שמ שפט ) (1.1יתבצע רק אם שני הת נאים שבהוראה ) (1התקיימו. דוגמה בדוגמה זו נכתוב אלגוריתם הקולט שלו שה מספרים ומוצא האם הם הוז נו בסדר עולה. ) (1קלוט מספר למשתנה a ) (2קלוט מספר למשתנה b ) (3קלוט מספר למשתנה c ) (4אם b > aוגם c > bאזי ) (4.1הדפס את ההודעה "המספרים הוזנו בסדר עולה" ) (5אחרת ) (5.1הדפס את ההודעה "המספרים לא הוזנו בסדר עולה" הת נאים של הוראה ) (4נבדקים באמצעות תת-ההוראה "וגם" ,ולכן הוראה ) (4.1תבוצע רק אם ש ניהם מתקיימים .הוראה ) (5.1תבוצע אם אחד מהת נאים של הוראה )) (4או ש ניהם( לא התקיים. © www.hod-ami.co.il במח שבה ש נייה... האם יכולנו להחליף את תנאיה של הוראה ) (4בתנאי ?a < b < c שלא כמו במתמטיקה ,הת נאי a < b < cנח שב שגוי ב שפות תכ נות רבות. בעת פיתוח אלגוריתמים נ שתדל לה שתמ ש בתחביר פ שוט ככל ש ניתן ,כדי שיתאים לכמה שיותר שפות תכ נות .לכן נימ נע מכתיבת ביטויים מורכבים כגון .a < b < c ניתן לה שתמ ש ביותר מת נאי "וגם "...אחד בהוראת ת נאי .האלגוריתם שהצג נו קודם ,למ של, ) (1אם אין בבית כיכר לחם וגם הסופרמרקט פתוח אזי ) (1.1קנה כיכר לחם ניתן לכתיבה באופן מדויק יותר כך: ) (1אם אין בבית כיכר לחם וגם הסופרמרקט פתוח וגם בידך די כסף לקניית כיכר לחם אזי ) (1.1קנה כיכר לחם כדי ל שלב ת נאי נוסף בהוראת הת נאי ,הוספ נו אליה עוד תת-הוראה "וגם ."...לכן ,הוראה )(1.1 תבוצע רק אם שלושת הת נאים המופיעים בהוראת הת נאי מתקיימים. דוגמה האלגוריתם ש נכתוב בדוגמה זו יקלוט מהמ שתמ ש ארבעה מספרים וימצא אם הם שווים זה לזה. ) (1קלוט מספר למשתנה a ) (2קלוט מספר למשתנה b מתוך הספר שפת Cאל השיא צלצלו עכ שיו! 09-9564716 הוצאת הוד-עמי לספרי מחשבים w w w . hod-ami.co.il 32 ) (3קלוט מספר למשתנה c ) (4קלוט מספר למשתנה d ) (5אם a = bוגם b = cוגם c = dאזי ) (5.1הדפס את ההודעה "המספרים שווים זה לזה" ) (6אחרת ) (6.1הדפס את ההודעה "המספרים שונים זה מזה" בהוראה ) (5נבדקים שלו שה ת נאים b = c ,a = b :ו .c = d-ת נאים אלה נבדקים על ידי תת-ההוראה "וגם ,"...ולכן מ שפט ) (5.1יבוצע רק אם שלו שתם מתקיימים ,כלומר ,אם ארבעת המספרים שהוז נו שווים זה לזה .הוראה ) (6.1תתבצע אם אחד מהת נאים שבהוראה ) (5לא התקיים ,כלומר ,אם אחד מהמספרים שהוז נו שו נה מהמספרים האחרים. התנאי המורכב או הוראת ת נאי המכילה תת-הוראות "וגם "...תבצע את ההוראות ה שייכות לה אם כל הת נאים שבה מתקיימים .לעיתים נרצה לבדוק אם אחד מהת נאים מתקיים ,ולא בהכרח כולם .למ של ,נהג מכו נית יעצור את מכו ניתו במקרים רבים; בין היתר ,אם הוא מתקרב לרמזור אדום או לתמרור "עצור" .אלגוריתם המורה ל נהג מתי לעצור את מכו ניתו ייראה כך: ) (1אם לפניך רמזור אדום או לפניך תמרור "עצור" אזי ) (1.1עצור את מכוניתך באלגוריתם זה ה שתמ ש נו בתת-ההוראה "או ,"...ולכן הוראה ) (1.1תבוצע אם אחד מ ש ני הת נאים שבהוראה ) (1מתקיים .ייתכן כי ש ני הת נאים שבהוראה ) (1יתקיימו; גם במקרה זה תתבצע הוראה ) .(1.1הוראת ת נאי המורכבת מתת-ההוראות "או "...תבצע את ההוראות ה שייכות לה אם אחד או יותר מהת נאים שלה התקיימו. © www.hod-ami.co.il דוגמה בדוגמה זו נכתוב אלגוריתם הקולט ש ני מספרים ומוצא האם אחד מהמספרים מתחלק במספר ה ש ני ללא שארית )כלומר ,האם אחד מהמספרים הוא כפולה של ה ש ני(. ) (1קלוט מספר למשתנה a ) (2קלוט מספר למשתנה b ) (3אם a % b = 0או b % a = 0אזי ) (3.1הדפס את ההודעה "אחד מהמספרים מתחלק בשני ללא שארית" ) (4אחרת ) (4.1הדפס את ההודעה "אף אחד מהמספרים אינו מתחלק בשני ללא שארית" הוראה ) (3בודקת האם אחד מהמספרים מתחלק ב ש ני ללא שארית .אם מתקיים אחד מ ש ני הת נאים של הוראה זו ,תתבצע הוראה ) ,(3.1הפולטת הודעה מתאימה .אם ש ני הת נאים אי נם מתקיימים ,תתבצע הוראה ) ,(4.1הפולטת אף היא הודעה מתאימה. שים לב! הביטויים המופיעים בהוראה ) a % b ,(3ו ,b % a-מח שבים שארית של חלוקת מספר בערכי המ שת נים aו .b-מכיון שאסור לח שב שארית של חלוקת מספר ב ,0-על ערכי המ שת נים aו b-להיות שו נים מ .0-בתוכ נית זו לא וידא נו זאת; נע שה זאת בהמ שך. מתוך הספר שפת Cאל השיא צלצלו עכ שיו! 09-9564716 הוצאת הוד-עמי לספרי מחשבים 33 w w w . hod-ami.co.il ניתן לה שתמ ש ביותר מת נאי "או "...אחד בהוראת ת נאי .האלגוריתם שהצג נו קודם ,למ של, ) (1אם לפניך רמזור אדום או לפניך תמרור "עצור" אזי ) (1.1עצור את מכוניתך ניתן לכתיבה באופן מדויק יותר כך: ) (1אם לפניך רמזור אדום או לפניך תמרור "עצור" או כלי רכב נוסע ברחוב אליו אתה נכנס אזי ) (1.1עצור את מכוניתך כדי ל שלב ת נאי נוסף בהוראת הת נאי ,הוספ נו אליו עוד תת-הוראה "או ."...לכן הוראה )(1.1 תבוצע אם אחד או יותר מ שלו שת הת נאים של הוראה ) (1מתקיימים. דוגמה בדוגמה זו נכתוב אלגוריתם הקולט שלו שה מספרים ומוצא האם מספר מסוים הוזן יותר מפעם אחת. ) (1קלוט מספר למשתנה a ) (2קלוט מספר למשתנה b ) (3קלוט מספר למשתנה c ) (4אם a = bאו a = cאו b = cאזי ) (4.1הדפס את ההודעה "אותו מספר הוזן יותר מפעם אחת" ) (5אחרת ) (5.1הדפס את ההודעה "שלושת המספרים שונים זה מזה" הת נאים ה נבדקים בהוראה ) (4מ שולבים באמצעות תת-ההוראה "או ,"...ולכן הוראה )(4.1 תתבצע אם אחד מהם התקיים ,כלומר ,אם הוז נו ש ני מספרים זהים .אם אף אחד מ שלו שת הת נאים לא התקיים ,אזי הוז נו שלו שה מספרים שו נים ,והוראה ) (5.1תתבצע. © www.hod-ami.co.il הוראות תנאי מקוננות לעיתים י ש צורך ל שייך הוראת ת נאי להוראת ת נאי נוספת .בחן ,למ של ,את האלגוריתם שהצג נו קודם לק ניית לחם בסופרמרקט: ) (1אם אין בבית כיכר לחם וגם הסופרמרקט פתוח וגם בידך די כסף לקניית כיכר לחם אזי ) (1.1קנה כיכר לחם נוכל ל שפר את האלגוריתם אם נבדוק ביתר קפד נות את הת נאים הדרו שים לק ניית כיכר הלחם. אם שלו שת הת נאים של הוראה ) (1מתקיימים ,ברור כי ניתן לק נות את כיכר הלחם .אך גם אם רק ש ני הת נאים הרא שו נים מתקיימים ,היי נו ,אם חסר בבית נו כיכר לחם ,הסופרמרקט פתוח ,אך אין בר שות נו מספיק כסף ,עדיין נוכל לק נות את כיכר הלחם אם נ שיג את הכסף הדרו ש .לכן ,נוכל ל שפר את האלגוריתם ולכותבו כך: ) (1אם אין בבית כיכר לחם וגם הסופרמרקט פתוח אזי ) (1.1אם בידך די כסף לקניית כיכר לחם אזי ) (1.1.1קנה כיכר לחם ) (1.2אחרת ) (1.2.1השג את הכסף הדרוש ) (1.2.2קנה כיכר לחם הוראות ) (1.1ו (1.2)-שייכות להוראת הת נאי ) ,(1ולכן הן מתבצעות רק אם בבית נו חסר כיכר לחם והסופרמרקט פתוח .הוראה ) (1.1בודקת אם בר שות נו מספיק כסף; אם כן ,הוראה )(1.1.1 מתבצעת ,וא נו קו נים את כיכר הלחם .אם לא ,הוראות ) (1.2.1ו (1.2.2)-מתבצעות ,וא נו מ שיגים מתוך הספר שפת Cאל השיא צלצלו עכ שיו! 09-9564716 הוצאת הוד-עמי לספרי מחשבים w w w . hod-ami.co.il 34 את הכסף הדרו ש ואחר-כך קו נים את כיכר הלחם .אם ש ני הת נאים של הוראה ) (1מתקיימים, כיכר הלחם נק נה – אך האופן בו הוא נק נה תלוי בת נאי ה נבדק בהוראה ).(1.1 מב נה זה של שילוב הוראת ת נאי בהוראת ת נאי אחרת מכו נה קינון ).( nesting שים לב כי אלגוריתם זה אי נו זהה לאלגוריתם הבא: ) (1אם אין בבית כיכר לחם וגם הסופרמרקט פתוח וגם בידך די כסף לקניית כיכר לחם אזי ) (1.1קנה כיכר לחם ) (2אחרת ) (2.1השג את הכסף הדרוש ) (2.2קנה כיכר לחם הסיבה היא ,שבאלגוריתם האחרון כיכר הלחם נק נה בכל מצב ,בעוד שבאלגוריתם הקודם לו, כיכר הלחם נק נה רק אם אין בבית נו כיכר לחם והסופרמרקט פתוח. נדגים שימו ש בהוראות ת נאי מקו נ נות על ידי שיפור האלגוריתם שהצג נו מקודם ,הקולט מהמ שתמ ש ש ני מספרים ומוצא האם אחד מהם מתחלק ב ש ני ללא שארית .ל שם כך חי שב נו את ערכי הביטויים a % bו ,b % a-אך מאחר שאסור לח שב שארית של חלוקת מספר ב ,0-עלי נו לוודא כי ערכי המ שת נים aו b-שו נים מ 0-לפ ני בדיקת הביטויים .באלגוריתם הקודם לא וידא נו זאת ,ולכן הוא אי נו נכון לגמרי .עתה נ שפרו על ידי בדיקת תקי נות הקלטים. ) (1קלוט מספר למשתנה a ) (2קלוט מספר למשתנה b ) (3אם a = 0או b = 0אזי ) (3.1הדפס את ההודעה "קלט לא חוקי!" © www.hod-ami.co.il ) (4אחרת ) (4.1אם a % b = 0או b % a = 0אזי ) (4.1.1הדפס את ההודעה "אחד מהמספרים מתחלק בשני ללא שארית" ) (4.2אחרת ) (4.2.1הדפס את ההודעה "אף אחד מהמספרים אינו מתחלק בשני ללא שארית" הוראה ) (3.1פולטת הודעה מתאימה אם הוזן קלט לא חוקי )כלומר ,המספר .(0הוראה )(4 וההוראות ה שייכות לה תתבצע נה אם ערכי המ שת נים aו b-שו נים מ .0-ההוראות ה שייכות להוראה ) (4מוצאות האם אחד מהמספרים שהוז נו מתחלק ב ש ני ללא שארית ,ופולטות הודעה מתאימה. לולאות לעיתים קרובות נרצה לבצע קבוצת הוראות כל שהי מספר פעמים .הוראות אלגוריתמיות המאפ שרות לע שות זאת נקראות לולאות ) .( loopsקיימים מספר סוגי לולאות ,ובסעיף זה נכירם. בצע ...פעמים אם ברצו נ נו לבצע קבוצת הוראות כל שהי מספר פעמים ,נ שייך אותה להוראה ה נראית כך: בצע xפעמים כא שר xהוא ערך קבוע או שם של מ שת נה .למ של ,כדי לפלוט את המילה " שלום" ע שר פעמים, נכתוב לולאה כזו: מתוך הספר שפת Cאל השיא צלצלו עכ שיו! 09-9564716 הוצאת הוד-עמי לספרי מחשבים 35 w w w . hod-ami.co.il ) (1בצע 10פעמים ) (1.1הדפס את ההודעה "שלום" אם נרצה לפלוט מילה זו מספר פעמים ה נקבע על ידי המ שתמ ש ,נכתוב את ההוראות הבאות: ) (1קלוט מספר למשתנה n ) (2בצע nפעמים ) (2.1הדפס את ההודעה "שלום" הוראה ) (1קולטת מהמ שתמ ש מספר ומציבה אותו במ שת נה .nהוראה ) (2היא לולאה המתבצעת nפעמים ,כלומר ,מספר פעמים ה שווה למספר שהזין המ שתמ ש .הוראה )(2.1 מבוצעת בכל פעם שהלולאה מתבצעת ,ולכן נפלטת המילה " שלום" nפעמים. שים לב! מ שת נה כגון ,nבאמצעותו מבצעת הלולאה את ההוראות ה שייכות לה מספר פעמים מסוים ,מכו נה משתנה מונה. דוגמה בדוגמה זו נכתוב אלגוריתם הקולט מספר טבעי מהמ שתמ ש ופולט את כל המספרים הטבעיים עד אליו. ) (1קלוט מספר למשתנה n )i ← 1 (2 ) (3בצע nפעמים ) (3.1הדפס את הערך של i © www.hod-ami.co.il )i ← i + 1 (3.2 הוראה ) (1קולטת מספר מהמ שתמ ש ומציבה אותו במ שת נה .nמספר זה יקבע כמה מספרים טבעיים ייפלטו .הוראה ) (3היא לולאה המתבצעת nפעמים .בכל פעם שלולאה זו מתבצעת, מבוצעות הוראה ) (3.1הפולטת את ערך המ שת נה ,iוהוראה ) (3.2המעלה אותו ב.1- הוראה ) (2מציבה את הערך 1במ שת נה .iלכן ,בפעם הרא שו נה שהוראה ) (3.1מתבצעת ערך הוא .1בפעם ה ש נייה שהוראה זו מתבצעת ערכו הוא ) 2בגלל הוראת הה שמה ) ,((3.2בפעם ה שלי שית ערכו ,3וכדומה .הוראה זו מתבצעת nפעמים ,ולכן נפלטים המספרים הבאים: i 1, 2, 3, ... , n ואלה הם כל המספרים הטבעיים עד ל.n- דוגמה האלגוריתם הבא ש נכתוב יקלוט מספר ציו נים מהמ שתמ ש ויפלוט את הממוצע שלהם. מספר הציו נים שיוז נו ייקבע על ידי המ שתמ ש. ) (1קלוט מספר למשתנה n )sum ← 0 (2 ) (3בצע nפעמים ) (3.1קלוט מספר למשתנה grade )sum ← sum + grade (3.2 )av erage ← sum / n (4 ) (5הדפס את הערך של av erage מתוך הספר שפת Cאל השיא צלצלו עכ שיו! 09-9564716 הוצאת הוד-עמי לספרי מחשבים 36 w w w . hod-ami.co.il באלגוריתם זה א נו נעזרים בארבעה מ שת נים .במ שת נה nיוצב הערך הרא שון שיזין המ שתמ ש, שהוא מספר הציו נים שיוז נו .המ שת נה sumיכיל את סכום הציו נים שיוז נו ,והממוצע שלהם יוצב במ שת נה .av erageכל ציון ייקלט ב נפרד למ שת נה .grade הוראות ) (3.1ו (3.2)-מתבצעות nפעמים .בכל פעם שהוראה ) (3.1מתבצעת נקלט מספר מהמ שתמ ש ,ומספר זה מוצב במ שת נה .gradeלאחר כל הז נת ציון מוסיפה הוראה ) (3.2את הציון האחרון שהוזן לערך המ שת נה .sumהמ שת נה sumמכיל את הערך 0לפ ני ביצוע הלולאה )הה שמה מתבצעת בהוראה ) ,((2ולכן בסיום הלולאה הוא יכיל את סכום כל הציו נים שהוז נו. כדי לח שב את הממוצע של nהציו נים עלי נו לחלק את סכומם ב ,n-והדבר נע שה בהוראה ),(4 המציבה במ שת נה av erageאת מ נת ערך המ שת נה sumבערך המ שת נה .nהוראה ) (5פולטת את ערך המ שת נה ,av erageשהוא ממוצע הציו נים שהוז נו. זהירות! כזכור ,אין לבצע חלוקה של מספר ב .0-באלגוריתם זה ,אם הערך הרא שון שהוזן היה ,0ערך המ שת נה nיהיה 0כא שר נחלק בו את .sumפעולה זו הי נה מסוכ נת ,אך נעלים ממ נה עין ו נ ניח שהערך 0אי נו קלט אפ שרי בהוראה ),(1 שהרי במקרה זה לא ייקלט אף ציון ,והאלגוריתם יהיה חסר מ שמעות. דוגמה האלגוריתם ש נכתוב בדוגמה זו יקלוט ע שרה מספרים מהמ שתמ ש ויפלוט את המספר הגדול ביותר מבי ניהם. ) (1קלוט מספר למשתנה biggest ) (2בצע 9פעמים © www.hod-ami.co.il ) (2.1קלוט מספר למשתנה num ) (2.2אם num > biggestאזי )biggest ← num (2.2.1 ) (3הדפס את הערך של biggest הוראה ) (1קולטת מהמ שתמ ש מספר ומציבה אותו במ שת נה .biggestעתה עלי נו לקלוט ת שעה מספרים נוספים ,ולכן הלולאה המוגדרת בהוראה ) (2מתבצעת ת שע פעמים .בכל פעם שלולאה זו מתבצעת מבוצעות הוראות ) (2.1ו .(2.2)-הוראה ) (2.1קולטת מהמ שתמ ש מספר ומציבה אותו במ שת נה .numהוראה ) (2.2בודקת האם המספר האחרון שהוזן גדול מהמספר שבמ שת נה .biggestאם כן ,מתבצעת הוראה ) ,(2.2.1המציבה במ שת נה biggestאת המספר האחרון שהוזן. באופן זה ,לאחר כל פעם שהלולאה מתבצעת יכיל המ שת נה biggestאת המספר הגבוה ביותר שהוזן עד כה .כא שר תסתיים הלולאה ,יכיל המ שת נה biggestאת המספר הגבוה ביותר מכל המספרים שהוז נו ,ובהוראה ) (3ייפלט ערכו. עבור ...מ ...-עד ...בצע נכיר עתה לולאה נוספת בה נהוג לה שתמ ש כדי לבצע קבוצת הוראות מספר פעמים כל שהו. לולאה זו שו נה מהלולאה "בצע ...פעמים" בכך שהיא מעלה ערך מ שת נה כל שהו ב 1-לאחר כל פעם שההוראות ה שייכות לה מתבצעות. מתוך הספר שפת Cאל השיא צלצלו עכ שיו! 09-9564716 הוצאת הוד-עמי לספרי מחשבים w w w . hod-ami.co.il 37 ה נה דוגמה פ שוטה ל שימו ש בה: ) (1עבור iמ 1-עד 10בצע ) (1.1הדפס את הערך של i הלולאה מתבצעת ב שלבים הבאים: .1הוראה ) (1מציבה במ שת נה iאת הערך 1 .2הוראה ) (1.1מתבצעת .3ערך המ שת נה iעולה ב1- שלבים 2ו 3-מבוצעים שוב ו שוב ,עד שערך iהוא ) 10כולל( .כלומר ,בפעם הרא שו נה שהוראה ) (1.1מתבצעת ,ערך המ שת נה iהוא ;1בפעם ה ש נייה ערכו הוא ,2בפעם ה שלי שית ערכו ,3וכן הלאה – עד לפעם הע שירית ,בה ערך המ שת נה iהוא .10הוראה ) (1.1פולטת בכל פעם את ערך המ שת נה ,iולכן מוצגים המספרים הבאים: 10 9, 8, 7, 6, 5, 4, 3, 1, 2, המ שת נה המו נה בלולאה זו הוא ,iאך ניתן לבחור כל מ שת נה כמ שת נה מו נה .בלולאה זו תחום ערכי המ שת נה המו נה עבורם מתבצעת הלולאה הוא מ 1-עד ,10אך ניתן ל ש נות תחום זה. למ של ,כדי לפלוט את המספרים ה שלמים מ 20-עד ,30נכתוב לולאה כזו: ) (1עבור nמ 20-עד 30בצע ) (1.1הדפס את הערך של n בתחילה מוצב במ שת נה nהערך ,20והוראה ) (1.1מתבצעת עד שערך nיגיע ל .30-לכן ייפלטו המספרים הבאים: 30 28, 29, 27, 26, 25, 24, 23, 22, 21, 20, © www.hod-ami.co.il שים לב כי בכל לולאה מסוג זה ערך המ שת נה המו נה עולה ב 1-לאחר כל פעם שקבוצת ההוראות ה שייכת ללולאה מתבצעת .תכו נה זו של הלולאה היא קבועה – ערך המ שת נה המו נה תמיד עולה ב.1- זהירות! אין ל ש נות את ערך המ שת נה המו נה מתוך הלולאה .הלולאה הבאה ,למ של: ) (1עבור iמ 1-עד 10בצע )i ← i * 2 (1.1 נח שבת ללולאה שגויה. דוגמה בדוגמה זו נכתוב אלגוריתם הקולט מהמ שתמ ש ש ני מספרים ופולט את כל המספרים ה שלמים ה נמצאים בי ניהם ומתחלקים ב 3-ללא שארית. ) (1קלוט מספר למשתנה from ) (2קלוט מספר למשתנה to ) (3עבור iמ from -עד toבצע ) (3.1אם i % 3 = 0אזי ) (3.1.1הדפס את הערך i הוראות ) (3.1ו (3.1.1)-פולטות את ערך המ שת נה iאם הוא מתחלק ב 3-ללא שארית .הוראות אלו מבוצעות על ידי הלולאה המוגדרת בהוראה ) ,(3כא שר ערך המ שת נה המו נה iנע בין כל מתוך הספר שפת Cאל השיא צלצלו עכ שיו! 09-9564716 הוצאת הוד-עמי לספרי מחשבים 38 w w w . hod-ami.co.il המספרים ה שלמים בין f romל .to-באופן זה נפלטים כל המספרים המתחלקים ב 3-ללא שארית ה נמצאים בין המספרים שהזין המ שתמ ש. כל עוד ...בצע לעיתים לא ידוע מספר הפעמים שי ש לבצע קבוצת הוראות כל שהי .במקרה זה ,נרצה לבצע את קבוצת ההוראות כל עוד ת נאי מסוים מתקיים .נפתח באלגוריתם פ שוט המיועד לאדם ,המורה לו מתי עליו לאכול: ) (1כל עוד אתה רעב בצע ) (1.1אכול סנדוויץ' בתחילת ביצוע האלגוריתם נבדקת הוראה ) .(1הוראה זו היא לולאה ,ומופיע בה ת נאי המכו נה תנאי לולאה .אם ת נאי הלולאה מתקיים ,תבוצע נה ההוראות ה שייכות ללולאה .לאחר ביצוען ,ייבדק שוב ת נאי הלולאה .אם הוא עדיין מתקיים ,ההוראות ה שייכות ללולאה תבוצע נה שוב ,וחוזר חלילה .הלולאה תסתיים כא שר ת נאי הלולאה לא יתקיים. ת נאי הלולאה באלגוריתם זה מתקיים כל עוד האדם רעב .במקרה זה ,תבוצע ההוראה ה שייכת ללולאה ,המורה לאדם לאכול ס נדוויץ' .לאחר ביצוע הוראה זו שוב ייבדק ת נאי הלולאה ,ואם הוא יתקיים ,ההוראה ה שייכת ללולאה תבוצע שוב – וחוזר חלילה. שים לב! ת נאי הלולאה נבדק לפ ני שהוראות הלולאה מתבצעות .אם ת נאי הלולאה הי נו ת נאי שקרי תמיד ,הוראות הלולאה לא תתבצע נה אפילו פעם אחת. דוגמה בדוגמה זו נכתוב אלגוריתם הקולט ש ני מספרים מהמ שתמ ש ,כא שר ש ניהם טבעיים והרא שון קטן מה ש ני ,ופולט את סכום המספרים הטבעיים ה נמצאים בי ניהם )כולל הם עצמם(. © www.hod-ami.co.il ) (1קלוט מספר למשתנה from ) (2קלוט מספר למשתנה to )sum ← 0 (3 ) (4כל עוד to fromבצע )sum ← sum + from (4.1 )from ← from + 1 (4.2 ) (5הדפס את הערך של sum האלגוריתם מתחיל בקליטת ש ני מספרים ובהצבתם במ שת נים f romו .to-סכום המספרים הטבעיים ה נמצאים בין מספרים אלה יחו שב במהלך הלולאה ולבסוף ייפלט. הוראה ) (4.1מוסיפה למ שת נה sumאת ערך המ שת נה ,f romוהוראה ) (4.2מעלה את ערך המ שת נה f romב .1-שתי הוראות אלו מתבצעות כל עוד ערך המ שת נה f romקטן או שווה לערך המ שת נה ,toולכן ,כ שתיפסק הלולאה ,יכיל המ שת נה sumאת ערך הביטוי הבא: from + (from + 1) + (from + 2) + (from + 3) + ... + to וזהו סכום המספרים הטבעיים ה נמצאים בין f romל.to- דוגמה האלגוריתם ש נכתוב בדוגמה זו יקלוט מספר טבעי מהמ שתמ ש ויפלוט את ספרותיו בסדר הפוך .למ של ,אם יוזן המספר ,3105ייפלטו ספרותיו כך.5013 : ) (1קלוט מספר למשתנה num ) (2כל עוד num > 0בצע )digit ← num % 10 (2.1 מתוך הספר שפת Cאל השיא צלצלו עכ שיו! 09-9564716 הוצאת הוד-עמי לספרי מחשבים 39 w w w . hod-ami.co.il ) (2.2הדפס את הערך של digit )num ← num - digit (2.3 )num ← num / 10 (2.4 כדי לפלוט את ספרות המספר בסדר הפוך נ שתמ ש באופרטור ה שארית .ניעזר בביטוי ,num % 10 המחזיר תמיד את הספרה הימ נית ביותר במספר שבמ שת נה .numהסיבה לכך היא ,שאופרטור ה שארית מחזיר את שארית חלוקת המספר ה שמאלי בימ ני ,וה שארית של חלוקת מספר כל שהו ב 10-היא ספרת האחדות של אותו מספר. הוראה ) (1קולטת מספר מהמ שתמ ש ומציבה אותו במ שת נה .numהוראה ) (2היא לולאה המתבצעת כל עוד .num > 0בכל פעם שלולאה זו מתבצעת ,הוראה ) (2.1מציבה במ שת נה digit את הספרה הימ נית ביותר במ שת נה numוהוראה ) (2.2פולטת ספרה זו. לאחר שטיפל נו בספרה הימ נית ביותר ,ברצו נ נו לטפל בספרה שמ שמאלה .נוכל לע שות זאת בקלות אם נ שמיט מהמספר את ספרתו הימ נית ביותר .באופן זה ,בפעם הבאה שהלולאה תתבצע ,הביטוי num % 10יחזיר את הספרה שמ שמאל לספרה בה טיפל נו בפעם זו שהלולאה התבצעה .כדי לה שמיט את ספרתו הימ נית ביותר של המספר שבמ שת נה numנפחית ממ נו את ספרת האחדות שלו ו נחלקו ב .10-זאת עו שות הוראות ) (2.3ו.(2.4)- כא שר המ שת נה numיכיל מספר חד-ספרתי ,הוראה ) (2.1תציב במ שת נה digitערך ה שווה לו. לאחר שייפלט ערך זה ,המהווה את הספרה האחרו נה ש נותרה במספר ,ההוראה num ← num - digitתציב במ שת נה numאת הערך ,0ומאחר שת נאי הלולאה לא יתקיים, האלגוריתם יסתיים. בצע ...עד ש ... © www.hod-ami.co.il בדומה ללולאה "כל עוד ...בצע" ,הלולאה "בצע ...עד ש "...מבצעת קבוצת הוראות בהתאם לקיומו של ת נאי מסוים .ההבדל בין ה שתיים הוא ,שהלולאה "כל עוד ...בצע" בודקת את הת נאי ואחר כך מבצעת את קבוצת ההוראות )וחוזר חלילה( ,בעוד שהלולאה "בצע ...עד ש "...מבצעת קודם את קבוצת ההוראות ורק אחר-כך בודקת את הת נאי .ה נה דוגמה פ שוטה ל שימו ש בלולאה זו: ) (1בצע ) (1.1קלוט מספר למשתנה x ) (2עד ש x > 0 באלגוריתם זה ,הוראה ) (1מתחילה את הלולאה ,הוראה ) (1.1מהווה את גוף הלולאה ,והוראה ) (2מסיימת את הלולאה .לולאה זו קולטת מהמ שתמ ש מספרים עד שמוזן מספר חיובי ,באופן הבא :רא שית מבוצעת הוראה ) ;(1.1אחר-כך נבדק הת נאי שבהוראה ) .(2אם ת נאי זה מתקיים, הלולאה תסתיים; אם לא ,הוראה ) (1.1תבוצע ב ש נית ,הת נאי ייבדק ב ש נית ,וחוזר חלילה. הטבלה הבאה מציגה את ההבדלים בין הלולאות "כל עוד ...בצע" ו"בצע ...עד ש :"... הבדל "כל עוד ...בצע" "בצע ...עד ש "... בדיקת הת נאי לפ ני ביצוע קבוצת ההוראות ה שייכת ללולאה אחרי ביצוע קבוצת ההוראות ה שייכת ללולאה מספר הפעמים שהוראות הלולאה מתבצעות אפס פעמים או יותר פעם אחת לפחות סיום הלולאה כא שר הת נאי אי נו מתקיים כא שר הת נאי מתקיים מתוך הספר שפת Cאל השיא צלצלו עכ שיו! 09-9564716 הוצאת הוד-עמי לספרי מחשבים w w w . hod-ami.co.il 40 דוגמה בדוגמה זו נפתח אלגוריתם הקולט ע שרה מספרים מהמ שתמ ש ופולט את סכום שור שיהם הריבועיים .ל שם כך נ שתמ ש ב שתי לולאות :בלולאת "עבור ...מ ...-עד ...בצע" ובלולאת "בצע ...עד ש."... )sum ← 0 (1 ) (2עבור iמ 1-עד 10בצע ) (2.1בצע ) (2.1.1קלוט מספר למשתנה num ) (2.2עד ש 0 )num (2.3 num sum ← sum + ) (3הדפס את הערך של sum הוראות ) (2.1ו (2.2)-מהוות לולאה מסוג "בצע ...עד ש ,"...הקולטת מספרים מהמ שתמ ש שוב ו שוב ,עד שמוזן מספר אי -שלילי .כא שר מוזן מספר כזה ,מתבצעת הוראה ) ,(2.3המוסיפה לערך המ שת נה sumאת שור שו הריבועי של המספר האחרון שהוזן .שים לב כי הלולאה "בצע ...עד ש "...מוודאת שלא מחו שב שור ש ריבועי של מספר שלילי. הוראות ) (2.3)-(2.1שייכות ללולאה החיצו נית המוגדרת בהוראה ) ,(2ולכן הן מתבצעות ע שר פעמים .באופן זה מחו שב סכום שור שיהם הריבועיים של ע שרה מספרים אי -שליליים .לאחר שמסתיימת הלולאה החיצו נית מתבצעת הוראה ) ,(3הפולטת את סכום ה שור שים הריבועיים של המספרים האי -שליליים שהוז נו. מב נה זה של שילוב לולאה אחת בלולאה אחרת מכו נה קינון לולאות. אלגוריתמים ומערכים © www.hod-ami.co.il מערך ) ( arrayהוא טיפוס נתו נים המכיל מספר מ שת נים .לעת עתה נתייחס אל מערך כאל מ שת נה המהווה ר שימה של מספרים .בחן ,למ של ,את הר שימה הבאה: 1 4 6 0 -5 7 3 numbers ר שימה זו היא למע שה מערך ה נקרא .numbersבמערך numbersשבעה מספרים ,אותם י ש לקרוא מ שמאל לימין .כלומר ,המספר הרא שון הוא ,3המספר ה ש ני הוא ,7וכדומה. כל מספר נמצא בתא )או באיבר( אחר במערך .כל תא ממוספר באינדקס ) ( indexמ שלו ,כדי ש נוכל להבדילו מתאים אחרים .אי נדקס התא הרא שון הוא ,1ולכל תא אי נדקס הגדול ב 1-מהאי נדקס של התא הקודם .במערך ,numbersלמ של ,המספר 3נמצא בתא בעל האי נדקס ,1המספר 7 נמצא בתא בעל האי נדקס ,2וכן הלאה – עד למספר ,1ה נמצא בתא בעל האי נדקס .7 כדי לפ נות אל מספר כל שהו במערך נציין את אי נדקס התא שלו ,וזאת נע שה על ידי כתיבת שם המערך וציון האי נדקס בסוגריים .למ של ,פ נייה לתא ה ש ני במערך numbersתיע שה כך: ) .numbers(2כל תא במערך נח שב למ שת נה רגיל ,ו ניתן לבצע עליו את כל הפעולות האלגוריתמיות שהכר נו .למ של ,כדי להוסיף 1למספר ה נמצא בתא ה ש ני במערך נכתוב הוראת הצבה כזו: numbers(2) ← numbers(2) + 1 וכדי לפלוט את המספר שבתא ה שביעי במערך נכתוב הוראת פלט כזו: הדפס את הערך של )numbers(7 נהוג לה שתמ ש בלולאת "עבור ...מ ...-עד ...בצע "...כדי לפלוט את כל המספרים שבמערך. הלולאה הבא ,למ של: ) (1עבור iמ 1-עד 7בצע ) (1.1הדפס את הערך של )numbers(i מתוך הספר שפת Cאל השיא צלצלו עכ שיו! 09-9564716 הוצאת הוד-עמי לספרי מחשבים 41 w w w . hod-ami.co.il פולטת את כל המספרים שבתאי המערך .numbers דוגמה בדוגמה זו נפתח אלגוריתם הקולט ע שרה מספרים מהמ שתמ ש ופולט את מכפלת כל אחד מהמספרים ב .2-ל שם כך נ שתמ ש ב ש ני מערכים .המערך aיכיל את המספרים שיזין המ שתמ ש; והמערך bיכיל את מכפלת מספרים אלה ב.2- ) (1עבור iמ 1-עד 10בצע ) (1.1קלוט מספר למשתנה )a(i ) (2עבור iמ 1-עד 10בצע )b(i) ← a(i) * 2 (2.1 ) (2.2הדפס את הערך של )b(i הוראה ) (1היא לולאה המתבצעת ע שר פעמים ,ובמהלכה נקלטים מספרים לכל תאי המערך .a גם הוראה ) (2היא לולאה המתבצעת ע שר פעמים ,והוראה ) (2.1ה שייכת לה מציבה בכל תא במערך bאת מכפלת המספר שבתא המתאים במערך aב .2-הוראה ) (2.2פולטת את המספרים שבתאי המערך .b סיכום ! באמצעות שפת התכ נות מגדיר המתכ נת למח שב רצף הוראות הפותר בעיה לוגית נתו נה. רצף הוראות זה מכו נה אלגוריתם. ! הוראות האלגוריתם צריכות להיות נכו נות מבחי נה תחבירית ולוגית ,חד-מ שמעיות ומוב נות לגורם המבצע אותן. © www.hod-ami.co.il ! מ שת נה הוא אמצעי לאחסון נתו נים. ! הוראת הקלט קולטת ערך מהמ שתמ ש אל תוך מ שת נה. ! הוראת הפלט מציגה נתו נים על צג המח שב. ! הוראת הה שמה מציבה ערך כל שהו במ שת נה. ! ת נאי מורכב מסימן יחס המופיע בין ש ני ערכים .הת נאי מתקיים אם סימן היחס מבטא נכו נה את היחס בין ש ני הערכים. ! הוראת הת נאי "אם ...אזי" מבצעת את ההוראות ה שייכות לה אם הת נאי שלה מתקיים. ! הוראת הת נאי "אם ...אזי ...אחרת" מבצעת קבוצת הוראות אחת אם הת נאי שלה מתקיים, וקבוצת הוראות אחרת אם הוא אי נו מתקיים. ! הוראת ת נאי המכילה תת-הוראות "וגם "...תבצע את ההוראות ה שייכות לה אם כל הת נאים שבה מתקיימים. ! הוראת ת נאי המכילה תת-הוראות "או "...תבצע את ההוראות ה שייכות לה אם אחד מהת נאים שבה מתקיים. ! לולאה מבצעת קבוצת הוראות מסוימת מספר פעמים ידוע מרא ש או בהתאם לת נאי. ! מערך הוא טיפוס נתו נים המאגד בתוכו כמה מספרים .כל מספר נמצא בתא אחר במערך, ו ניתן להתייחס אליו כאילו היה ערך של מ שת נה רגיל. מתוך הספר שפת Cאל השיא צלצלו עכ שיו! 09-9564716 הוצאת הוד-עמי לספרי מחשבים 42 w w w . hod-ami.co.il פרק 2 תרשימי זרימה את האלגוריתמים שפיתחנו בפרק הקודם ייצגנו על ידי רשימה ממוספרת של הוראות מילוליות .דרך נוספת לייצג אלגוריתמים היא על ידי תרשימים ,המורכבים מצורות הנדסיות בהן רשומות הוראות האלגוריתם ,וחיצים המקשרים ביניהן, ובכך מורים על סדר ביצוע ההוראות .בפרק זה נכיר את תרשימי הזרימה ונלמד כיצד לשרטט אותם. תרשימי זרימה פשוטים תרשים זרימה ) ( f lowchartמבטא בצורה גרפית את הוראותיו של אלגוריתם מסוים .כא שר בעיה לוגית עומדת בפ ני נו ,נוח ל שרטט את תר שים הזרימה כמעין סקיצה רא שו נית לפ ני ש ניג שים למלאכת התכ נות עצמה .כל הוראה באלגוריתם מיוצגת על ידי צורה ה נדסית שו נה בתר שים הזרימה ,ובין כל צורה לצורה נמתח חץ המורה על סדר ביצוע ההוראות. © www.hod-ami.co.il תרשימי זרימה המיועדים לאדם רוב תר שימי הזרימה ש נפתח מיועדים למח שב ,אך ל שם ההת נסות נחרוג מהרגל נו ו נפתח מספר תר שימי זרימה המיועדים לאדם .בתר שימי זרימה כאלה ,כל הוראה באלגוריתם מיוצגת בתוך מלבן. נפתח בתר שים זרימה המתאר כיצד י ש להזמין מזון באמצעות הטלפון .רא שית נקבע את הוראות האלגוריתם עליו יתבסס תר שים הזרימה. ) (1בחר את המזון שברצונך להזמין ) (2בחר את הרשת שממנה ברצונך להזמין ) (3מצא את טלפון סניף הרשת הקרוב לביתך ) (4טלפן אל הסניף ) (5מסור את פרטיך ואת בקשתך עתה נפתח את תר שים הזרימה המתאים לאלגוריתם זה .נתחיל בכתיבת כל הוראה אלגוריתמית בתוך מלבן .למ של ,ההוראה הרא שו נה תיוצג כך: בחר את המזו0 שברצונ< להזמי0 ההוראה ה ש נייה תיוצג כך: בחר את הרשת שממנה ברצונ< להזמי0 וכדומה .באופן זה נייצג כל הוראה במלבן מ שלה .לאחר מכן נחבר בחץ כל מלבן עם המלבן שבא אחריו .תר שים הזרימה המתקבל מפעולה זו מוצג להלן: מתוך הספר שפת Cאל השיא צלצלו עכ שיו! 09-9564716 הוצאת הוד-עמי לספרי מחשבים w w w . hod-ami.co.il 43 בחר את המזו0 שברצונ< להזמי0 בחר את הרשת שממנה ברצונ< להזמי0 מצא את טלפו 0סני8 הרשת הקרוב לבית< טלפ 0אל הסני8 מסור את פרטי< ואת בקשת< איור – 2.1תרשים זרימה להזמנת אוכל באמצעות הטלפון דוגמה בדוגמה זו נפתח תר שים זרימה המתאים לאלגוריתם ל שמירה על היגיי נת ה שי ניים. האלגוריתם יכיל את ההוראות הבאות )אותן י ש לבצע פעמיים ביום(: ) (1צחצח את שיניך ) (2שטוף את פיך במי-פה ) (3נקה את שיניך בחוט דנטלי כדי ל שרטט את תר שים הזרימה נייצג כל הוראה במלבן מ שלה ו נמתח חיצים בין המלב נים שיתקבלו .תר שים הזרימה הסופי מוצג להלן: © www.hod-ami.co.il צחצח את שיני< שטו 8את פי< במי9פה נקה את שיני< בחוט דנטלי איור – 2.2תרשים זרימה לשמירה על היגיינת הפה מתוך הספר שפת Cאל השיא צלצלו עכ שיו! 09-9564716 הוצאת הוד-עמי לספרי מחשבים 44 w w w . hod-ami.co.il ייצוג פעולות אלגוריתמיות כזכור ,אלגוריתמים המיועדים למח שב מורכבים מרצף של הוראות אלגוריתמיות )קלט ,פלט, ה שמה ,ת נאים ולולאות( .כא שר נ שרטט תר שימי זרימה המיועדים למח שב ,נייצג את ההוראות האלגוריתמיות הללו על ידי צורות ה נדסיות שו נות. פעולת הקלט פעולת קלט מיוצגת בתר שים הזרימה על ידי מקבילית ,כא שר ברא שה מופיעה המילה "קלט" ובמרכזה – שמות המ שת נים בהם יוצבו הערכים ה נקלטים .למ של ,ההוראה האלגוריתמית הבאה: קלוט מספר למשתנה x תיוצג בתר שים הזרימה כך: קלט x ניתן ל שלב מספר הוראות קלט אלגוריתמיות במקבילית אחת .למ של ,את ההוראות הבאות: ) (1קלוט מספר למשתנה a ) (2קלוט מספר למשתנה b ניתן לייצג בתר שים הזרימה על ידי שתי המקביליות הבאות ,כא שר הן מופיעות אחת אחרי ה ש נייה: קלט a © www.hod-ami.co.il קלט b או על ידי המקבילית הבודדת הבאה: קלט a, b הערכים שיוז נו יוצבו במ שת נים שבמקבילית על-פי סדר הופעתם .כלומר ,הערך הרא שון יוצב במ שת נה ה שמאלי ביותר ,הערך ה ש ני במ שת נה שמימי נו וכדומה .בדוגמה זו ,אם הזין המ שתמ ש את הערכים 4ו ,6-יכיל המ שת נה aאת הערך 4והמ שת נה bאת הערך .6 פעולת הפלט גם פעולת פלט מיוצגת בתר שים הזרימה על ידי מקבילית .ברא שה תופיע המילה "פלט" ובמרכזה – ההודעה או המ שת נים שברצו נ נו להציג .הודעה מילולית נתחום בגר שיים .למ של ,ההוראה האלגוריתמית הבאה: הדפס את ההודעה "שלום" תיוצג בתר שים הזרימה כך: פלט "שלו"6 מתוך הספר שפת Cאל השיא צלצלו עכ שיו! 09-9564716 הוצאת הוד-עמי לספרי מחשבים w w w . hod-ami.co.il 45 פליטת ערך של מ שת נה תתבצע על ידי כתיבת שמו במרכז המקבילית )בלי גר שיים( .למ של, ההוראה האלגוריתמית הבאה: הדפס את הערך של y תיוצג בתר שים הזרימה כך: פלט y ניתן לפלוט מספר ערכי מ שת נים בהוראת פלט אחת על ידי הפרדתם בפסיק .למ של ,את ההוראות הבאות: ) (1הדפס את הערך של x ) (2הדפס את הערך של y ניתן לייצג בתר שים הזרימה על ידי המקבילית הבאה: פלט x, y גם בפעולת הפלט נפלטים ערכי המ שת נים בהתאם לסדר בו הם מופיעים במקבילית ,כא שר ה שמאלי ביותר נפלט רא שון .לכן ,המקבילית שלעיל מייצגת פעולה זהה לפעולה שמייצגות שתי המקביליות הבאות ,כ שהן מופיעות בזו אחר זו: פלט פלט x © www.hod-ami.co.il y ניתן לפלוט ערכי מ שת נים יחד עם הודעה מילולית .למ של ,את ההוראות הבאות: ) (1הדפס את הערך של a ) (2הדפס את ההודעה ">" ) (3הדפס את הערך של b נייצג בתר שים הזרימה על ידי המקבילית הבאה: פלט a, ">", b שים לב כי שמות המ שת נים וההודעה הופרדו זה מזה בפסיקים. זהירות! הוראת הפלט דומה מאוד להוראת הקלט ,ועליך להיזהר לבל תתבלבל בי ניהן. לדוגמה ,שתי המקביליות הבאות: פלט sting קלט sting אי נן מייצגות הוראות זהות .המקבילית ה שמאלית קולטת ערך למ שת נה ואילו הימ נית פולטת את ערכו. מתוך הספר שפת Cאל השיא sting צלצלו עכ שיו! 09-9564716 הוצאת הוד-עמי לספרי מחשבים w w w . hod-ami.co.il 46 פעולת ההשמה פעולת ה שמה מיוצגת בתר שים הזרימה על ידי מלבן .למ של ,את ההוראה הבאה: x ← 15 נייצג בתר שים זרימה כך: ! 15 x ואת ההוראה הבאה: av g ← a / 3 נייצג בתר שים זרימה כך: a/3 ! avg תרשימי זרימה המיועדים למחשב לאחר שראי נו כיצד כל הוראה אלגוריתמית בסיסית מיוצגת בתר שים זרימה ,ברצו נ נו לפתח תר שימי זרימה המייצגים אלגוריתמים ממוח שבים מלאים .אך לפ ני-כן עלי נו להכיר ש ני מרכיבים ח שובים הקיימים בכל תר שים זרימה מלא :אליפסת התחלה ואליפסת סוף .אליפסות אלו מופיעות בכל תר שים זרימה המיועד למח שב ,והן תוחמות אותו באופן הבא: התחלה אליפסת ההתחלה מציי נת את התחלת האלגוריתם ,והיא תופיע תמיד ברא ש תר שים הזרימה ,לפ ני כל הוראה אחרת. © www.hod-ami.co.il סוף אליפסת הסוף מציי נת את סוף האלגוריתם ,והיא תופיע תמיד בסוף תר שים הזרימה ,אחרי כל הוראה אחרת. בין אליפסת ההתחלה לצורה הבאה אחריה ובין אליפסת הסוף לצורה הבאה לפ ניה נמתח חיצים, כך: התחלה סוף דוגמה כדוגמה רא שו נה נציג תר שים זרימה לאלגוריתם הקולט ש ני מספרים ופולט את סכומם. לפ ני פיתוח תר שים הזרימה נקבע את הוראות האלגוריתם המתאים לו: ) (1קלוט מספר למשתנה num1 ) (2קלוט מספר למשתנה num2 )sum ← num1 + num2 (3 ) (4הדפס את הערך של sum מתוך הספר שפת Cאל השיא צלצלו עכ שיו! 09-9564716 הוצאת הוד-עמי לספרי מחשבים w w w . hod-ami.co.il 47 עתה נייצג כל הוראה על ידי הצורה הה נדסית המתאימה לה .הוראות ) (1ו (2)-תיוצג נה על ידי מקבילית קלט כזו: קלט num1, num2 הוראה ) (3תיוצג על ידי מלבן כזה: ! sum num1 + num2 הוראה ) (4תיוצג על ידי מקבילית פלט כזו: פלט sum לבסוף נמתח חיצים בין שלו ש הצורות ו נוסיף לתר שים הזרימה את אליפסות ההתחלה והסוף. תר שים הזרימה הסופי ייראה כך: התחלה קלט num1, num2 © www.hod-ami.co.il ! sum num1 + num2 פלט sum סוף איור – 2.3תרשים זרימה לפליטת סכום ערכים דוגמה בדוגמה זו יוצג תר שים זרימה של אלגוריתם לחי שוב מ שכורתה ה שבועית של מוכרת בבוטיק .מ שכורת זו תיקבע על-פי שלו שה ערכים שיזין המ שתמ ש :כמה ימים עובדת המוכרת ב שבוע ,כמה שעות היא עובדת בכל יום וכמה מ שלמים לה עבור שעת עבודה .כרגיל ,לפ ני פיתוח תר שים הזרימה נכתוב את הוראות האלגוריתם אותו הוא מייצג: ) (1קלוט מספר למשתנה day s ) (2קלוט מספר למשתנה hours ) (3קלוט מספר למשתנה pay )s ← day s * hours * pay (4 ) (5הדפס את הערך של s מתוך הספר שפת Cאל השיא צלצלו עכ שיו! 09-9564716 הוצאת הוד-עמי לספרי מחשבים w w w . hod-ami.co.il 48 עתה נייצג כל הוראה באמצעות הצורה הה נדסית המתאימה לה ,נוסיף אליפסות התחלה וסוף ו נמתח בי ניהם חיצים. תר שים הזרימה שמתקבל מוצג להלן: התחלה קלט days, hours, pay s ! days * hours * pay פלט s סוף איור – 2.4תרשים זרימה לחישוב משכורת חודשית תרשימי זרימה בעלי תנאים © www.hod-ami.co.il כזכור ,כל הוראת ת נאי מורכבת מת נאי ,על-פיו נקבע אילו הוראות תתבצע נה .ת נאי מיוצג בתר שים זרימה על ידי מעוין .למ של ,הת נאי 4 8מיוצג בתר שים זרימה כך: 4≤ 8 בתר שים זרימה ניתן לייצג רק הוראות ת נאי מסוג "אם ...אזי ...אחרת" .ל שם כך ,נוציא מהמעוין ש ני חיצים ,כא שר כל חץ יצביע על קבוצת הוראות אחרת ,המכו נה ענף ) .( branchעל-פי הת נאי יוחלט איזה ע נף הוראותיו יתבצעו :אם הת נאי מתקיים ,תבוצע נה הוראותיו של ע נף אחד; אם לא, תבוצע נה הוראותיו של הע נף האחר. כדי להבדיל בין ש ני הע נפים עלי נו להבדיל בין החיצים המצביעים עליהם .ל שם כך נסמן חץ אחד בכן וחץ ש ני בלא. ] עד פה פרק .2דילוג עד לסוף הפרק [ סיכום ! תר שים זרימה הוא אמצעי גרפי לייצוג אלגוריתם. ! כל הוראה באלגוריתם מיוצגת על ידי צורה אחרת בתר שים הזרימה :הוראות הפלט והקלט – במקבילית; הוראת הה שמה – במלבן; הוראת הת נאי – במעוין. ! כל תר שים זרימה מתחיל באליפסת התחלה ומסתיים באליפסת סוף. ! בין צורות תר שים הזרימה נמתחים חיצים הקובעים את סדר ביצוע ההוראות. מתוך הספר שפת Cאל השיא צלצלו עכ שיו! 09-9564716 הוצאת הוד-עמי לספרי מחשבים 49 w w w . hod-ami.co.il ! הוראת ת נאי המכילה תת-הוראה "וגם "...מיוצגת בתר שים זרימה על ידי הוראות ת נאי מקו נ נות. ! לולאות מיוצגות בתר שים זרימה על ידי הוראת ת נאי הבודקת האם ת נאי מסוים מתקיים, ובמידת הצורך חוזרת להוראה קודמת. © www.hod-ami.co.il מתוך הספר שפת Cאל השיא צלצלו עכ שיו! 09-9564716 הוצאת הוד-עמי לספרי מחשבים w w w . hod-ami.co.il 50 פרק 5 משתנים בפרק הראשון הכרנו לראשונה את המשתנים ,באמצעותם קלטנו ערכים מהמשתמש וביצענו חישובים שונים .המשתנים בשפת Cמיועדים לאותה מטרה ,אך השימוש בהם הוא מעט יותר מורכב .למשל ,ניתן להגדיר משתנים מסוגים שונים ולהציב בהם ערכים באופנים רבים יותר משהכרנו עד כה .השימוש במשתנים אינו קשה כלל ,אך הוא ישפר את תוכניותינו עד מאוד. מהו משתנה? משתנים ) ( v ariablesהם ,כאמור ,אמצעי אחסון ל נתו נים .גם ב שפת Cנ שתמ ש תכופות במ שת נים .ה שימו ש בהם הכרחי אם ברצו נ נו לקלוט ערכים מהמ שתמ ש ,לבצע חי שובים מתמטיים מורכבים ועוד. מ שת נים אי נם קיימים בתוכ נית נו י ש מאין .כל מ שת נה קיים בזיכרון המח שב ותופס שטח מסוים ממ נו .ב שפת Cקיימים מספר סוגי מ שת נים ולכל סוג גודל מ שלו ,כלומר ,שטח שו נה שהוא תופס בזיכרון. © www.hod-ami.co.il במח שבה ש נייה... האם ייתכן מצב בו נגדיר משתנים רבים ,שיתפסו את כל שטח הזיכרון? הסיכוי לכך ,לפחות ב שלב זה של התכ נות ,קלו ש .גם סוגי המ שת נים הגדולים ביותר תופסים שטח מזערי מאוד מסך-כל שטח הזיכרון .למ של, כיום מח שבים חדי שים כוללים 128מיליון תאי זיכרון ,בעוד שהמ שת נה הגדול ביותר ב שפת Cתופס ,לרוב ,כע שרה תאי זיכרון בלבד! כזכור ,כל מ שת נה מיוצג על ידי שם ,המבדיל אותו ממ שת נים אחרים .שמות מ שת נים הם מילים המורכבות מאותיות לועזיות ,מספרות ומקו תחתי )_ ( .שמות המ שת נים יכולים להכיל תו אחד או תווים רבים )רוב המהדרים יקבלו לפחות 31תווים ב שמות מ שת נים( ,אך אסור שיתחילו בספרה. ב שלב זה לא נרחיב ב נו שא ,מ שום שהתעמק נו בו בפרק .1חזור ל נאמר בפרק זה במידת הצורך. כמו-כן ,אין לקרוא למ שת נים ב שמות של מילים שמורות ב שפת .Cלמ של ,שמות המ שת נים ו if -אי נם חוקיים ,מ שום שקיימות מילים שמורות כאלו .לעת עתה נקבע ,כי אין לקרוא ל ש ני מ שת נים ה שייכים לאותה תוכ נית באותו שם. f or איך לא... שמות המ שת נים הבאים אי נם נכו נים: 98salary c++ ben&jerry s ממ וצע מתוך הספר שפת Cאל השיא אין להתחיל שם מ שת נה בספרה התו ' '+אי נו מותר ב שם מ שת נה התו '&' אי נו מותר ב שם מ שת נה אין לקרוא ל שם מ שת נה בעברית צלצלו עכ שיו! 09-9564716 הוצאת הוד-עמי לספרי מחשבים w w w . hod-ami.co.il 51 הצבת ערכים בפרק ה ש ני ראי נו כיצד להציב ערכים במ שת נים באמצעות פעולת הצבה אלגוריתמית ,כדוגמת זו: var ! 12 כזכור ,בכל פעולת הצבה כזו מפריד חץ בין ש ני שדות :ה שדה ה שמאלי הוא מ שת נה ,וה שדה הימ ני הוא ביטוי שערכו מוצב במ שת נה. גם ב שפת Cניתן להציב ערכים במ שת נים .בדומה להוראת ההצבה שלעיל ,בהוראת הצבה ב שפת Cקיימים ש ני שדות ,מ שת נה וביטוי ,אך הם מופרדים זה מזה על ידי סימן שוויון )= ( ולא על ידי חץ .סימן שוויון זה מכו נה אופרטור השמה ) .( assignment operatorלמ של ,הוראת הצבה ב שפת Cה שקולה להוראה האלגוריתמית שלעיל נראית כך: ;v ar = 12 הוראה ב שפת Cהמציבה ערך במ שת נה נקראת משפט הצבה או משפט השמה .( statementשים לב כי לאחר פעולת ההצבה הוספ נו נקודה-פסיק .בי נתיים נקבע כי חובה על תו זה להופיע בסופה של כל הוראת הצבה. ) assignment כאן המקום להגדיר מהו משפט ) ( statementב שפת .Cמ שפט ב שפת Cהוא הוראה המבצעת פעולה זו או אחרת ,כגון פליטת מלל והצבת ערכים במ שת נים .כל מ שפט )פרט לסוג מיוחד אותו נכיר בהמ שך( מסתיים ב נקודה-פסיק .התוכ נית מורכבת ממ שפטים ,ואלה מורכבים מחלקים תחביריים נוספים. כפי שראי נו בפרק הרא שון ,ניתן להציב במ שת נים ביטויים מורכבים הכוללים ערכי מ שת נים אחרים ואופרטורים אריתמטיים .מתוך האופרטורים האריתמטיים שהכר נו בפרק הרא שון, באופרטורים הבאים ניתן לה שתמ ש ב שפת :C © www.hod-ami.co.il ) ( % * / + - לעומתם ,האופרטורים של חזקה ו שור ש: ^ לא קיימים ב שפת ,Cולכן אסור לה שתמ ש בהם .אם נרצה לח שב חזקה או שור ש של מספר כל שהו ,נ שתמ ש בפו נקציות מיוחדות ש נכיר בהמ שך. הביטוי שערכו מוצב במ שת נה נכתב בדומה לביטוי שהופיע בפעולת ההצבה האלגוריתמית. למ של ,כדי להציב במ שת נה xאת שארית חלוקת המספר 14ב ,4-נבצע מ שפט הצבה כזה: /* x now equals 2 */ ;x = 14 % 4 כדי להציב במ שת נה numאת מכפלת ערך המ שת נה aב ,2-נבצע מ שפט הצבה כזה: /* num now equals a + a */ ;num = a * 2 סימן המי נוס מ שמ ש הן לקבלת הפר ש ש ני מספרים והן לייצוג ערך נגדי של מספר .למ של, המ שפט הבא: /* dif f now equals 4 */ ;dif f = 10 - 6 מציב במ שת נה dif fאת הפר ש המספרים 10ו .6-לעומתו ,המ שפט הבא: /* neg now equals -num */ ;neg = -num מציב במ שת נה negאת הערך ה נגדי לערך שבמ שת נה ) numאם ,למ של ,המ שת נה numמכיל את הערך ,7במ שת נה negיוצב הערך .(-7 מתוך הספר שפת Cאל השיא צלצלו עכ שיו! 09-9564716 הוצאת הוד-עמי לספרי מחשבים w w w . hod-ami.co.il 52 שים לב! אם תבצע ה שמה בין ש ני מ שת נים ,ומאוחר יותר י שת נה הערך של אחד מהם ,ערך המ שת נה ה ש ני לא י שת נה .פעולת הה שמה היא חד-פעמית ואי נה מבטיחה כי ערכי המ שת נים לא י שת נו בהמ שך. סדר הפעולות ב שפת Cזהה לסדר הפעולות במתמטיקה .למ של ,כפי שבמתמטיקה פעולת הכפל קודמת לפעולת החיבור ,כך ב שפת Cקודמת פעולת אופרטור הכפל לזו של אופרטור החיבור .את סדר הפעולות ב שפת Cנהוג לר שום בטבלה ,המציגה אילו מהאופרטורים מבוצעים קודם .טבלת קדימויות האופרטורים ב שפת Cהיא כזו )הטבלה ערוכה בסדר יורד ,כלומר ,ככל שהאופרטור קרוב לרא ש הטבלה ,קדימותו גבוהה יותר(: אופרטורים ) ( - % הערות מיוחדות + / - אופרטורי פלוס ומי נוס אלה מופיעים לפ ני ערך בודד וקובעים את סימ נו )חיובי או שלילי( * + אופרטורי פלוס ומי נוס אלה מופיעים בין ש ני ערכים ומבצעים פעולת חיבור או חיסור בי ניהם = © www.hod-ami.co.il שים לב! פעולות מתמטיות הזהות בקדימותן תבוצע נה מ שמאל לימין .למ של ,ערך הביטוי 6 / 2 * 3הוא כ של הביטוי ,(6 / 2) * 3כלומר.9 , לכן ,כדי להציב במ שת נה av erageאת הממוצע של שלו שה ציו נים ,המיוצגים על ידי המ שת נים grade2 ,grade1ו ,grade3-נבצע מ שפט ה שמה ה נראה כך: ;av erage = (grade1 + grade2 + grade3) / 3 מותר להוסיף סוגריים עודפים מסביב לקבועים ,ל שמות מ שת נים ולביטויים ,אך רצוי לא להגזים בכך ,כדי לא להק שות על קריאת התוכ נית .למ של ,את המ שפט הקודם ניתן לכתוב כך: ;))av erage = (((grade1) + (grade2) + (grade3)) / (3 זהירות! כמו במתמטיקה ,גם ב שפת Cאסור לחלק מספר ב .0-ב נוסף ,אסור לח שב שארית חלוקת מספר ב .0-לכן ,ש ני מ שפטי הה שמה הבאים: /* dangerous! */ /* dangerous! */ ;min = num / 0 ;f ar = low % 0 הם נכו נים מבחי נה תחבירית ,אך מסוכ נים .ביצועם עלול לגרום לקריסת התוכ נית. האיור הבא מציג את תב נית הכתיבה של מ שפט הה שמה: מתוך הספר שפת Cאל השיא צלצלו עכ שיו! 09-9564716 הוצאת הוד-עמי לספרי מחשבים w w w . hod-ami.co.il 53 אופרטור השמה שם המשתנה בו יוצב ערך הביטוי ; sum = a + b + c נקודה-פסיק ביטוי איור – 5.1כתיבת משפט השמה איך לא... מ שמאל לאופרטור הה שמה חייב להופיע מ שת נה – ומ שת נה אחד ויחיד. מ שפטי הה שמה הבאים ,למ של ,אי נם נכו נים: ;4 = x ;x + 1 = 7 סוגי משתנים כל מ שת נה ב שפת Cשייך לסוג מ שת נה כל שהו ,אותו בוחר המתכ נת בהתאם לצרכיו .בסעיף זה נכיר ש ני סוגי מ שת נים: ! מ שת נה שלם – מיועד לטיפול במספרים שלמים ,כגון 95ו.2020- ! מ שת נה ע שרו ני – מיועד לטיפול במספרים בעלי נקודה ע שרו נית ,כגון .12.5ח שוב לציין שכל מספר בו מופיעה נקודה ע שרו נית נח שב לערך ע שרו ני – גם המספר )ה שלם לכאורה( .7.0המספר ,7לעומתו ,נח שב לערך שלם. © www.hod-ami.co.il המשתנה השלם במ שת נה ה שלם ניתן להציב ערכים שלמים בלבד ,שליליים או חיוביים )ו ,0-כמובן( .ב שפת קיימים מספר סוגי מ שת נים שלמים ,אך עתה נכיר את הבסיסי וה נפוץ ביותר ,המכו נה בלעז )מל שון – integerשלם(. C int סוגי המ שת נים ה שלמים הקיימים ב שפה שו נים זה מזה בתחום הערכים ש ניתן להציב בהם. מ שת נה intיכול להכיל את כל הערכים ה שלמים בין -32768ל.32767- עצה אל תציב במ שת נה ערך החורג מטווח הערכים ש ניתן להציב בו .זו אי נה טעות תחבירית ,אך הערך שיוצב בו באמת לא יהיה הערך שרצית. אף שלא ניתן לאחסן במ שת נה שלם ערך ע שרו ני ,הצבת ערך ע שרו ני בו אי נה נח שבת לטעות. בחן ,למ של ,את המ שפט הבא: /* i is an int v ariable */ ;i = 3.14 מ שפט זה חוקי לגמרי ,אך המ שת נה iלא יכיל את הערך הע שרו ני ,3.14אלא את הערך ה שלם .3 כלומר ,הערך הע שרו ני עוגל כלפי מטה לערך שלם ,המתאים למ שת נה ה שלם .באופן דומה ,אם נבצע את המ שפט הבא: ;i = 7.0 / 4.0 מתוך הספר שפת Cאל השיא צלצלו עכ שיו! 09-9564716 הוצאת הוד-עמי לספרי מחשבים 54 w w w . hod-ami.co.il הערך שיוצב במ שת נה iהוא .1הסיבה היא ,שהערך הע שרו ני המתקבל מהביטוי 7.0 / 4.0הוא ,1.75והוא מעוגל כלפי מטה כדי שהמ שת נה ה שלם יוכל להכילו. המשתנה העשרוני ב שפת Cקיימים מספר סוגי מ שת נים ע שרו ניים ,ועתה נכיר את הסוג הע שרו ני הבסיסי ,המכו נה בלעז .f loat במ שת נה מסוג f loatניתן להציב ערכים ע שרו ניים שליליים וחיוביים )ו ,0-כמובן( ,בטווח רחב יותר מ של המ שת נה ה שלם .מ שת נה מסוג f loatיכול להכיל ערכים ה נעים בדיוק של 6ספרות אחרי ה נקודה הע שרו נית. בין 3.4"10-38ל3.4"1038- שים לב! לא כל המספרים הע שרו ניים בטווח זה נית נים לייצוג .לעיתים תיווכח כי מספר ע שרו ני אי נו מוצג בדיוק ,אלא בקירוב .למ של ,אם נציב את הערך 4.1 במ שת נה ע שרו ני ,ייתכן כי יוצב בו הערך .4.099999 הדרך הטבעית להציב ערכים במ שת נה ע שרו ני היא כזו: /* f is a f loat v ariable */ ;f = 2.71 אם נ נסה להציב במ שת נה ע שרו ני ערך שלם ,הערך ה שלם יומר לערך ע שרו ני ,והוא הערך שיוצב במ שת נה הע שרו ני .למ של ,לאחר ביצוע המ שפט הבא: ;f = 3 /* 3 is promoted to 3.0 */ © www.hod-ami.co.il יכיל המ שת נה fאת הערך הע שרו ני .3.0 ניתן לייצג ערכים ע שרו ניים גם על ידי סימון מעריכי .למ של ,בסימון מדעי נהוג לייצג מספר גדול כגון 1230000כ .1.23"106-ב שפת Cפעולת החזקה אי נה קיימת ,אך מספר כזה ניתן לייצוג כ .1.23e6-האות eמציי נת את מכפלת המספר שמ שמאלה בחזקה שבסיסה 10והמעריך שלה – המספר שמימי נה .המספר שמימי נה יכול להיות גם שלילי; למ של ,מספר קטן כגון 0.000123 ניתן לכתיבה ב שפת Cכ .1.23e-4-ערכים אלה הם קבועים לכל דבר. שים לב! ב שפת Cמספרים ארוכים נכתבים בלי פסיקים )למ של 1230000 ,ולא .(1,230,000 אופרטור ה שארית נבדל מ שאר האופרטורים האריתמטיים בכך שלא ניתן לה שתמ ש בו עם ערכים ע שרו ניים .למ של ,הביטויים הבאים אי נם נכו נים: /* wrong */ /* wrong */ 8.5 % 4 7 % 4e3 ואם באופרטור ה שארית עסקי נן ,נציין כי י ש להימ נע מלה שתמ ש בו עם ערכים שליליים .בחן, למ של ,את הביטוי הבא: 10 % -3 מצד אחד המספר -3לא נכ נס במספר 10כלל ,ולכן נצפה מהביטוי להחזיר את הערך .10אך מצד ש ני המספר -3נכ נס -3פעמים במספר ,10ולכן נצפה מהביטוי להחזיר את הערך .1 דו-מ שמעות כזו קיימת גם כא שר מח שבים מ נת מספרים שלמים שליליים ,כפי שמדגים הביטוי הבא: 5 / -2 מתוך הספר שפת Cאל השיא צלצלו עכ שיו! 09-9564716 הוצאת הוד-עמי לספרי מחשבים 55 w w w . hod-ami.co.il כזכור ,כא שר מתבצעת חלוקה בין ש ני ערכים שלמים ,התוצאה מעוגלת כלפי מטה .אך כיצד נעגל מטה את מ נת המספרים 5ו ?-2-אם נעגל את התוצאה למספר הקטן ביותר ,יוחזר הערך .-3אך אם נעגל את התוצאה למספר הקטן ביותר בערך מוחלט ,יוחזר הערך .-2הת שובה ל שאלה זו מ שת נה ממהדר למהדר ,ולכן מקובל להימ נע גם מחי שוב מ נת מספרים שליליים. לעיתים קרובות נצטרך לכתוב תוכ נית ולהחליט בעצמ נו באילו סוגי מ שת נים לה שתמ ש .ל שם כך י ש לח שוב בהיגיון; למ של ,מ שת נה המייצג ש נה )כגון (1983יכול להיות מ שת נה שלם ,אך מ שת נה המייצג את אורכי צלעותיו של מלבן )כגון (4.5ראוי להיות מ שת נה ע שרו ני. דיוק בערכים שלמים ועשרוניים ביטוי שאף אחד מערכיו )קבועים או מ שת נים( אי נו ע שרו ני מחזיר ערך שלם .למ של ,הביטוי הבא: 7/4 מחזיר את הערך .1שבע רביעיות הן אמ נם ,1.75אך ש ני הערכים בביטוי הי נם שלמים ,ולכן הערך הע שרו ני מעוגל כלפי מטה כך שמתקבל ערך שלם .בעת מעבר מערך ע שרו ני לערך שלם תמיד יעוגל הערך כלפי מטה .למ של ,כא שר הופכים את הערך הע שרו ני 1.999לערך שלם, יתקבל המספר ,1ולא .2 ערך הביטוי 7 / 4יי שאר שלם גם אם נ נסה להציבו במ שת נה ע שרו ני ב שם ,fכך: ;f = 7 / 4 /* same as: f = 1; */ במקרה זה יכיל המ שת נה fאת הערך .1.0המ שת נה fהוא אמ נם מ שת נה ע שרו ני ,אך בעת חי שוב ערך הביטוי 7 / 4אין ח שיבות לסוג המ שת נה בו הוא מוצב .אם ברצו נ נו להחזיר את הערך המדויק של הביטוי ,עלי נו להפוך לפחות אחד מערכיו לע שרו ני .נוכל ,למ של ,לע שות זאת כך: /* equals 1.75 */ 7.0 / 4 © www.hod-ami.co.il עתה ,אם ערך ביטוי זה יוצב במ שת נה ע שרו ני ,כך: /* same as: f = 1.75 */ ;f = 7.0 / 4 הוא יכיל את הערך המדויק .1.75 הגדרת משתנים כא שר ה שתמ ש נו במ שת נה בפרק 1פ שוט כתב נו את שמו בהוראה אלגוריתמית .ב שפת ,C לעומת זאת ,אין לה שתמ ש במ שת נה בלי להגדירו קודם-לכן .הגדרת המ שת נה קובעת למ שת נה את סוגו ,ובעקבותיה יוקצה למ שת נה שטח מתאים בזיכרון המח שב. ה שורה בה מוגדר המ שת נה מכו נה שורת הגדרה ,והיא מיידעת את המהדר על סוג המ שת נה ועל שמו .היא נכתבת כך :רא שון מופיע סוג המ שת נה ) intאו ,( f loatאחריו שם המ שת נה ,ולבסוף – תו ה נקודה פסיק .למ של ,כדי להגדיר מ שת נה שלם ב שם ,ageנכתוב שורת הגדרה כזו: ;int age וכדי להגדיר מ שת נה ע שרו ני ב שם ,priceנכתוב את שורת ההגדרה הבאה: ;f loat price דוגמה עתה ,כ שראי נו כיצד להגדיר מ שת נים ולהציב בהם ערכים ,נכתוב תוכ נית מלאה שתיי שם את הידע ה נלמד .תוכ נית זו אי נה פולטת דבר ,אך היא מדגימה היטב את ה שימו ש במ שת נים. מתוך הספר שפת Cאל השיא צלצלו עכ שיו! 09-9564716 הוצאת הוד-עמי לספרי מחשבים 56 w w w . hod-ami.co.il תוכנית 5.1 VARS. C /* def ine an int v ariable */ /* def ine a f loat v ariable */ )(v oid main { ;int i ; f loat f ;i = 45 ;f = 15.0 ;i = i / f /* i now equals 3 */ ;f = f - 10.0 /* f now equals 5.0 */ ;i = i * i * i /* i now equals 27 */ } /* def ine an int v ariable */ /* def ine a f loat v ariable */ ;int i ; f loat f ב שורות אלו מוגדרים מ שת נה שלם ב שם iומ שת נה ע שרו ני ב שם .fזכור כי אין לה שתמ ש במ שת נים לפ ני שמגדירים אותם. ;i = 45 ;f = 15.0 ב שורות אלו מבוצעים ש ני מ שפטי ה שמה .הרא שון מציב במ שת נה ה שלם iאת הערך ,45 וה ש ני מציב במ שת נה הע שרו ני fאת הערך .15.0 ;i = i / f /* i now equals 3 */ ;f = f - 10.0 /* f now equals 5.0 */ ;i = i * i * i /* i now equals 27 */ © www.hod-ami.co.il שלו שת מ שפטי הה שמה הללו מציבים ערכים שו נים במ שת נים iו .f -המ שפט הרא שון מחלק את ערך המ שת נה iבערך המ שת נה ,fהמ שפט ה ש ני מפחית מערך המ שת נה fאת הערך הע שרו ני 10.0והמ שפט ה שלי שי מעלה ב שלי שית את ערך המ שת נה .i בתוכ נית 5.1הופיעו שורות הגדרת המ שת נים ברא ש התוכ נית )כלומר ,מייד לאחר הסוגריים המסולסלים הפותחים של הפו נקציה .( mainהדבר לא נע שה במקרה :כא שר ברצו נ נו לה שתמ ש במ שת נים ,חובה להגדירם ברא שית גוף הפו נקציה ,כלומר ,לפ ני כל הוראה אחרת שבפו נקציה. מסיבה זו ,קטע התוכ נית הבא אי נו חוקי: /* f rom this line, v ariables can't be def ined */ /* wrong! can’t appear here */ ;int a ;a = 4 ;int n על-פי כלל זה ,פו נקציית mainטיפוסית תיראה כך: )(v oid main { הגדרת משתנים משפטים נוספים } כא שר מגדירים מספר מ שת נים מאותו סוג ,נהוג להגדירם באותה שורת הגדרה ,תוך הפרדתם בפסיקים .למ של ,שתי שורות ההגדרה הבאות: ;int number1 ;int number2 שקולות ל שורת ההגדרה הבאה: ;int number1, number2 ] עד פה פרק .5דילוג עד לסו 8הפרק [ מתוך הספר שפת Cאל השיא צלצלו עכ שיו! 09-9564716
© Copyright 2024