You are on page 1of 58

‫קורס יסודות התכנות בשפת ‪C‬‬

‫פרק ‪2‬‬
‫מבוא לתכנות‬
‫‪C programing Introduction‬‬

‫ד"ר שייקה בילו‬


‫יועץ ומרצה בכיר למדעי המחשב וטכנולוגית מידע‬
‫מומחה למערכות מידע חינוכיות‪ ,‬אקדמיות ומנהליות‬

‫‪SCE-Chapter-2-C Programing‬‬ ‫‪1‬‬ ‫‪Shayke Bilu PhD‬‬


‫נושאי השעור היום‬
‫‪2‬‬

‫‪ ‬הכרת המחשב‪.‬‬
‫‪ ‬מבוא לשפות תכנות‪.‬‬
‫‪ ‬שפת ‪.C‬‬
‫‪ ‬כלי פיתוח תוכנית‪.‬‬
‫‪ ‬שלבי תרגום התוכנית‪.‬‬
‫‪ ‬תוכניות לדוגמא‪.‬‬

‫‪SCE-Chapter-2-C Programing‬‬ ‫‪Shayke Bilu PhD‬‬


‫"המוח" של המחשב ‪ -‬פירוט‬
‫‪3‬‬

‫‪ ‬הזיכרון (‪)RAM‬‬
‫‪ ‬אוסף של מיליוני רכיבים אלקטרוניים זעירים (תאים)‬
‫כל אחד מהם מסוגל לשמור מספר בטווח מסוים‬ ‫‪‬‬

‫‪ ‬כשמכבים את המחשב תוכן הזיכרון נמחק‪ ,‬בניגוד למידע‬


‫שנשמר על דיסק‪/‬דיסקט‪CD/‬‬
‫תאי הזיכרון ממוספרים (יש להם "כתובת")‬ ‫‪‬‬

‫‪SCE-Chapter-2-C Programing‬‬ ‫‪Shayke Bilu PhD‬‬


‫"המוח" של המחשב ‪ -‬פירוט‬
‫‪4‬‬

‫‪ ‬המעבד (‪:)CPU‬‬
‫‪ ‬אוסף של רכיבים אלקטרוניים זעירים‪.‬‬
‫‪ ‬מסוגל לבצע פעולות בסיסיות על מספרים‪:‬‬
‫חיבור‪ ,‬חיסור‪ ,‬כפל‪ ,‬חילוק‪ ,‬שמירת מספר בזיכרון‪.‬‬ ‫‪.1‬‬

‫קריאת מספר מהזיכרון‪ ,‬השוואת מספרים‪ ,‬וכד'‪...‬‬ ‫‪.2‬‬

‫מסוגל לבצע מיליארדי פעולות כאלה בשנייה‪.‬‬ ‫‪.3‬‬

‫‪SCE-Chapter-2-C Programing‬‬ ‫‪Shayke Bilu PhD‬‬


‫ במאה הקודמת‬40 -‫חומרה משנות ה‬
5

SCE-Chapter-2-C Programing Shayke Bilu PhD


21-‫עוד קצת חומרה מהמאה ה‬
6

!‫היום‬

SCE-Chapter-2-C Programing Shayke Bilu PhD


‫מה המחשב באמת יודע לעשות?‬
‫‪7‬‬

‫‪ ‬פעולות בסיסיות על מספרים‬


‫‪ ‬לקבל מידע והוראות כקלט ולתת מידע כפלט‬
‫‪ ‬כל המידע וההוראות מיוצגים במחשב כמספרים‬
‫‪ ‬לשמור קלט ואת תוצאות העבודה שלו‬
‫‪ ‬לשלב פעולות רבות‪ ,‬ע"י שמירת תוצאות‪-‬ביניים‬
‫בזיכרון‬

‫‪SCE-Chapter-2-C Programing‬‬ ‫‪Shayke Bilu PhD‬‬


‫אופן הפעולה הבסיסי של מחשב‬
‫‪8‬‬

‫‪ ‬המחשב מקבל מידע והוראות כקלט ומאחסן אותם בזיכרון‬


‫‪ ‬המעבד מבצע הוראות שנמצאות בזיכרון עם הנתונים‬
‫שמאוחסנים בו‪ ,‬ושומר בזיכרון את התוצאות‬
‫ההוראות מבוצעות לפי הסדר‪ ,‬אלא אם מתקבלת הוראה אחרת‬ ‫‪‬‬

‫‪ ‬התוצאות מוחזרות כפלט למשתמש במחשב‪.‬‬


