Download presentation
Presentation is loading. Please wait.
1
שיעור ראשון: מבוא לתכנות
מבוא כללי למדעי המחשב שיעור ראשון: מבוא לתכנות מרצה: סוני בן-שמעון
2
"ענייני מינהלה" המרצה: סוני בן-שמעון
שעת קבלה: בתאום מראש בבניין שרייבר ב-open space (קומה 1-) אתר הקורס (שבו יופיעו כל המצגות): הציון יורכב מ-85% ציון מבחן 15% ציוני תרגילים בודקת התרגילים: אביה פרי (תא 270 בבניין שרייבר קומה 2)
3
ספרים מומלצים The C Programming Language / Kernighan and Ritchie
Introduction to Algorithms / Cormen, Leiserson, Rivest and Stein
4
סילבוס – מבנה הקורס הכרת המחשב פונקציות ושימושן היכרות עם סביבת העבודה
מבנה תוכנית ב C טיפוסי נתונים בסיסים טיפול בקליטת נתונים והצגתם על המסך פעולות אריתמטיות ב C. פעולות לוגיות ויחסים ב C. משפטי בקרה – if else לולאות – while , do while , for פונקציות ושימושן רקורסיות מבנה נתונים – מערכים, מיונים ויעילות מצביעים מחרוזות הגדרת טיפוסי נתונים על ידי המתכנת – structure הקצאת זיכרון דינאמית אלגוריתמים וסיבוכיות
5
נושאי השיעור היום הכרת המחשב מבוא לשפות תכנות שפת C – יתרונות וחסרונות
כלי פיתוח תוכנית שלבי תרגום התוכנית תוכניות לדוגמא
6
מחשבים ותכנותם - מבוא אפשר כידוע לעשות הרבה דברים עם מחשב. למשל:
לשחק איתו שחמט/ברידג'/שש-בש/... לעשות חישובים מתמטיים. לראות סרטים. לתכנן מטוסים. לגלוש באינטרנט. להשמיע מוזיקה. לשלוח דואר-אלקטרוני. להכין סרטי אנימציה. לבצע עיבוד-תמלילים. להכין מצגות. ועוד ועוד....
7
מחשבים ותכנותם - מבוא בנוסף, הרבה מאוד מכשירים מכילים בתוכם מחשב. למשל: כספומט. טלפון סלולרי. ממיר טלוויזיה. DVD. מענה קולי. מכונות-חטיפים. מכוניות. מטוסים. לוויינים. ועוד ועוד...
8
חלקים עיקריים של מחשב אישי
מסך מדפסת רמקולים מקלדת עכבר סורק כונן תקליטורים כונן דיסקטים דיסק-קשיח אמצעי פלט אמצעי קלט אמצעי קלט/פלט זיכרון מעבד "המוח" של המחשב
9
"המוח" של המחשב - פירוט תאי הזיכרון ממוספרים (יש להם "כתובת").
הזיכרון: אוסף של מיליוני או מיליארדי רכיבים אלקטרוניים זעירים. כל אחד מהם מסוגל לשמור מספר (בטווח מסויים). תאי הזיכרון ממוספרים (יש להם "כתובת"). כידוע, כשמכבים את המחשב תוכן הזיכרון נמחק, בשונה ממידע שנשמר על דיסק/דיסקט/CD, שנשאר גם אחרי שמכבים את המחשב.
10
"המוח" של המחשב - פירוט המעבד (CPU): אוסף של רכיבים אלקטרוניים זעירים.
מסוגל לבצע כמה מאות פעולות בסיסיות על מספרים, כמו חיבור, חיסור, כפל, חילוק, שמירת מספר בזיכרון, קריאת מספר מהזיכרון, השוואת מספרים, וכדומה. מסוגל לבצע מיליארדי פעולות כאלה בשניה.
11
מה המחשב באמת יודע לעשות
כאמור, לבצע פעולות בסיסיות על מספרים (חיבור, חיסור, כפל, חילוק, השוואה, וכדומה). לקבל מידע והוראות כקלט ולתת מידע כפלט (עוד נעסוק בכך בהמשך). כל המידע וההוראות מיוצגים במחשב כמספרים. לשמור את מה שהוכנס אליו ואת תוצאות העבודה שלו. לבצע פעולות בתלות בתוצאת פעולות אחרות. לשלב פעולות רבות, ע"י שמירת תוצאות-ביניים בזיכרון.
12
אופן הפעולה הבסיסי של מחשב
המחשב מקבל מידע והוראות כקלט ומאחסן אותם בזיכרון. המעבד מבצע הוראות שנמצאות בזיכרון עם הנתונים שמאוחסנים בו, ושומר בזיכרון את התוצאות. ההוראות מבוצעות לפי הסדר, אלא אם מתקבלת הוראה אחרת. התוצאות מוחזרות כפלט למשתמש במחשב. - מבוסס על "ארכיטקטורת פון-נוימן" (ארה"ב, 1946).
13
אופן הפעולה הבסיסי של מחשב
קלט זיכרון פלט מעבד
14
חומרה ותוכנה כל החלקים הפיזיים של המחשב ביחד נקראים "חומרה".
כדי להשתמש במחשב צריך לתת לו את סדרת הפעולות שרוצים שהוא יבצע. לסדרת פעולות כזאת שמיועדת למטרה מסויימת קוראים "תוכנית מחשב" או "תוכנת מחשב". התוכנית צריכה להיות בשפה שהמחשב מבין (נסביר בהמשך). כשמדליקים את המחשב מופעלת תוכנה בסיסית שנקראת "מערכת ההפעלה" ומאוחסנת על הדיסק הקשיח של המחשב. מערכת ההפעלה היא התוכנה שמתווכת בין חלקי החומרה של המחשב, ובינם לבין תוכנות אחרות ולבין המשתמש במחשב.
15
חומרה ותוכנה אחת המטרות המרכזיותשל הקורס הוא ליצור תוכנות מחשב.
לצורך זה נלמד שפה שתאפשר לנו לתת למחשב הוראות לביצוע, שפה בשם C. הקורס לא יעסוק בנושאי רכיבי החומרה.
16
מבוא לשפות תכנות איך מתקשרים עם המחשב כדי ליצור תוכנה חדשה
17
שפות תכנות: שפת מכונה השפה הבסיסית של המחשב: לפי זרמים חשמליים
המעבד מבצע פעולות בסיסיות, כמו פעולות חשבון, בהתאם לאותות חשמליים שהוא מקבל (חוזק הזרם בכל חיבור שלו קובע את הפעולה שתבוצע). במחשבים הראשונים כל פעולה בסיסית הצריכה הזזת מתגים חשמליים רבים כדי להעביר זרמים מתאימים (כמו שרואים בסרטים ישנים).
18
שפות תכנות: שפת מכונה הוראות כאלה למעבד יוצגו ע"י רצפים של 0/1-ים, שמייצגים אם מועבר זרם גבוה/נמוך בכל חיבור. לדוגמא כיום המחשב יודע לקרוא את הרצפים האלה (ההוראות) מדיסקים, CD ים, וכו'. אז אין צורך להזיז מתגים חשמליים, אבל זה עדיין מאוד מסובך ולא-פרקטי לכתוב תוכנית בשפת מכונה. כמו-כן, כל מעבד מכיר אך ורק את שפת המכונה שלו, ויתכנו שפות מכונה שונות למעבדים שונים.
19
שפות תכנות: שפת אסמבלי שפה בסיסית עם פקודות פשוטות באנגלית MOV R1 7
(MOV,ADD,PUSH), שכל אחת מהן מתורגמת לפקודת שפת-מכונה אחת על-ידי תוכנה בשם אסמבלר. באסמבלי לא צריך לכתוב את רצפי ה-0/1-ים, אבל גם בשפת אסמבלי מאוד מסובך לתכנת. MOV R1 7 R2 R1 AX MOV R2 9 9 7 16 ADD R1 R2
20
שפות תכנות: שפות עיליות
אלה שפות שכבר קצת יותר מזכירות אנגלית שפות עיליות לדוגמא: פסקל, בייסיק, C, ++C כל פקודה בשפה עילית מתורגמת בדרך-כלל לסדרת פקודות בשפת מכונה (לא רק פקודה אחת) הן משתמשות גם בסימנים מתמטיים נדרש קומפיילר (מהדר) בכדי לתרגמן לשפת מכונה לכל שפה יתרונות וחסרונות והתאמה לישומים שונים sum=9+7
21
- השפה העילית שנלמד C מאפייני שפת
חסרונות יש מקרים בהם אותו סימן משמש לכמה משמעויות (ניראה בהמשך) גישה "לקרביים" של המחשב (לפעמים זה פתח לטעויות) יתרונות שפה פרוצדוראלית – מאפשרת הגדרת הוראות חדשות ("פונקציות") מודולרית – מאפשרת שימוש חוזר בחלקים של תוכניות תאימות למחשבים שונים שפה יעילה (מהירות ביצוע) באופן יחסי, נותנת גישה "לקרביים" של המחשב
22
כלים (תוכנות) שישמשו אותנו לתכנות
כדי לכתוב תוכנית בשפת C ניעזר בכמה תוכנות שכבר קיימות: Editor - תוכנה לכתיבת ועריכת התוכנית בשפת C ("ה- source code"). Compiler (מהדר) – מתרגם את התוכנית משפה עילית לשפת מכונה ("object code"). Linker - מחבר כמה קבצי object (אחד או יותר) ומייצר קובץ הרצה (“executable”) יחיד (בשפת מכונה). Debugger- מאפשר הרצה מבוקרת של התוכנית פקודה-אחר-פקודה, לצורך בדיקה ותיקון.
23
שלבי יצירת התוכנית תוכנית C - כתיבת התוכנית Editor
24
שלבי יצירת התוכנית - כתיבת התוכנית Editor
תוכנית C מתרגם פקודות ב-C ל-object code (שפת-מכונה) Compiler
25
שלבי יצירת התוכנית - כתיבת התוכנית Editor
תוכנית C מתרגם פקודות ב-C ל-object code (שפת-מכונה) Compiler מחבר מספר קבצי object לקובץ הרצה Linker
26
שלבי יצירת התוכנית - כתיבת התוכנית Editor
תוכנית C מתרגם פקודות ב-C ל-object code (שפת-מכונה) Compiler מחבר מספר קבצי object לקובץ הרצה Linker (exe) קובץ הרצה
27
שלבי יצירת התוכנית - כתיבת התוכנית Editor Compiler Linker
השלבים האלה נעשים אוטומטית על-ידי תוכנה קיימת. Linker (exe) קובץ הרצה
28
שלבי יצירת התוכנית - כתיבת התוכנית Editor Compiler Linker
השלבים האלה נעשים אוטומטית על-ידי תוכנה קיימת שנכיר בתירגול. Linker (exe) קובץ הרצה
29
Cאיך ניראית תוכנית-מחשב בשפת
30
תוכנית ראשונה בשפת C #include <stdio.h> int main() {
printf(“Hello World\n”); return 0; }
31
תוכנית ראשונה – שורה 1 #include – מאפשר שימוש בפעולות שנכתבו כבר ע"י מישהו אחר ונשמרו על-ידו בנפרד #include <stdio.h> int main() { printf(“Hello World\n”); return 0; } stdio.h הוא קובץ ("ספריה") של פעולות שמטפלות בקלט/פלט (standard input/output)
32
תוכנית ראשונה – שורה 1 אז משמעות שורה 1: משתמשים בפעולות קלט/פלט שמפורטות בקובץ stdio.h. #include <stdio.h> int main() { printf(“Hello World\n”); return 0; } (הקומפיילר פשוט מצרף את הקובץ הזה לתחילת התוכנית שלנו לפני תחילת התרגום לשפת מכונה).
33
תוכנית ראשונה – שורה 1 אז משמעות שורה 1: משתמשים בפעולות קלט/פלט שמפורטות בקובץ stdio.h. #include <stdio.h> int main() { printf(“Hello World\n”); return 0; } באופן כללי, # מסמן עיבוד מוקדם, שהקומפיילר מבצע על התוכנית לפני תחילת התרגום לשפת מכונה (זה מבוצע ע"י חלק בקומפיילר שנקרא preprocessor).
34
תוכנית ראשונה – שורה 2 שורה קבועה שבה מתחיל ביצוע תוכנית C. משמעותה: זאת "הפונקציה הראשית לביצוע". #include <stdio.h> int main() { printf(“Hello World\n”); return 0; }
35
תוכנית ראשונה – שורות 3+6 שורה קבועה שבה מתחיל ביצוע תוכנית C. משמעותה: זאת "הפונקציה הראשית לביצוע". #include <stdio.h> int main() { printf(“Hello World\n”); return 0; } מייד אחריה יופיעו סוגריים מסולסלים פותחים, ובסיום סוגריים מסולסלים סוגרים.
36
תוכנית ראשונה – שורה 4 משתמשים בפעולה printf מתוך stdio.h
#include <stdio.h> int main() { printf(“Hello World\n”); return 0; } היא מקבלת רצף של תווים בין גרשיים כפולים, ומדפיסה אותם על המסך. \nהוא סימון מיוחד שמסמן ירידת שורה. בסיום כל פקודה בגוף התוכנית יש לרשום ; אחרת הקומפיילר טועה בתרגום ונותן הודעת שגיאה.
37
תוכנית ראשונה – שורה 4 משתמשים בפעולה printf מתוך stdio.h
#include <stdio.h> int main() { printf(“Hello World\n”); return 0; } היא מקבלת רצף של תווים בין גרשיים כפולים, ומדפיסה אותם על המסך. \nהוא סימון מיוחד שמסמן ירידת שורה. (כדי להדפיס את התו \ צריך לרשום printf(“\\”); )
38
תוכנית ראשונה – שורות 2+5 המילה int אומרת כאן שבסיום התוכנית יועבר למערכת ההפעלה מספר שלם (integer), שייצג את אופן סיומה מייצג סיום תקין. #include <stdio.h> int main() { printf(“Hello World\n”); return 0; } התוכנית מעבירה למערכת ההפעלה את הערך 0 עם סיומה (כך נעשה בסיום כל תוכנית)
39
תוכנית ראשונה – שאלות נוספות?
מדפיסה Hello World #include <stdio.h> int main() { printf(“Hello World\n”); return 0; }
40
תוכנית שניה: חישוב מספר השניות ביממה
#include <stdio.h> int main() { int seconds, hours, minutes; hours = 24; minutes = 60; seconds = hours * minutes * 60 ; printf(“Seconds in a day: %d\n”, seconds); return 0; }
41
תוכנית שניה: חישוב מספר השניות ביממה
#include <stdio.h> int main() { int seconds, hours, minutes; hours = 24; minutes = 60; seconds = hours * minutes * 60 ; printf(“Seconds in a day: %d\n”, seconds); return 0; } את השורות האלה כבר הכרנו
42
תוכנית שניה: חישוב מספר השניות ביממה
#include <stdio.h> int main() { int seconds, hours, minutes; hours = 24; minutes = 60; seconds = hours * minutes * 60 ; printf(“Seconds in a day: %d\n”, seconds); return 0; }
43
תוכנית שנייה – שורה 4 int seconds, hours, minutes; זאת "הגדרת משתנים".
השורה הזאת מגדירה שלושה מקומות בזיכרון, שהתוכנית תוכל לשמור בהם ערכים ולקרוא מהם את הערכים שאוחסנו בהם. לכל מקום כזה נותנים שם. ההגדרה הזאת אומרת שערכי המשתנים האלה יהיו מספרים שלמים (מטיפוס int). הגדרת משתנים, כמו פקודה, מסתיימת ב-;
44
תוכנית שנייה – זיכרון seconds minutes hours
תמונת הזיכרון לאחר הגדרת המשתנים
45
חישוב מספר השניות ביממה
#include <stdio.h> int main() { int seconds, hours, minutes; hours = 24; minutes = 60; seconds = hours * minutes * 60 ; printf(“Seconds in a day: %d\n”, seconds); return 0; }
46
תוכנית שנייה – שורות 5,6: השמה
hours = 24; minutes = 60; סימן ה- = מייצג השמה. המספרים 24 ו 60 הם מספרים שלמים (int-ים) השורות האלה מכניסות את המספרים 24 ו 60 לתוך המשתנים (מקומות שהקצנו בזיכרון) ששמותיהםhours ו-minutes בהתאמה.
47
תוכנית שנייה - זיכרון seconds minutes hours
24 תמונת הזיכרון לאחר hours = 24;
48
תוכנית שנייה - זיכרון seconds minutes hours
60 24 תמונת הזיכרון לאחר minutes = 60;
49
חישוב מספר השניות ביממה
#include <stdio.h> int main() { int seconds, hours, minutes; hours = 24; minutes = 60; seconds = hours * minutes * 60 ; printf(“Seconds in a day: %d\n”, seconds); return 0; }
50
תוכנית שנייה – שורה 7: פעולות חשבון
seconds = hours * minutes * 60 ; משפט השמה נוסף. הסימן * מייצג כפל. קודם מחשבים את הערך בצד הימני, לפי הערכים שנתנו לכל משתנה, ואז מכניסים את התוצאה למקום של המשתנה שרשום בצד שמאל. הסימנים *,+,-,/ מייצגים חילוק, חיסור, חיבור וכפל. סדר הפעולות רגיל.
51
תוכנית שנייה - זיכרון seconds minutes hours תמונת הזיכרון לאחר
86400 60 24 תמונת הזיכרון לאחר ; seconds = hours * minutes * 60
52
חישוב מספר השניות ביממה
#include <stdio.h> int main() { int seconds, hours, minutes; hours = 24; minutes = 60; seconds = hours * minutes * 60 ; printf(“Seconds in a day: %d\n”, seconds); return 0; }
53
תוכנית שנייה – שורה 8 - פלט
printf(“Seconds in a day: %d\n”, seconds); ניתן לכלול בהדפסה של printf תוכן של משתנים. לצורך כך צריך לציין מהו סוג המשתנה באמצעות סימון מיוחד שלא מודפס. %d אומר שהמשתנה מכיל מספר שלם. לאחר הגרשיים הכפולים צריך לציין מאיזה משתנה לקחת את הערך להדפסה. אז השורה הזאת תדפיס את מספר השניות ביממה כמו שרצינו.
54
תוכנית שנייה – שאלות נוספות?
#include <stdio.h> int main() { int seconds, hours, minutes; hours = 24; minutes = 60; seconds = hours * minutes * 60 ; printf(“Seconds in a day: %d\n”, seconds); return 0; }
55
תוכנית שלישית- תוכנית הקולטת שני מספרים ומחשבת את סכומם
#include <stdio.h> int main() { int a, b, sum; printf(“Enter an integer\n”); scanf(“%d”, &a); scanf(“%d”, &b); sum = a + b; printf(“%d + %d = %d\n”, a, b, sum); return 0; }
56
תוכנית שלישית- פלט Enter an integer 5 7 5+ 7 = 12
57
תוכנית שלישית int main() { int a, b, sum; …… return 0; }
#include <stdio.h> int main() { int a, b, sum; …… return 0; } a,b,sum הם שמות של משתנים(variables) משתנה הוא מקום בזיכרון שבו ניתן לאחסן ערך. בתוכנית זאת כל המשתנים מסוג int (מספר שלם) ניתן להגיד משתנים מאותו סוג בשורה אחת
58
תוכנית שלישית- זיכרון a b sum תמונת הזיכרון לאחר הגדרת המשתנים
59
תוכנית C שנייה - זיכרון a b sum 5 תמונת הזיכרון לאחר scanf(“%d”, &a);
60
תוכנית שלישית - זיכרון a b sum 5 7 תמונת הזיכרון לאחר scanf(“%d”, &b);
61
תוכנית שלישית - זיכרון a b sum 5 7 12 תמונת הזיכרון לאחר sum = a + b;
62
תוכנית שלישית int main() { …. printf(“Enter an integer\n”); …
#include <stdio.h> int main() { …. printf(“Enter an integer\n”); … return 0; } מכניסים הוראה למשתמש להכניס מספר
63
תוכנית שלישית פקודת ה-scanf היא פקודת הקלט הארגומנטים ל-:scanf מחרוזת
#include <stdio.h> int main() { … printf(“Enter an integer\n”); scanf(“%d”, &a); return 0; } פקודת ה-scanf היא פקודת הקלט הארגומנטים ל-:scanf מחרוזת כתובות של משתנים
64
תוכנית שלישית scanf(“%d”, &a);
המחרוזת מציינת מהו פורמט הקלט שעל המשתמש להכניס %d מסמל שאנו מצפים למשתנה מסוג int &a מציין שהמספר יוכנס לתוך המשתנה a (נרחיב בנושא זה מאוחר יותר)
65
תוכנית שלישית – פעולות אריתמטיות
sum = a + b; מתבצע השמה לתוך המשתנה sum (המשתנה בצד השמאלי) לאחר שמתבצעת הפעולה באגף שמאל פעולת החיבור מיוצגת בצורה סטנדרטית "+"
66
סיכום דיברנו היום על: מבוא לתכנות ולשפת C מבנה בסיסי של תוכנית C
הדגמה של שימוש במשתנים
67
CS4Math שאלות נוספות?
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.