🗊Презентация תכנות מכוון עצמים ו‪++C -‬‬ ‫יחידה ‪01‬‬ ‫מ‪ C -‬ל‪++C -‬‬ ‫קרן כליף‬

Нажмите для полного просмотра!
תכנות מכוון עצמים ו‪++C -‬‬ ‫יחידה ‪01‬‬ ‫מ‪ C -‬ל‪++C -‬‬ ‫קרן כליף‬, слайд №1תכנות מכוון עצמים ו‪++C -‬‬ ‫יחידה ‪01‬‬ ‫מ‪ C -‬ל‪++C -‬‬ ‫קרן כליף‬, слайд №2תכנות מכוון עצמים ו‪++C -‬‬ ‫יחידה ‪01‬‬ ‫מ‪ C -‬ל‪++C -‬‬ ‫קרן כליף‬, слайд №3תכנות מכוון עצמים ו‪++C -‬‬ ‫יחידה ‪01‬‬ ‫מ‪ C -‬ל‪++C -‬‬ ‫קרן כליף‬, слайд №4תכנות מכוון עצמים ו‪++C -‬‬ ‫יחידה ‪01‬‬ ‫מ‪ C -‬ל‪++C -‬‬ ‫קרן כליף‬, слайд №5תכנות מכוון עצמים ו‪++C -‬‬ ‫יחידה ‪01‬‬ ‫מ‪ C -‬ל‪++C -‬‬ ‫קרן כליף‬, слайд №6תכנות מכוון עצמים ו‪++C -‬‬ ‫יחידה ‪01‬‬ ‫מ‪ C -‬ל‪++C -‬‬ ‫קרן כליף‬, слайд №7תכנות מכוון עצמים ו‪++C -‬‬ ‫יחידה ‪01‬‬ ‫מ‪ C -‬ל‪++C -‬‬ ‫קרן כליף‬, слайд №8תכנות מכוון עצמים ו‪++C -‬‬ ‫יחידה ‪01‬‬ ‫מ‪ C -‬ל‪++C -‬‬ ‫קרן כליף‬, слайд №9תכנות מכוון עצמים ו‪++C -‬‬ ‫יחידה ‪01‬‬ ‫מ‪ C -‬ל‪++C -‬‬ ‫קרן כליף‬, слайд №10תכנות מכוון עצמים ו‪++C -‬‬ ‫יחידה ‪01‬‬ ‫מ‪ C -‬ל‪++C -‬‬ ‫קרן כליף‬, слайд №11תכנות מכוון עצמים ו‪++C -‬‬ ‫יחידה ‪01‬‬ ‫מ‪ C -‬ל‪++C -‬‬ ‫קרן כליף‬, слайд №12תכנות מכוון עצמים ו‪++C -‬‬ ‫יחידה ‪01‬‬ ‫מ‪ C -‬ל‪++C -‬‬ ‫קרן כליף‬, слайд №13תכנות מכוון עצמים ו‪++C -‬‬ ‫יחידה ‪01‬‬ ‫מ‪ C -‬ל‪++C -‬‬ ‫קרן כליף‬, слайд №14תכנות מכוון עצמים ו‪++C -‬‬ ‫יחידה ‪01‬‬ ‫מ‪ C -‬ל‪++C -‬‬ ‫קרן כליף‬, слайд №15תכנות מכוון עצמים ו‪++C -‬‬ ‫יחידה ‪01‬‬ ‫מ‪ C -‬ל‪++C -‬‬ ‫קרן כליף‬, слайд №16תכנות מכוון עצמים ו‪++C -‬‬ ‫יחידה ‪01‬‬ ‫מ‪ C -‬ל‪++C -‬‬ ‫קרן כליף‬, слайд №17תכנות מכוון עצמים ו‪++C -‬‬ ‫יחידה ‪01‬‬ ‫מ‪ C -‬ל‪++C -‬‬ ‫קרן כליף‬, слайд №18תכנות מכוון עצמים ו‪++C -‬‬ ‫יחידה ‪01‬‬ ‫מ‪ C -‬ל‪++C -‬‬ ‫קרן כליף‬, слайд №19תכנות מכוון עצמים ו‪++C -‬‬ ‫יחידה ‪01‬‬ ‫מ‪ C -‬ל‪++C -‬‬ ‫קרן כליף‬, слайд №20תכנות מכוון עצמים ו‪++C -‬‬ ‫יחידה ‪01‬‬ ‫מ‪ C -‬ל‪++C -‬‬ ‫קרן כליף‬, слайд №21תכנות מכוון עצמים ו‪++C -‬‬ ‫יחידה ‪01‬‬ ‫מ‪ C -‬ל‪++C -‬‬ ‫קרן כליף‬, слайд №22תכנות מכוון עצמים ו‪++C -‬‬ ‫יחידה ‪01‬‬ ‫מ‪ C -‬ל‪++C -‬‬ ‫קרן כליף‬, слайд №23תכנות מכוון עצמים ו‪++C -‬‬ ‫יחידה ‪01‬‬ ‫מ‪ C -‬ל‪++C -‬‬ ‫קרן כליף‬, слайд №24תכנות מכוון עצמים ו‪++C -‬‬ ‫יחידה ‪01‬‬ ‫מ‪ C -‬ל‪++C -‬‬ ‫קרן כליף‬, слайд №25תכנות מכוון עצמים ו‪++C -‬‬ ‫יחידה ‪01‬‬ ‫מ‪ C -‬ל‪++C -‬‬ ‫קרן כליף‬, слайд №26תכנות מכוון עצמים ו‪++C -‬‬ ‫יחידה ‪01‬‬ ‫מ‪ C -‬ל‪++C -‬‬ ‫קרן כליף‬, слайд №27תכנות מכוון עצמים ו‪++C -‬‬ ‫יחידה ‪01‬‬ ‫מ‪ C -‬ל‪++C -‬‬ ‫קרן כליף‬, слайд №28תכנות מכוון עצמים ו‪++C -‬‬ ‫יחידה ‪01‬‬ ‫מ‪ C -‬ל‪++C -‬‬ ‫קרן כליף‬, слайд №29תכנות מכוון עצמים ו‪++C -‬‬ ‫יחידה ‪01‬‬ ‫מ‪ C -‬ל‪++C -‬‬ ‫קרן כליף‬, слайд №30