‫מבוסס על‪:‬‬
‫"ארכיטקטורת פון‪-‬נוימן"‬
‫(ארה"ב‪)1946 ,‬‬

‫‪SCE-Chapter-2-C Programing‬‬ ‫‪Shayke Bilu PhD‬‬


‫"ארכיטקטורת פון‪-‬נוימן" (ארה"ב‪)1946 ,‬‬
‫‪9‬‬

‫‪ ‬ארכיטקטורת פון נוימן או לעתים גם מכונת פון‬


‫נוימן היא מודל שהציע בשנות הארבעים של המאה‬
‫הקודמת המתמטיקאי ג'ון פון נוימן למבנהו הבסיסי של‬
‫המחשב האלקטרוני‪.‬‬
‫‪ ‬במודל זה‪ ,‬זיכרון המחשב הוא הרכיב המשמש הן‬
‫לאחסון של התוכנית שהמחשב מבצע והן לאחסון‬
‫הנתונים שתוכנית זו קוראת או כותבת בעת ביצועה על‬
‫ידי המעבד‪.‬‬
‫‪ ‬גם כיום מרבית המחשבים בנויים על־פי מודל זה‪.‬‬
‫‪SCE-Chapter-2-C Programing‬‬ ‫‪Shayke Bilu PhD‬‬
‫"ארכיטקטורת פון‪-‬נוימן" (ארה"ב‪)1946 ,‬‬
‫‪10‬‬

‫‪ ‬המחשב הראשון שנבנה על־פי מודל זה‪ ,‬בין השנים‬


‫‪ 1945‬ל‪ 1951 -‬הוא מכונת ‪ IAS‬שנבנתה במכון למחקר‬
‫מתקדם שבאוניברסיטת בפרינסטון‪ ,‬בהנחייתו של פון‬
‫נוימן‪.‬‬
‫‪ ‬מכונת ‪ IAS‬הוא שמו של המחשב האלקטרוני הראשון‪.‬‬
‫בעקבות תכנון זה נבנו באוניברסיטאות ובמכוני מחקר ‪15‬‬
‫מחשבים נוספים‪ ,‬דומים למחשב המקורי אך לא זהים לו‪,‬‬
‫ובהם ויצק של מכון ויצמן‪.‬‬

‫‪SCE-Chapter-2-C Programing‬‬ ‫‪Shayke Bilu PhD‬‬


‫"ארכיטקטורת פון‪-‬נוימן" (ארה"ב‪)1946 ,‬‬
‫‪11‬‬

‫‪ ‬פון ניומן וצוות של מדענים המשיכו במחקר ופיתחו‬


‫בשנת ‪ 1951‬מחשב נוסף שנקרא ‪ EDVAC‬המבוסס על‬
‫רעיון מהפכני בארכיטקטורה שלו‪.‬‬
‫‪ ‬הרעיון יה לאחסן תוכנית מחשב בתוך המחשב‪ .‬זה היה‬
‫אפשרי‪ ,‬כי ב‪ EDVAC -‬היה זיכרון פנימי גדול יותר‬
‫מאשר בכל מכשיר מחשוב עד אז‪ .‬הזיכרון היה אמור‬
‫להיות מסופק באמצעות קווי כספית‪ .‬בצינור כספית‪,‬‬
‫האלקטרוניים מנתרים קדימה ואחורה‪ .‬מתג הפעלה של‬
‫כיבוי והדלקה של זיכרון כדי לממש את שני המצבים‬
‫הבינאריים ‪ 0‬ו‪.1-‬‬
‫‪SCE-Chapter-2-C Programing‬‬ ‫‪Shayke Bilu PhD‬‬
‫"ארכיטקטורת פון‪-‬נוימן" (ארה"ב‪)1946 ,‬‬
‫‪12‬‬

‫‪ ‬עקרון התכנית המאוחסנת (‪ ( stored program‬לפיו תכנית‬


‫מאוחסנת כמספרים באותו זיכרון בו מאוחסנים הנתונים‪.‬‬
‫‪ ‬מבנה סכמתי‬
‫המעבד (‪ )Processor‬תפקידו לבצע את התכנית‬ ‫•‬
‫יחידת הזיכרון (‪ )Memory‬בה מאוחסנים נתונים‬ ‫•‬
‫והוראות‬
‫• יחידת הקלט‪/‬פלט )‪ (I/O Devices‬משמשת לקליטת‬
‫נתונים מהמשתמש ולהצגת תוצאות של ביצוע התכנית‬
‫• ערוצי תקשורת הנקראים פסים (‪ )bus‬והם מקשרים בין‬
‫יחידות שונות ומעבירים מידע מיחידה ליחידה‪.‬‬

‫‪SCE-Chapter-2-C Programing‬‬ ‫‪Shayke Bilu PhD‬‬


‫"ארכיטקטורת פון‪-‬נוימן" (ארה"ב‪)1946 ,‬‬
‫‪13‬‬

‫‪ ‬כותבים תכנית ומתרגמים אותה לשפת מכונה‬


‫‪ ‬בעזרת מערכת ההפעלה טוענים ומריצים‬
‫‪ ‬ההרצה כוללת מספר פעולות שהן שקופות מבחינתנו‬
‫וביניהן‪ :‬התכנית בשפת מכונה והנתונים של התכנית נטענים‬
‫לזיכרון‪.‬‬
‫‪ ‬תהליך ביצוע של הוראות התכנית‪:‬‬
‫‪ ‬לכל הוראה מתבצע מחזור הבאה‪-‬ביצוע הכולל שני‬
‫שלבים ‪:‬‬
‫שלב הבאה (‪ – )fetch‬קריאת ההוראה ופענוחה‬ ‫‪‬‬
‫שלב ביצוע (‪ )execute‬ההוראה‬ ‫‪‬‬
‫‪SCE-Chapter-2-C Programing‬‬ ‫‪Shayke Bilu PhD‬‬
‫חומרה ותוכנה‬
‫‪14‬‬

‫כל החלקים הפיזיים של המחשב ביחד נקראים "חומרה" (דיסק למשל)‬

‫‪SCE-Chapter-2-C Programing‬‬ ‫‪Shayke Bilu PhD‬‬


‫חומרה ותוכנה‬
‫‪15‬‬

‫‪" ‬תוכנית מחשב" או "תוכנה" היא סדרת הוראות הניתנת‬


‫למחשב כדי שיבצע סדרת פעולות שיביאו לתוצאה מסוימת‪.‬‬
‫התוכנית צריכה להיות בשפה שהמחשב מבין‪.‬‬

‫‪SCE-Chapter-2-C Programing‬‬ ‫‪Shayke Bilu PhD‬‬


‫חומרה ותוכנה‬
‫‪16‬‬

‫‪" ‬מערכת ההפעלה" ‪ -‬תוכנה בסיסית שמתווכת בין חלקי החומרה‬


‫של המחשב‪ ,‬ובינם לבין התוכנה והמשתמש‬
‫‪ ‬מופעלת כשמדליקים את המחשב‬
‫‪ ‬מאוחסנת על הדיסק הקשיח‬

‫‪SCE-Chapter-2-C Programing‬‬ ‫‪Shayke Bilu PhD‬‬


‫חומרה ותוכנה‬
‫‪17‬‬

‫‪ ‬הנושא העיקרי אותו נלמד בקורס זה הוא יצירת תוכניות‬


‫הבאות לפתור בעיות ממשיות מכל תחומי החיים‪.‬‬
‫‪ ‬לצורך זה נלמד שפה שתאפשר לנו לתת למחשב הוראות‪.‬‬
‫לביצוע‪ ,‬שפה בשם ‪C‬‬
‫‪ ‬הקורס לא יעסוק בנושאי רכיבי החומרה של המחשב‬

‫‪SCE-Chapter-2-C Programing‬‬ ‫‪Shayke Bilu PhD‬‬


18

C ‫יסודות התכנות בשפת‬

SCE-Chapter-2-C Programing Shayke Bilu PhD


‫שפות תכנות‪ :‬שפת מכונה‬
‫‪19‬‬

‫• השפה הבסיסית של המחשב‪ :‬מבוססת על זרמים חשמליים‬


‫• המעבד מבצע פעולות בסיסיות‪ ,‬כמו פעולות חשבון‪,‬‬
‫בהתאם לאותות חשמליים שהוא מקבל‪.‬‬
‫• במחשבים הראשונים כל פעולה בסיסית הצריכה הזזת‬
‫מתגים חשמליים רבים כדי להעביר זרמים מתאימים‪.‬‬

‫‪SCE-Chapter-2-C Programing‬‬ ‫‪Shayke Bilu PhD‬‬


‫שפות תכנות‪ :‬שפת מכונה‬
‫‪20‬‬

‫‪ ‬הוראות למעבד המחשב יוצגו ע"י רצפים של ‪-0/1‬ים‪,‬‬


‫המייצגים האם מועבר זרם גבוה‪/‬נמוך בכל חיבור‪.‬‬
‫לדוגמא ‪.10101110‬‬
‫‪ ‬המחשב‪ ,‬כיחידה אלקטרונית‪ ,‬יודע לקרוא את הרצפים‬
‫האלה (ההוראות) מדיסקים‪ CD ,‬ים‪ ,‬זיכרון נייד וכו'‪.‬‬
‫‪ ‬כמו‪-‬כן‪ ,‬כל מעבד מכיר אך ורק את שפת המכונה שלו‪,‬‬
‫ויתכנו שפות מכונה שונות למעבדים שונים‪.‬‬

‫‪SCE-Chapter-2-C Programing‬‬ ‫‪Shayke Bilu PhD‬‬


‫שפות תכנות‪ :‬שפת אסמבלי‬
‫‪21‬‬

‫‪ ‬שפה בסיסית עם פקודות פשוטות באנגלית‬


‫‪ ,)MOV,ADD,PUSH( ‬שכל אחת מהן מתורגמת לפקודת‬
‫שפת‪-‬מכונה אחת על‪-‬ידי תוכנה בשם אסמבלר‪.‬‬
‫‪ ‬באסמבלי לא צריך לכתוב את רצפי ה‪-0/1-‬ים‪ ,‬אבל גם בשפת‬
‫אסמבלי יחסית מסובך לתכנת‪.‬‬

‫‪MOV R1 7‬‬
‫‪R2‬‬ ‫‪R1‬‬ ‫‪AX‬‬
‫‪MOV R2 9‬‬
‫‪9‬‬ ‫‪7‬‬ ‫‪16‬‬
‫‪ADD R1 R2‬‬

‫‪SCE-Chapter-2-C Programing‬‬ ‫‪Shayke Bilu PhD‬‬


‫שפות תכנות‪ :‬שפות עיליות‬
‫‪22‬‬

‫‪ ‬שפות נוחות ללימוד מבוססות לוגיקה ואנגלית‪.‬‬


‫‪ ‬שפות עיליות לדוגמא‪:‬‬
‫‪VB, Python , VC , C++ , C#, JAVA‬‬
‫‪ ‬כל פקודה מתורגמת בדרך‪-‬כלל לסדרת פקודות בשפת‬
‫מכונה‪.‬‬
‫‪ ‬משתמשות גם בסימנים מתמטיים וגם באחרים‪.‬‬
‫‪ ‬נדרש קומפיילר (מהדר) כדי לתרגמן לשפת מכונה‪.‬‬
‫‪ ‬לכל שפה יתרונות וחסרונות והתאמה ליישומים שונים‪.‬‬

‫‪SCE-Chapter-2-C Programing‬‬ ‫‪22‬‬ ‫‪Shayke Bilu PhD‬‬


‫מאפייני שפת ‪ - C‬השפה העילית שנלמד‬
‫‪23‬‬

‫יתרונות‬
‫‪ ‬שפה פרוצדוראלית ‪ -‬מאפשרת הגדרת הוראות חדשות‬
‫("פונקציות")‪.‬‬
‫‪ ‬מודולרית ‪ -‬מאפשרת שימוש חוזר בחלקים של תוכניות‪.‬‬
‫‪ ‬תאימות לכל סוגי המחשבים השונים מכל חברה ודגם‪.‬‬
‫‪ ‬שפה יעילה‪ ,‬נוחה לתחזוקה (מהירות ביצוע גבוהה)‬
‫‪ ‬באופן יחסי‪ ,‬נותנת גישה "לקרביים" של המחשב ללא‬
‫המרות מסובכות ובמהירות גבוהה תוך אמינות מרבית‪.‬‬
‫‪SCE-Chapter-2-C Programing‬‬ ‫‪23‬‬ ‫‪Shayke Bilu PhD‬‬
‫מאפייני שפת ‪ - C‬השפה העילית שנלמד‬
‫‪24‬‬

‫חסרונות‬
‫יש מקרים בהם אותו סימן משמש לכמה משמעויות‬ ‫•‬
‫ולעיתים נגרם בלבול‪.‬‬
‫הגישה "לקרביים" של המחשב נותנת פתח לטעויות‬ ‫•‬
‫ולאפשרות של ביצוע "נזקים" למערכת‪.‬‬
‫יש צורך בהקפדה על כללי כתיבה נוקשים ומחייבים‪.‬‬ ‫•‬
‫יש צורך לשמור על תנאים וכללים מוכתבים מראש‪.‬‬ ‫•‬
‫נכתבת רק באנגלית‪.‬‬ ‫•‬

‫‪SCE-Chapter-2-C Programing‬‬ ‫‪24‬‬ ‫‪Shayke Bilu PhD‬‬


‫כלים שישמשו אותנו לתכנות‬
‫‪25‬‬

‫כדי לכתוב תוכנית בשפת ‪ C‬ניעזר בכמה תוכנות שכבר קיימות‪:‬‬


‫‪ - Editor ‬תוכנה המשמשת לכתיבת ועריכת התוכנית בשפת ‪C‬‬
‫(ה‪.)"source code” -‬‬
‫‪( Compiler ‬מהדר) – מתרגם את התוכנית משפה עילית לשפת‬
‫מכונה ("‪.)"object code‬‬
‫‪( Linker ‬מקשר) ‪ -‬מחבר כמה קבצי ‪( object‬אחד או יותר)‬
‫ומייצר קובץ הרצה (”‪ )“executable‬יחיד (בשפת מכונה)‪.‬‬
‫‪ - Debugger ‬מאפשר הרצה מבוקרת של התוכנית פקודה‪-‬אחר‪-‬‬
‫פקודה‪ ,‬לצורך בדיקה ותיקון‪.‬‬
‫‪SCE-Chapter-2-C Programing‬‬ ‫‪25‬‬ ‫‪Shayke Bilu PhD‬‬
‫שלבי יצירת התוכנית‬
‫‪26‬‬

‫תוכנית ‪C‬‬ ‫‪ - Editor‬כתיבת התוכנית‬

‫מתרגם פקודות שנכתבו בשפת ‪C‬‬


‫‪Compiler‬‬ ‫ל‪( object code-‬שפת‪-‬מכונה)‬
‫מחבר מספר קבצי ‪object‬‬
‫‪Linker‬‬ ‫לקובץ הרצה‬

‫קובץ הרצה )‪(exe‬‬ ‫שלבים אלה מתבצעים יחד על‪-‬ידי תוכנה אותה‬
‫נפעיל בתרגול‪:‬‬
‫‪Visual Studio c++ 2010 Express‬‬
‫‪SCE-Chapter-2-C Programing‬‬ ‫‪26‬‬ ‫‪Shayke Bilu PhD‬‬
‫תהליך העבודה‬
‫‪27‬‬

‫במסגרת הקורס נכתוב תוכניות בשפת ‪ C‬ב‪: visual studio-‬‬


‫‪ – Editor ‬נבצע עריכה של קובץ התוכנית על ידי בניית הפריט‬
‫שהוא ה‪ "source code” -‬עם סיומת ‪ cpp‬ושמירת הקובץ‪.‬‬
‫‪( Compiler ‬מהדר) – נבצע המרה של הקובץ תוך כדי תרגום‬
‫משפה עילית לשפת מכונה ויצירת "‪."object code‬‬
‫‪ ‬יצירת קובץ עם סיומת ‪ .exe‬המאפשר הרצה של התוכנית בכל‬
‫מחשב גם ללא שפת ‪ .C‬הקובץ נוצר בתוך ספריית ה‪debug -‬‬
‫הנמצאת בתוך ספריית הפרויקט‪.‬‬

‫‪SCE-Chapter-2-C Programing‬‬ ‫‪27‬‬ ‫‪Shayke Bilu PhD‬‬


‫סיכום ביניים‬
‫‪28‬‬

‫• חלקי המחשב העיקריים‬


‫• חומרה ותוכנה‬
‫• שפת מכונה ושפות עיליות‬
‫• תרגום תוכנית משפה עילית לשפת מכונה‬

‫‪SCE-Chapter-2-C Programing‬‬ ‫‪28‬‬ ‫‪Shayke Bilu PhD‬‬


29

?‫שאלות‬

SCE-Chapter-2-C Programing Shayke Bilu PhD


?C ‫מחשב בשפת‬-‫איך נראית תוכנית‬
30

SCE-Chapter-2-C Programing Shayke Bilu PhD


31

C ‫תוכנית ראשונה בשפת‬

SCE-Chapter-2-C Programing Shayke Bilu PhD


C ‫תוכנית ראשונה בשפת‬
32

#include <stdio.h> ‫מדפיסה על המסך‬


:‫את המשפט‬
void main()
Hello Dear C Students
{
printf(“Hello Dear C Students\n”);
}

SCE-Chapter-2-C Programing 32 Shayke Bilu PhD


‫תוכנית ראשונה – שורה ‪1‬‬
‫‪33‬‬

‫‪ – #include‬מאפשר שימוש‬
‫>‪#include <stdio.h‬‬ ‫בהוראות שנכתבו כבר ע"י מישהו‬
‫)(‪void main‬‬ ‫אחר ונשמרו בנפרד בספריה ייחודית‬
‫שם הספרייה צמוד אליו בצבע אדום‪.‬‬
‫{‬
‫;)”‪printf(“Hello Dear C Students\n‬‬
‫}‬

‫‪ stdio.h‬הוא קובץ ("ספריה") של הוראות שמטפלות בקלט‪/‬פלט‬


‫)‪(standard input/output‬‬
‫‪SCE-Chapter-2-C Programing‬‬ ‫‪33‬‬ ‫‪Shayke Bilu PhD‬‬
‫תוכנית ראשונה – שורה ‪1‬‬
‫‪34‬‬

‫משמעות השורה הראשונה‪:‬‬


‫>‪#include <stdio.h‬‬ ‫משתמשים בפעולות קלט‪/‬פלט‬
‫)(‪void main‬‬ ‫שמפורטות בקובץ‪.stdio.h :‬‬
‫{‬
‫;)”‪printf(“Hello Dear C Students\n‬‬
‫}‬
‫באופן כללי‪ # ,‬מסמן עיבוד מוקדם‪ ,‬המבוצע באמצעות הקומפיילר על‬
‫התוכנית לפני תחילת התרגום לשפת מכונה‪ ,‬תהליך זה מבוצע ע"י‬
‫ע"י חלק בקומפיילר שנקרא ‪.preprocessor‬‬
‫‪SCE-Chapter-2-C Programing‬‬ ‫‪34‬‬ ‫‪Shayke Bilu PhD‬‬
‫תוכנית ראשונה – שורות ‪2,3‬‬
‫‪35‬‬

‫שורה ה‪ main -‬היא שורה קבועה שבה >‪#include <stdio.h‬‬


‫מסמנים כי מתחיל ביצוע תוכנית ‪.C‬‬
‫)(‪void main‬‬ ‫משמעותה‪" :‬ההוראה הראשית לביצוע"‪.‬‬
‫{‬
‫;)”‪printf(“Hello Dear C Students\n‬‬
‫}‬
‫מיד אחריה יופיעו סוגריים מסולסלים פותחים‪ ,‬תפקידם‬
‫לסמן את גבולות בלוק הפקודות‪ ,‬ובסיום סוגריים מסולסלים‬
‫הסוגרים את הבלוק‪.‬‬
‫‪SCE-Chapter-2-C Programing‬‬ ‫‪35‬‬ ‫‪Shayke Bilu PhD‬‬
‫תוכנית ראשונה – שורה ‪4‬‬
‫‪36‬‬

‫>‪#include <stdio.h‬‬ ‫משתמשים בהוראה ‪ printf‬מתוך‬


‫‪ ,stdio.h‬היא מקבלת רצף של תווים‬
‫)(‪void main‬‬
‫בין גרשיים כפולים‪ ,‬ומדפיסה אותם על‬
‫{‬ ‫המסך‪.‬‬
‫;)”‪printf(“Hello Dear C Students\n‬‬
‫}‬ ‫‪\n‬הוא סימון מיוחד לתו בקרה המסמן‬
‫ירידת שורה‪.‬‬

‫הערה‪:‬‬
‫בסיום כל פקודה בגוף התוכנית יש לרשום ;‬
‫‪SCE-Chapter-2-C Programing‬‬ ‫‪36‬‬ ‫‪Shayke Bilu PhD‬‬
37

C ‫תוכנית שנייה בשפת‬

SCE-Chapter-2-C Programing Shayke Bilu PhD


‫ מספר השניות ביממה‬:‫תוכנית שניה‬
38

#include <stdio.h>
void main()
{
int seconds, hours, minutes;
hours = 24;
minutes = 60;
seconds = hours * minutes * 60 ;
printf(“Seconds a day: %d\n”, seconds);
}

SCE-Chapter-2-C Programing 38 Shayke Bilu PhD


‫ מספר השניות ביממה‬:‫תוכנית שניה‬
39
#include <stdio.h>
‫את השורות האלה כבר הכרנו‬
void main()
{ :‫שורת הגדרת המשתנים של התוכנית‬
int seconds, hours, minutes;
hours = 24; :‫השמת ערכים בתוך המשתנים‬
minutes = 60; :‫תרגיל החישוב‬
seconds = hours * minutes * 60 ;
printf(“Seconds in a day: %d\n”, seconds);
}

SCE-Chapter-2-C Programing 39 Shayke Bilu PhD


‫תוכנית שנייה – שורות ‪ :5,6‬השמה‬
‫‪40‬‬

‫;‪hours = 24‬‬
‫;‪minutes = 60‬‬
‫‪ ‬הסימן = מייצג השמה‪ ,‬העתקת הערך מצד ימין לתוך המשתנה‬
‫שבשמאל‪.‬‬
‫‪ ‬המספרים ‪ 24‬ו‪ 60 -‬הם מספרים שלמים (‪-int‬ים)‬
‫‪ ‬השורות האלה מבצעות השמה (העתקה) של המספרים הרשומים‬
‫מימין לסימן השווה‪ 24 ,‬ו ‪ 60‬לתוך המשתנים השלמים‬
‫(המקומות שהקצנו בזיכרון) ששמותיהם ‪ hours‬ו‪minutes-‬‬
‫בהתאמה‪.‬‬

‫‪SCE-Chapter-2-C Programing‬‬ ‫‪40‬‬ ‫‪Shayke Bilu PhD‬‬


‫ זיכרון‬- ‫תוכנית שנייה‬
41

seconds minutes hours


0 24

hours = 24; ‫תמונת הזיכרון לאחר‬


seconds minutes hours
0 60 24

minutes = 60; ‫תמונת הזיכרון לאחר‬


SCE-Chapter-2-C Programing 41 Shayke Bilu PhD
‫תוכנית שנייה – שורה ‪ :7‬פעולות חשבון‬
‫‪42‬‬

‫; ‪seconds = hours * minutes * 60‬‬


‫‪ ‬משפט השמה נוסף‪ ,‬סימן * מייצג כפל‪.‬‬
‫‪ ‬תמיד מחשבים את הערך בצד הימני ואחר כך מעבירים‬
‫לשמאל את תוצאת החישוב‪.‬‬
‫‪ ‬החישוב נעשה על פי הערכים שנתנו לכל משתנה‪ ,‬ואז‬
‫משימים את התוצאה לתוך המשתנה הרשום בצד‬
‫שמאל‪.‬‬
‫‪ ‬הסימנים ‪ *,+,-,/‬מייצגים חילוק‪ ,‬חיסור‪ ,‬חיבור וכפל‪.‬‬

‫‪SCE-Chapter-2-C Programing‬‬ ‫‪42‬‬ ‫‪Shayke Bilu PhD‬‬


‫ מספר השניות ביממה‬:‫תוכנית שניה‬
43

#include <stdio.h>
void main()
{
int seconds, hours, minutes;
hours = 24;
minutes = 60;
seconds = hours * minutes * 60 ;
printf(“Seconds a day: %d\n”, seconds);
}
SCE-Chapter-2-C Programing 43 Shayke Bilu PhD
‫ זיכרון‬- ‫תוכנית שנייה‬
44

seconds minutes hours

86400 60 24

‫תמונת הזיכרון לאחר‬


seconds = hours * minutes * 60 ;

SCE-Chapter-2-C Programing 44 Shayke Bilu PhD


‫תוכנית שנייה – שורה ‪ - 8‬פלט‬
‫‪45‬‬

‫;)‪printf(“Seconds a day: %d\n”, seconds‬‬

‫‪ ‬ניתן לכלול בהדפסה של ‪ printf‬תוכן של משתנים‪.‬‬


‫‪ ‬ניתן לכלול בהדפסה של ‪ printf‬תוצאת חישוב של תרגילים‪.‬‬
‫‪ ‬לצורך כך צריך לציין מהו סוג המשתנה באמצעות סימון מיוחד‬
‫שלא מודפס‪.‬‬
‫‪ %d ‬מציין כי המשתנה מכיל מספר שלם‪.‬‬
‫‪ ‬לאחר הגרשיים הכפולים יש לציין מאיזה משתנה לקחת את הערך‬
‫להדפסה‪.‬‬
‫‪ ‬שורה זו תדפיס את מספר השניות ביממה‪.‬‬
‫‪SCE-Chapter-2-C Programing‬‬ ‫‪45‬‬ ‫‪Shayke Bilu PhD‬‬
46

‫ייצוג מספרים במחשב‬

SCE-Chapter-2-C Programing Shayke Bilu PhD


‫קצת על ייצוג מספרים במחשב‬
‫‪47‬‬

‫‪ ‬מספרים מיוצגים במחשב בייצוג בינארי ("בסיס ‪,)"2‬‬


‫כלומר רק ע"י אפסים ואחדות‪.‬‬
‫‪ ‬הייצוג הרגיל של מספרים הוא בבסיס ‪( 10‬ספרות ‪.)0-9‬‬
‫‪ ‬במספר בסיס ‪ ,10‬הספרה הימנית ביותר מייצגת אחדות‪ ,‬הספרה‬
‫הבאה מייצגת עשרות‪ ,‬הספרה הבאה מאות‪ ,‬וכן הלאה‪.‬‬
‫‪ ‬למשל‪ 8 – 698 :‬אחדות‪ 9 ,‬עשרות ו‪ 6-‬מאות‪.‬‬
‫‪ ‬בבסיס ‪ 2‬יש רק שתי ספרות‪ 0 :‬ו‪ .1-‬הספרה הכי ימנית מייצגת‬
‫אחדות‪ ,‬הספרה הבאה מייצגת כפולות של ‪ ,2‬הספרה הבאה‬
‫כפולות של ‪ ,4‬וכן הלאה‪ .‬למשל‪101110 :‬‬

‫‪SCE-Chapter-2-C Programing‬‬ ‫‪47‬‬ ‫‪Shayke Bilu PhD‬‬


‫ייצוג מספרים במחשב – ביט ובייט‬
‫‪48‬‬

‫‪ ‬ספרה בינארית בודדת (‪ 0‬או ‪ )1‬נקראת גם "ביט"‪.‬‬


‫‪ ‬שמיניית ביטים נקראת גם "בייט" או "בית"‪.‬‬
‫‪ ‬בבית אחד אפשר לייצג ערכים בין ‪ 0‬ל‪ ,255 -‬כלומר ‪256‬‬
‫תווים‪ ,‬אותיות‪ ,‬סימנים או מספרים‪.‬‬
‫•המספר ‪ 0‬בבסיס ‪ 2‬הוא ‪ 0‬בבסיס ‪.10‬‬
‫•המספר ‪ 1‬בבסיס ‪ 2‬הוא ‪ 1‬בבסיס ‪.10‬‬
‫•המספר ‪ 10‬בבסיס ‪ 2‬הוא ‪ 2‬בבסיס ‪0*1=2+1*2 :10‬‬
‫•המספר ‪ 11‬בבסיס ‪ 2‬הוא ‪ 3‬בבסיס ‪1*2+1*1=3 :10‬‬
‫•המספר ‪ 111‬בבסיס ‪ 2‬הוא ‪ 7‬בבסיס ‪1*4+1*2+1*1=7 :10‬‬

‫‪SCE-Chapter-2-C Programing‬‬ ‫‪48‬‬ ‫‪Shayke Bilu PhD‬‬


‫ייצוג בינארי – טבלת דוגמאות‬
‫‪49‬‬

‫ייצוג בינארי‬ ‫ייצוג בינארי‬ ‫מספר‬ ‫ייצוג בינארי‬ ‫ייצוג בינארי‬ ‫מספר‬
‫‪0000‬‬ ‫‪1101‬‬ ‫‪13‬‬ ‫‪0000‬‬ ‫‪0000‬‬ ‫‪0‬‬
‫‪0000‬‬ ‫‪1110‬‬ ‫‪14‬‬ ‫‪0000‬‬ ‫‪0001‬‬ ‫‪1‬‬
‫‪0000‬‬ ‫‪1111‬‬ ‫‪15‬‬ ‫‪0000‬‬ ‫‪0010‬‬ ‫‪2‬‬
‫‪0001‬‬ ‫‪0000‬‬ ‫‪16‬‬ ‫‪0000‬‬ ‫‪0011‬‬ ‫‪3‬‬
‫‪0001‬‬ ‫‪0001‬‬ ‫‪17‬‬ ‫‪0000‬‬ ‫‪0100‬‬ ‫‪4‬‬
‫‪0001‬‬ ‫‪0010‬‬ ‫‪18‬‬ ‫‪0000‬‬ ‫‪0101‬‬ ‫‪5‬‬
‫‪0001‬‬ ‫‪0011‬‬ ‫‪19‬‬ ‫‪0000‬‬ ‫‪0110‬‬ ‫‪6‬‬
‫‪0001‬‬ ‫‪0100‬‬ ‫‪20‬‬ ‫‪0000‬‬ ‫‪0111‬‬ ‫‪7‬‬
‫‪0001‬‬ ‫‪0101‬‬ ‫‪21‬‬ ‫‪0000‬‬ ‫‪1000‬‬ ‫‪8‬‬
‫‪0001‬‬ ‫‪0110‬‬ ‫‪22‬‬ ‫‪0000‬‬ ‫‪1001‬‬ ‫‪9‬‬
‫‪0001‬‬ ‫‪0111‬‬ ‫‪23‬‬ ‫‪0000‬‬ ‫‪1010‬‬ ‫‪10‬‬
‫‪0001‬‬ ‫‪1000‬‬ ‫‪24‬‬ ‫‪0000‬‬ ‫‪1011‬‬ ‫‪11‬‬
‫‪0001‬‬ ‫‪1001‬‬ ‫‪25‬‬ ‫‪0000‬‬ ‫‪1100‬‬ ‫‪12‬‬

‫‪SCE-Chapter-2-C Programing‬‬ ‫‪49‬‬ ‫‪Shayke Bilu PhD‬‬


‫חשבון בינארי ‪ -‬חיבור‬
‫‪50‬‬

‫תרגיל חיבור של ‪:2 + 2‬‬


‫‪0000 0010 2‬‬
‫‪0000 0010 2‬‬
‫‪0000 0100 4‬‬
‫תרגיל חיבור של ‪:2 + 4‬‬
‫‪0000 0010 2‬‬
‫‪0000 0100 2‬‬
‫‪0000 0110 6‬‬
‫‪SCE-Chapter-2-C Programing‬‬ ‫‪50‬‬ ‫‪Shayke Bilu PhD‬‬
‫סיכום‬
‫‪51‬‬

‫דיברנו היום על‪:‬‬


‫• מבוא לתכנות ולשפת ‪C‬‬
‫• מבנה בסיסי של תוכנית ‪C‬‬
‫• הדגמה של שימוש במשתנים‪:‬‬
‫• הגדרה‪ ,‬השמה‪ ,‬הדפסה‬
‫• חשבון בינארי‪ ,‬ביט ובייט‪ ,‬חישוב חיבור לדוגמא‬
‫• בשיעורים הקרובים נבין טוב יותר מה עומד מאחורי‬
‫הדוגמאות שראינו‪ ,‬ונכיר עוד דברים שניתן לעשות‬
‫בשפת ‪.C‬‬
‫‪SCE-Chapter-2-C Programing‬‬ ‫‪51‬‬ ‫‪Shayke Bilu PhD‬‬
52

?‫שאלות‬

SCE-Chapter-2-C Programing Shayke Bilu PhD


53

:‫סביבת פיתוח התוכנה‬


Visual Studio 2013
C/C++

SCE-Chapter-2-C Programing Shayke Bilu PhD


‫סביבת פיתוח ‪ -‬כללי‬
‫‪54‬‬

‫‪ ‬במהלך הקורס נשתמש בסביבת העבודה של ‪:Microsoft‬‬


‫‪ Visual Studio 2012‬ונתמקד בסביבת הפיתוח ‪Visual‬‬
‫‪.C++ 2010‬‬
‫‪ ‬מרכיבים בסיסיים‪:‬‬
‫‪ ‬עורך )‪(Editor‬‬
‫משמש להכנת קבצי מקור של תכניות ‪.C‬‬
‫‪ ‬מהדר )‪(Compiler‬‬
‫מתרגם את קבצי המקור שאתם כותבים בשפת ‪C‬‬
‫לשפת המכונה‪ .‬כתוצאה מההידור נוצר קובץ ‪.obj‬‬
‫‪SCE-Chapter-2-C Programing‬‬ ‫‪Shayke Bilu PhD‬‬
‫סביבת פיתוח – כללי (המשך)‬
‫‪55‬‬

‫‪ ‬קישור )‪ - (Linker‬מחבר את תכנית המקור (או כמה‬


‫קבצי מקור) עם פונקציות מהספריות הסטנדרטיות‬
‫לקובץ אחד שמהווה תכנית לביצוע (זהו קובץ ההרצה‬
‫בעל סיומת ‪ exe‬שנוצר כתוצאה מהקישור(‪.‬‬
‫‪ ‬בונה התוכנית (‪ )build‬תהליך ביצוע הידור ולאחריו‬
‫קישור‪.‬‬
‫‪ ‬מנפה שגיאות )‪ - (Debugger‬כלי עזר לגילוי מיקומן‬
‫של טעויות לוגיות בתכנית‪ .‬יילמד בתרגול ‪.2‬‬

‫‪SCE-Chapter-2-C Programing‬‬ ‫‪Shayke Bilu PhD‬‬


‫ הורדה‬- ‫סביבת פיתוח‬
56

,‫ ניתן להוריד גרסה חינמית לזמן מוגבל‬


.‫ לעבודה מהבית‬Visual C++ 2013 Desktop
:‫ קישור‬
http://www.microsoft.com/visualstudio/eng/downloads#d-2013-express

SCE-Chapter-2-C Programing Shayke Bilu PhD


‫שגיאות קומפילציה‬
‫‪57‬‬

‫• בצעו פעולת קומפילציה‪.‬‬


‫• הודעות של ה‪ Compiler -‬מופיעות בחלק התחתון‬
‫של המסך‪.‬‬
‫• תקן את שגיאות הקומפילציה בתכנית בהתאם‬
‫להודעות השגיאה‪.‬‬
‫• שימו לב! מומלץ לתקן תמיד את השגיאה הראשונה‬
‫ברשימת השגיאות ושוב לקמפל את התכנית‪.‬‬
‫• המשך בפעולות הנדרשות עד אשר לא תהיינה יותר‬
‫שגיאות קומפילציה‪.‬‬
‫‪SCE-Chapter-2-C Programing‬‬ ‫‪Shayke Bilu PhD‬‬
58

?‫שאלות‬

SCE-Chapter-2-C Programing Shayke Bilu PhD

You might also like