תוכן עניינים ועמודים לדוגמה

‫שפת ‪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‬‬
‫במקום סימן ה‪ '+'-‬נר שום בטעות את סימן ה‪ ,'@'-‬כך‪ ,[email protected] :‬תתקבל הוראה שגויה מבחי נה‬
‫תחבירית‪.‬‬
‫אדם הקורא מ שפט ו נתקל בטעות תחבירית יכול לה שלים את המילים הלא ברורות על פי הק שר‬
‫המ שפט‪ ,‬אך לא כן המח שב‪ :‬פקודה שגויה מבחי נה תחבירית לא תתקבל על ידו‪.‬‬
‫מובן לגורם המבצע‬
‫הגורם המבצע הוא מי שמבצע את האלגוריתם )אדם‪ ,‬מח שב אי שי‪ ,‬רובוט וכדומה(‪ .‬כדי שהגורם‬
‫המבצע את האלגוריתם יוכל לבצע את ההוראות המיועדות לו בהצלחה‪ ,‬עליו להבי נן‪ .‬הדבר נכון‬
‫הן לגבי אלגוריתמים המיועדים למח שב והן לגבי אלגוריתמים המיועדים לאדם‪ .‬למ של‪ ,‬ההוראה‬
‫"ח שב את שור שו הריבועי של ‪ "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‬‬