Содержание

Вы можете ознакомиться и скачать презентацию на тему תכנות מכוון עצמים ו‪++C -‬‬ ‫יחידה ‪01‬‬ ‫מ‪ C -‬ל‪++C -‬‬ ‫קרן כליף‬. Доклад-сообщение содержит 30 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





תכנות מכוון עצמים ו- C++
יחידה 01
 מ- C ל- C++
קרן כליף
Описание слайда:
תכנות מכוון עצמים ו- C++ יחידה 01 מ- C ל- C++ קרן כליף

Слайд 2





ביחידה זו נלמד:
הגדרת תכנות מכוון עצמים
השוני הסינטקטי בין C ל- C++:
printf  cout
scanf  cin
gets  cin.getline
malloc  new
free  delete
טיפוס התייחסות
מרחבי שמות (namespace)
Описание слайда:
ביחידה זו נלמד: הגדרת תכנות מכוון עצמים השוני הסינטקטי בין C ל- C++: printf  cout scanf  cin gets  cin.getline malloc  new free  delete טיפוס התייחסות מרחבי שמות (namespace)

Слайд 3





מה אנחנו יודעים? תכנות פרוצדורלי
בקורס C למדנו לתכנת במתודלוגיה הנקראת תכנות פרוצדורלי
התכנות היה בסגנון Top-Down
הדגש בתוכניות היה על פונקציות והמידע המועבר בינהן
דוגמא:
אם רצינו לטפל במטריצה, היינו רושמים את הפונקציות הבאות:
פונקציה שיודעת להקצות מטריצה
פונקציה שיודעת לקלוט נתונים למטריצה
פונקציה שיודעת להדפיס את המטריצה
פונקציה שיודעת לשחרר את נתוני המטריצה
כל אחת מהפונקציות הנ"ל הייתה צריכה לקבל את המטריצה ומימדיה כפרמטרים
Описание слайда:
מה אנחנו יודעים? תכנות פרוצדורלי בקורס C למדנו לתכנת במתודלוגיה הנקראת תכנות פרוצדורלי התכנות היה בסגנון Top-Down הדגש בתוכניות היה על פונקציות והמידע המועבר בינהן דוגמא: אם רצינו לטפל במטריצה, היינו רושמים את הפונקציות הבאות: פונקציה שיודעת להקצות מטריצה פונקציה שיודעת לקלוט נתונים למטריצה פונקציה שיודעת להדפיס את המטריצה פונקציה שיודעת לשחרר את נתוני המטריצה כל אחת מהפונקציות הנ"ל הייתה צריכה לקבל את המטריצה ומימדיה כפרמטרים

Слайд 4





מה נלמד? תכנות מכוון עצמים
בקורס זה נלמד מתודולוגית תכנות הנקרא "תכנות מכוון עצמים" (Object Oriented, או בקיצור OO)
הדגש יהיה על האובייקטים שיש במערכת, מה המידע שיש לכל אובייקט, ומה הפעולות שכל אובייקט יודע לבצע
כמו struct של C, אבל בנוסף לשדות, יהיו גם פעולות
מתודולוגיית תכנות זו מייצגת כיצד העולם שלו בנוי
דוגמא:
לסטודנט יהיו את השדות: ת.ז, שם, תאריך לידה, מגמת לימוד וממוצע
בנוסף, הוא ידע לבצע את הפעולות הבאות: להירשם לקורס, להדפיס את נתוניו, ללמוד למבחן, להכין מטלות וללכת לים
Описание слайда:
מה נלמד? תכנות מכוון עצמים בקורס זה נלמד מתודולוגית תכנות הנקרא "תכנות מכוון עצמים" (Object Oriented, או בקיצור OO) הדגש יהיה על האובייקטים שיש במערכת, מה המידע שיש לכל אובייקט, ומה הפעולות שכל אובייקט יודע לבצע כמו struct של C, אבל בנוסף לשדות, יהיו גם פעולות מתודולוגיית תכנות זו מייצגת כיצד העולם שלו בנוי דוגמא: לסטודנט יהיו את השדות: ת.ז, שם, תאריך לידה, מגמת לימוד וממוצע בנוסף, הוא ידע לבצע את הפעולות הבאות: להירשם לקורס, להדפיס את נתוניו, ללמוד למבחן, להכין מטלות וללכת לים

Слайд 5





לתכנות מכוון עצמים 3 עקרונות מרכזיים
הסתרה (encapsulation): כל הנתונים והפעולות הקשורות לישות מסוימת מרוכזות יחדיו. המשתמש עובד עם "קופסא שחורה".
	יתרונות:	קל ללמוד את הקוד ולהתמצא בו, תחזוקה פשוטה
הורשה (inheritance): הרחבה של ישות קיימת כדי למנוע שכפול קוד, או לחילופין כדי לתת מימוש אלטרנטיבי לקוד קיים.
	למשל: ל- person יש אוסף נתונים, ול- student יש בדיוק אותם נתונים ועוד כמה נוספים. לא נרצה לשכפל את כל הקוד שיש ב- person..
רב-תצורתיות (פולימורפיזם, polymorphism): מאפשר להתייחס לישויות שונות בעלי בסיס זהה באותו אופן. 
	למשל: החזקת מערך של צורות, כאשר חלק מהצורות הן ריבוע, חלקן עיגול או משולש, ולהיות מסוגלים להדפיס את כולן.
Описание слайда:
לתכנות מכוון עצמים 3 עקרונות מרכזיים הסתרה (encapsulation): כל הנתונים והפעולות הקשורות לישות מסוימת מרוכזות יחדיו. המשתמש עובד עם "קופסא שחורה". יתרונות: קל ללמוד את הקוד ולהתמצא בו, תחזוקה פשוטה הורשה (inheritance): הרחבה של ישות קיימת כדי למנוע שכפול קוד, או לחילופין כדי לתת מימוש אלטרנטיבי לקוד קיים. למשל: ל- person יש אוסף נתונים, ול- student יש בדיוק אותם נתונים ועוד כמה נוספים. לא נרצה לשכפל את כל הקוד שיש ב- person.. רב-תצורתיות (פולימורפיזם, polymorphism): מאפשר להתייחס לישויות שונות בעלי בסיס זהה באותו אופן. למשל: החזקת מערך של צורות, כאשר חלק מהצורות הן ריבוע, חלקן עיגול או משולש, ולהיות מסוגלים להדפיס את כולן.

Слайд 6





תכנות מכוון עצמים ו- C++
בנוסף ל- 3 העקרונות שראינו קודם, בשפת C++ יש 2 עקרונות נוספים:
תבניות (templates): כלי המאפשר לכתוב קוד כללי לטיפוסים שונים.
	דוגמא: האלגוריתם למיון קבוע לכל טיפוס, אבל המערך המתקבל ופעולות ההשוואה מבוצעות על טיפוסים שונים.
	במקום לשכפל את הקוד עבור טיפוס שונה כל פעם, ניתן לכתוב פונקציה כללית אחת שתדע לטפל בכל טיפוס.
חריגות (exceptions): מנגנון לטיפול שגיאות בזמן ריצה.
Описание слайда:
תכנות מכוון עצמים ו- C++ בנוסף ל- 3 העקרונות שראינו קודם, בשפת C++ יש 2 עקרונות נוספים: תבניות (templates): כלי המאפשר לכתוב קוד כללי לטיפוסים שונים. דוגמא: האלגוריתם למיון קבוע לכל טיפוס, אבל המערך המתקבל ופעולות ההשוואה מבוצעות על טיפוסים שונים. במקום לשכפל את הקוד עבור טיפוס שונה כל פעם, ניתן לכתוב פונקציה כללית אחת שתדע לטפל בכל טיפוס. חריגות (exceptions): מנגנון לטיפול שגיאות בזמן ריצה.

Слайд 7





מ- C ל- C++
שפת C++ מאוד דומה סינטקטית לשפת C, אך יחד עם זאת יש כמה שינויים:
נפתח פרויקט באותו אופן כמו בקורס C, אבל נייצר קובץ עם סיומת cpp (ברירת המחדל), ולא עם סיומת c
הקומפיילר שונה, ולכן יתכנו שגיאות קומפילציה טיפה שונות
ניתן להגדיר משתנים בכל חלק בתוכנית, ולא רק בתחילת בלוק
במקום הכללת הספריה stdio.h שהכילה פקודות קלט-פלט, נכליל את הספריה iostream ונוסיף using namespace std; (הסבר בהמשך)
קיים הטיפוס bool שמחזיק את הערכים true או false
Описание слайда:
מ- C ל- C++ שפת C++ מאוד דומה סינטקטית לשפת C, אך יחד עם זאת יש כמה שינויים: נפתח פרויקט באותו אופן כמו בקורס C, אבל נייצר קובץ עם סיומת cpp (ברירת המחדל), ולא עם סיומת c הקומפיילר שונה, ולכן יתכנו שגיאות קומפילציה טיפה שונות ניתן להגדיר משתנים בכל חלק בתוכנית, ולא רק בתחילת בלוק במקום הכללת הספריה stdio.h שהכילה פקודות קלט-פלט, נכליל את הספריה iostream ונוסיף using namespace std; (הסבר בהמשך) קיים הטיפוס bool שמחזיק את הערכים true או false

Слайд 8





מ- C ל- C++ (2)
פקודות שונות לטיפול בקלט ופלט:
במקום הפקודה printf נשתמש בפקודה cout
במקום הפקודה scanf נשתמש בפקודה cin
פקודות שונות לטיפול בהקצאות ושחרור זכרון:
במקום הפקודות malloc/calloc נשתמש בפקודה new
במקום הפקודה free נשתמש בפקודה delete
Описание слайда:
מ- C ל- C++ (2) פקודות שונות לטיפול בקלט ופלט: במקום הפקודה printf נשתמש בפקודה cout במקום הפקודה scanf נשתמש בפקודה cin פקודות שונות לטיפול בהקצאות ושחרור זכרון: במקום הפקודות malloc/calloc נשתמש בפקודה new במקום הפקודה free נשתמש בפקודה delete

Слайд 9





אבל ראשית, שאני לא אתעצבן..
Описание слайда:
אבל ראשית, שאני לא אתעצבן..

Слайд 10





הפקודה cout
יודעת להדפיס נתונים למסך (Console OUT)
הסינטקס הרבה יותר פשוט מ- printf: אין צורך להבדיל בהדפסה בין הטיפוסים השונים, משרשרים את חלקי המחרוזת להדפסה באמצעות >>
Описание слайда:
הפקודה cout יודעת להדפיס נתונים למסך (Console OUT) הסינטקס הרבה יותר פשוט מ- printf: אין צורך להבדיל בהדפסה בין הטיפוסים השונים, משרשרים את חלקי המחרוזת להדפסה באמצעות >>

Слайд 11





הפקודה cin
יודעת לקרוא נתונים מהמקלדת (Console IN)
הסינטקס הרבה יותר פשוט מ- scanf: אין צורך להבדיל בקליטה בין הטיפוסים השונים, משרשרים את הנתונים השונים שרוצים לקרוא באמצעות <<
Описание слайда:
הפקודה cin יודעת לקרוא נתונים מהמקלדת (Console IN) הסינטקס הרבה יותר פשוט מ- scanf: אין צורך להבדיל בקליטה בין הטיפוסים השונים, משרשרים את הנתונים השונים שרוצים לקרוא באמצעות <<

Слайд 12





הפקודה cin.getline
cin יודעת לקרוא מחרוזת עד רווח
ע"י שימוש ב- cin.getline ניתן לקלוט תווים עד ENTER או עד למקסימום תווים
Описание слайда:
הפקודה cin.getline cin יודעת לקרוא מחרוזת עד רווח ע"י שימוש ב- cin.getline ניתן לקלוט תווים עד ENTER או עד למקסימום תווים

Слайд 13





הפקודות new ו- delete
הפקודה new להקצאה דינאמית, מקצה מערך עם ערכי זבל (מקבילה ל- malloc)
אין מקבילה ל- calloc
אין מקבילה ל- realloc
הפקודה delete לשחרור זכרון. אם משחררים מערך יש לשחרר עם []
Описание слайда:
הפקודות new ו- delete הפקודה new להקצאה דינאמית, מקצה מערך עם ערכי זבל (מקבילה ל- malloc) אין מקבילה ל- calloc אין מקבילה ל- realloc הפקודה delete לשחרור זכרון. אם משחררים מערך יש לשחרר עם []

Слайд 14





דוגמא
Описание слайда:
דוגמא

Слайд 15





דוגמא: תוכנית המטפלת במטריצה
#include <iostream>
using  namespace  std;
 
const  int N = 3;
const  int M = 4;
 
// prototypes
int**  allocateMatrix  (int rows, int cols);
void  enterInput        (int** mat, int rows, int cols);
void  printMatrix       (int** mat, int rows, int cols);
void  freeMatrix        (int** mat, int rows);
 
void main()
{
	int** mat = NULL;
 
	mat = allocateMatrix(N, M);
	enterInput(mat, N, M);
	printMatrix(mat, N, M);
	freeMatrix(mat, N);	
{
Описание слайда:
דוגמא: תוכנית המטפלת במטריצה #include <iostream> using namespace std; const int N = 3; const int M = 4; // prototypes int** allocateMatrix (int rows, int cols); void enterInput (int** mat, int rows, int cols); void printMatrix (int** mat, int rows, int cols); void freeMatrix (int** mat, int rows); void main() { int** mat = NULL; mat = allocateMatrix(N, M); enterInput(mat, N, M); printMatrix(mat, N, M); freeMatrix(mat, N); {

Слайд 16





דוגמא: תוכנית המטפלת במטריצה (2)
int**  allocateMatrix(int rows, int cols)
}
	int** mat = new int*[rows];  // allocating the rows
	for (int i=0 ; i < rows ; i++)
	      mat[i] = new int[cols];  // allocating the columns
 
	return mat;
{
 
void  enterInput(int** mat, int rows, int cols)
}
	for (int i=0 ; i < rows ; i++)
	      for (int j=0 ; j < cols ; j++)
	             mat[i][j] = i*cols + j;
{
Описание слайда:
דוגמא: תוכנית המטפלת במטריצה (2) int** allocateMatrix(int rows, int cols) } int** mat = new int*[rows]; // allocating the rows for (int i=0 ; i < rows ; i++) mat[i] = new int[cols]; // allocating the columns return mat; { void enterInput(int** mat, int rows, int cols) } for (int i=0 ; i < rows ; i++) for (int j=0 ; j < cols ; j++) mat[i][j] = i*cols + j; {

Слайд 17





דוגמא: תוכנית המטפלת במטריצה (3)
void printMatrix(int** mat, int rows, int cols)
{
	for (int i=0 ; i < rows ; i++)
	}
	           for (int j=0 ; j < cols ; j++)
	  	  cout << mat[i][j] << ", ";
	           cout << "\b\b \n";
	{
{
 
void freeMatrix(int** mat, int rows)
}
	for (int i=0 ; i < rows ; i++)
	      delete []mat[i];
	
	delete []mat;
{
Описание слайда:
דוגמא: תוכנית המטפלת במטריצה (3) void printMatrix(int** mat, int rows, int cols) { for (int i=0 ; i < rows ; i++) } for (int j=0 ; j < cols ; j++) cout << mat[i][j] << ", "; cout << "\b\b \n"; { { void freeMatrix(int** mat, int rows) } for (int i=0 ; i < rows ; i++) delete []mat[i]; delete []mat; {

Слайд 18





טיפוס התייחסות
בשפת C כאשר רצינו  שפונקציה תשנה את ערכו של ארגומנט מסוים, העברנו את הכתובת שלו (העברה by pointer, לעומת העברת העתק, by value)
בשפת C++ עדיין ניתן להעביר מצביעים כדי לשנות ארוגמנטים בפונקציות, אך יש דרך חדשה הנקראית העברת פרמטרים by reference
בהגדרת הפרמטרים שהשיטה מקבלת מציינים ליד הפרמטר &
זהו למעשה מתן שם נוסף לארגומנט המקורי שנשלח הנגיש מתוך הפונקציה
אין הבדל סינטקטי בשליחת המשתנה בעבור משתנה שעובר by value או by reference
Описание слайда:
טיפוס התייחסות בשפת C כאשר רצינו שפונקציה תשנה את ערכו של ארגומנט מסוים, העברנו את הכתובת שלו (העברה by pointer, לעומת העברת העתק, by value) בשפת C++ עדיין ניתן להעביר מצביעים כדי לשנות ארוגמנטים בפונקציות, אך יש דרך חדשה הנקראית העברת פרמטרים by reference בהגדרת הפרמטרים שהשיטה מקבלת מציינים ליד הפרמטר & זהו למעשה מתן שם נוסף לארגומנט המקורי שנשלח הנגיש מתוך הפונקציה אין הבדל סינטקטי בשליחת המשתנה בעבור משתנה שעובר by value או by reference

Слайд 19





שליחת פרמטר by ref 
לעומת by val 
void changeTo4byVal(int  x)
{
	x = 4;
{
 
void changeTo4byRef(int&  x)
}
	x = 4;
}
 
void main()
}
	int num = 10;
 
	cout << "orig num = " << num << endl;
 
	changeTo4byVal(num);
	cout << "after changeTo4byVal: num = " << num << endl;
 
	changeTo4byRef(num);
	cout << "after changeTo4byRef: num = " << num << endl;
{
Описание слайда:
שליחת פרמטר by ref לעומת by val void changeTo4byVal(int x) { x = 4; { void changeTo4byRef(int& x) } x = 4; } void main() } int num = 10; cout << "orig num = " << num << endl; changeTo4byVal(num); cout << "after changeTo4byVal: num = " << num << endl; changeTo4byRef(num); cout << "after changeTo4byRef: num = " << num << endl; {

Слайд 20





הדוגמא swap
#include <iostream>
using namespace std;
void swap(int& a, int& b)
{
	int temp = a;
	a = b;
	b = temp;
{
void main()
}
	int x=3, y=5;
	cout << "Before swap: x = " << x << ", y = " << y << "\n";
	swap(x, y);
	cout << "After swap:  x = " << x << ", y = " << y << "\n";
{
Описание слайда:
הדוגמא swap #include <iostream> using namespace std; void swap(int& a, int& b) { int temp = a; a = b; b = temp; { void main() } int x=3, y=5; cout << "Before swap: x = " << x << ", y = " << y << "\n"; swap(x, y); cout << "After swap: x = " << x << ", y = " << y << "\n"; {

Слайд 21





משתנה מטיפוס reference
מתן שם נוסף למשתנה כלשהו
חייב להיות מאותחל
לא ניתן לייצר מערך של הפניות
אינו תופס מקום נוסף, ולכן כתובתו כמו כתובת המשתנה אליו הוא מפנה
Описание слайда:
משתנה מטיפוס reference מתן שם נוסף למשתנה כלשהו חייב להיות מאותחל לא ניתן לייצר מערך של הפניות אינו תופס מקום נוסף, ולכן כתובתו כמו כתובת המשתנה אליו הוא מפנה

Слайд 22





החזרת טיפוס התייחסות מפונקציה
בשפת C יכולנו להחזיר כתובת של משתנה מתוך פונקציה, וכך למעשה החזרנו את המשתנה המקורי, ולא העתק שלו
בשפת C++ עדיין ניתן להחזיר משתנה by pointer, אך ניתן גם להחזיר משתנה by reference
יש לשים לב שכשמחזירים משתנה by reference שהוא עדיין יהיה קיים ביציאה מהפונקציה (בדיוק כמו בשפת C)
Описание слайда:
החזרת טיפוס התייחסות מפונקציה בשפת C יכולנו להחזיר כתובת של משתנה מתוך פונקציה, וכך למעשה החזרנו את המשתנה המקורי, ולא העתק שלו בשפת C++ עדיין ניתן להחזיר משתנה by pointer, אך ניתן גם להחזיר משתנה by reference יש לשים לב שכשמחזירים משתנה by reference שהוא עדיין יהיה קיים ביציאה מהפונקציה (בדיוק כמו בשפת C)

Слайд 23





דוגמא להחזרת משתנה by ref מפונקציה
#include <iostream>
using namespace std;
void printArr(int arr[], int size)
{
	for (int i=0 ; i < size ; i++)
		cout << arr[i] << " ";
	cout << endl;
{
int& getMax(int arr[], int size)
}
	int maxIndex = 0;
	for (int i=1 ; i < size ; i++)
		if (arr[i] > arr[maxIndex])
			maxIndex = i;
	return arr[maxIndex];
{
Описание слайда:
דוגמא להחזרת משתנה by ref מפונקציה #include <iostream> using namespace std; void printArr(int arr[], int size) { for (int i=0 ; i < size ; i++) cout << arr[i] << " "; cout << endl; { int& getMax(int arr[], int size) } int maxIndex = 0; for (int i=1 ; i < size ; i++) if (arr[i] > arr[maxIndex]) maxIndex = i; return arr[maxIndex]; {

Слайд 24





מרחבי שמות (namespace)
כאשר עובדים על פרויקט גדול, לרוב משתמשים בקוד מוכן, וכל מתכנת כותב את חלקו
יתכן מצב שיהיו 2 פונקציות בעלות שם זהה המקבלות את אותם נתונים
תיוצר בעיה של התנגשות בשמות, הקומפיילר לא ידע לאיזה פונקציה לפנות
הפתרון: שימוש ב- namespace
השימוש ב- namespace מאפשר קישור של פונקציה מסוימת לחבילת קוד מסוימת
Описание слайда:
מרחבי שמות (namespace) כאשר עובדים על פרויקט גדול, לרוב משתמשים בקוד מוכן, וכל מתכנת כותב את חלקו יתכן מצב שיהיו 2 פונקציות בעלות שם זהה המקבלות את אותם נתונים תיוצר בעיה של התנגשות בשמות, הקומפיילר לא ידע לאיזה פונקציה לפנות הפתרון: שימוש ב- namespace השימוש ב- namespace מאפשר קישור של פונקציה מסוימת לחבילת קוד מסוימת

Слайд 25





דוגמא: 
שימוש ב- namespace
#include <iostream>
using namespace std;
 
namespace first
{
     void foo()     }cout << "This is the first foo\n“; {
{
 
namespace second
}
      void foo()    }cout << "This is the second foo\n“; {
{
 
void foo()    }cout << "This is just foo\n“; {
 
void main()
{
	first::foo();
	second::foo();
         foo();
{
Описание слайда:
דוגמא: שימוש ב- namespace #include <iostream> using namespace std; namespace first { void foo() }cout << "This is the first foo\n“; { { namespace second } void foo() }cout << "This is the second foo\n“; { { void foo() }cout << "This is just foo\n“; { void main() { first::foo(); second::foo(); foo(); {

Слайд 26





קיצור אופן השימוש ב- namespace
#include <iostream>
using namespace std;
 
namespace first
{
	void foo()    {cout << "This is the first foo\n";}
}
 
namespace second
}
	void foo()    {cout << "This is the second foo\n";}
{
 
using  namespace  second;
 
void main()
}
	first::foo();
	second::foo();
	foo();
{
Описание слайда:
קיצור אופן השימוש ב- namespace #include <iostream> using namespace std; namespace first { void foo() {cout << "This is the first foo\n";} } namespace second } void foo() {cout << "This is the second foo\n";} { using namespace second; void main() } first::foo(); second::foo(); foo(); {

Слайд 27





קיצור אופן השימוש 
ב- namespace
#include <iostream>
using namespace std;
 
namespace first
{
	void foo()    {cout << "This is the first foo\n";}
}
 
namespace second
}
	void foo()    {cout << "This is the second foo\n";}
{
 
void foo()    }cout << "This is just foo\n“; {
 
using  namespace  first;
using  namespace  second;
void main()
}
	first::foo();
	second::foo();
	foo();  // ERROR!
         ::foo();
{
Описание слайда:
קיצור אופן השימוש ב- namespace #include <iostream> using namespace std; namespace first { void foo() {cout << "This is the first foo\n";} } namespace second } void foo() {cout << "This is the second foo\n";} { void foo() }cout << "This is just foo\n“; { using namespace first; using namespace second; void main() } first::foo(); second::foo(); foo(); // ERROR! ::foo(); {

Слайд 28





מדוע שמים את  using namespace std?
בתוך namespace זה יש את כל הפקודות הבסיסיות 
בלעדיו נצטרך להוסיף את הקידומת ::std לכל הפונקציות הבסיסיות שבהן נשתמש, אחרת נקבל למשל את השגיאה:
	 error C2065: 'cout' : undeclared identifier
Описание слайда:
מדוע שמים את using namespace std? בתוך namespace זה יש את כל הפקודות הבסיסיות בלעדיו נצטרך להוסיף את הקידומת ::std לכל הפונקציות הבסיסיות שבהן נשתמש, אחרת נקבל למשל את השגיאה: error C2065: 'cout' : undeclared identifier

Слайд 29





ביחידה זו למדנו:
הגדרת תכנות מכוון עצמים
השוני הסינטקטי בין C ל- C++:
printf  cout
scanf  cin
gets  cin.getline
malloc  new
free  delete
טיפוס התייחסות
מרחבי שמות (namespace)
Описание слайда:
ביחידה זו למדנו: הגדרת תכנות מכוון עצמים השוני הסינטקטי בין C ל- C++: printf  cout scanf  cin gets  cin.getline malloc  new free  delete טיפוס התייחסות מרחבי שמות (namespace)

Слайд 30





תרגול
Описание слайда:
תרגול



Похожие презентации
Mypresentation.ru
Загрузить презентацию