java תפשב - orianit.edu-negev.gov.il“פי סיכום java/חוברת java.pdf · : תא...

45
חוברת לבגרות במחשבים יחידות2 ו- 3 בשפתJava כתב וערך לירון בדיחי[email protected] 050-8756869

Upload: others

Post on 14-Oct-2019

78 views

Category:

Documents


0 download

TRANSCRIPT

חוברת לבגרות במחשבים

3-ו 2יחידות

Javaבשפת

כתב וערך לירון בדיחי

[email protected] 050-8756869

מבוא

:מכמה סיבות, במדעי המחשבבנושא הכנה לבגרות פריצת דרךחוברת זו מהווה

סיבה ראשונהלימדתי הרבה שיעורים . יש לי תואר למדעי המחשב: דרך מקורית לפתירת תרגילים עם לולאות ומערכים

. תיבת לולאות זה דבר מסובךכ: "חשבתי לעצמי. עבדתי בבית תוכנה וכתבתי הרבה תוכניות, פרטייםגם מערכים חד מימדיים דורשים לולאות ומערכים דו מימדיים . במיוחד אם נצרכת לולאה בתוך לולאה

לתרגיל הפיתרוןהאם המשימה שלי היא להראות לתלמיד את , בתור מורה .דורשים לולאות בתוך לולאותלהיות דרך פשוטה להגיע לתשובות חייבת ?)כמו שלימדו אותי( מסובך ולהסביר לו למה זה פועל

" !המסובכות האלהקראתי ).מורכבת ככל שתהיה(סייע בידי ופיתחתי דרך חשיבה מקורית לכל לולאה ' וה. ישבתי וחשבתי

".דרך שלושת השלבים"לה דרך זו נותנת את האפשרות לפתור . דרך זו לפתרון לולאות הלהיבה את כל התלמידים שלימדתי אותם

.תוצאה הסופיתלהתעמק בבלי מולהגיע לתוצאה הנכונה השקיע יותר מידי מחשבהל לולאה בלי .אשמח לשמוע –אם למישהו יש רעיון טוב יותר . אין דרך שמפשטת את התרגיל יותר מהדרך שלי, לדעתי

סיבה שניה .3-ו 2חוברת זו הינה חוברת הכנה לבגרות ליחידות : חוברת קצרה וקולעת

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

.חוברת שנוכל לגמור מהר ונתחיל לפתור בגרויות. תרגיליםוומספקת הסברים 200-מעל ל(א ינסו אפילו לקרוא את הספרים הארוכים שיש היום אני מקווה שאתם מבינים שתלמידים ל

! עמודים בלבד 40-לעומת חוברת זו שיש בה כ) ! עמודים

הרשאות גישה , פונקציה בונה, מחלקות, רקורסיה(כתבתי המשך לחוברת בנושאים של יחידות מתקדמות .בלבד 3-ו 2כדי להתמקד ביחידות , אך הפרדתי את ההמשך מחוברת זו). 'וכו

.ורעיונות לשיפורים, הערות, תגובותלכמה שיותר מורים ולקבל החוברת הייתי רוצה להכיר את ! לתלמידים להכיר אותה... ובעיקר, למחברי הספרים, פרצתי פה דרך חדשה וכדאי למוריםיודע שאני

:בתודה 050-8756869: לירון בדיחי

[email protected]: אימייל

תוכן 5 ............................................................................................................. הבסיסיים הטיפוסים

6 .................................................................................................... הבסיסיים הטיפוסים עץ 8 ................................................................................................................. המסך על הדפסה 8 ........................................................................................... מהמשתמש/מהמסך נתונים קליטת

9 .........................................................................................................פלט/קלט – תרגילים Math,Random ....................................................................................... 10 במחלקות שימוש

Random - 10 ....................... ).מסויים בטווח" מספרים הגרלת(" אקראיים מספרים לייצור מנגנון

11 .............................................................................................................. חשבוניים ביטויים

11 ........................................................................................... חשבוניים ביטויים – תרגילים

12 ............................................................................................................................. תנאים

13 .............................................................................................. ילרג תנאי - ראשונה דוגמא

13 ........................................................................... )תנאים משני( מורכב תנאי – שניה דוגמא

13 ................................................................... )תנאי בתוך תנאי( מקונן תנאי - שלישית דוגמא

14 ........................................................................................................................ בלוקים

14 ..................................................................................................... בבלוקים קדימויות

15 ............................................................................................... אלגוריתם/ זרימה תרשים

16 .......................................................................................................... תנאים – תרגילים

17 ...................................................................................................................... מעקב טבלת

18 ............................................................................................................................ לולאות

18 .............................................................................. פקודות בכתיבת חיסכון: ראשון מוששי

while ........................................................................................................... 18 לולאת

for ............................................................................................................... 18 לולאת

20 ............................................................................... )ראשון שימוש( לולאות – רגיליםת

21 ........................................................ הלולאה שמייצרת הרצים במספרים שימוש: שני שימוש

21 .................................................... השלבים שלושת שיטת – לולאה כל לפתרון כללית דרך

21 .......................................................................................................... ראשונה דוגמא

21 .............................................................................................................. שניה דוגמא

22 .......................................................................................................... שלישית דוגמא

24 ...................................................................................)שני שימוש( לולאות – תרגילים

25 ........................................................................................................ לולאה בתוך לולאה

25 ...................................................................................................................... דוגמא

27 .......................................................................................................)מתקדמת( דוגמא

29 ..................................................................................... לולאה בתוך לולאה – תרגילים

30 .......................................................................................................................... פונקציות

30 .......................................................................................................................... דוגמא

31 ........................................................................................................ פונקציה של המבנה

31 .......................................................................................................................... תיעוד

32 .......................................................................................................פונקציות – תרגילים

switch ........................................................................................................................... 33

33 .............................................................................................................. ראשונה דוגמא

34 .................................................................................................................. שניה דוגמא

35 ................................................................................................................. מימדי חד מערך

35 .................................................................................................................. ?מערך מהו

35 ............................................................................................................... המערך אינקס

36 ................................................................................................ בזכרון נשמר המערך איך

37 .............................................................................................. מערך להגדיר אפשרויות 2

37 ................................................................................................................. המערך גודל

38 .......................................................................................................................... דוגמא

39 .............................................................................................. מימדי חד מערך – תרגילים

41 ...................................................................................................... בסיס – ותווים מחרוזות

41 .......................................................................................................................... דוגמא

41 ....................................................................................................... מחרוזות – תרגילים

42 .................................................................................................................. מימדי דו מערך

42 ................................................................................ מימדי דו ממערך להגדיר אפשרויות 3

43 ................................................................................................................. המערך גודל

44 .......................................................................................................................... דוגמא

הטיפוסים הבסיסיים

:עוד טיפוסים

.כל מספר יכול להיות מוצג בכל בסיסאו ) 1(כל סיבית יכולה להיות או דלוקה . כי הוא בנוי מסיביות, הסיבה שהמחשב סופר בצורה בינארית

.אפשרויות בלבד 2לכן לכל סיבית יש ) 0(כבוייה .ים עם מספרים מהסוג הזה כל הזמןכי מתכנתים נפגש, "הקסה"הצגנו גם את בסיס

נעבור לתצוגה מדעית , )מחשבון �עזרים �כל התוכניות �התחל " (מחשבון"נפתח את היישום

.ונבדוק את המעבר בין הבסיסים

כדי להסיר מעליכם את השיקול במה להשתמש בכל intבתוכניות שלנו ובספרים משתמשים רק בטיפוס

.פעם .מה עדיף להשתמשכדאי לחשב ב, במציאות

:שאלה ?מדוע לא נשתמש בטיפוס הגדול ביותר תמיד

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

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

עץ הטיפוסים הבסיסיים

char מדוע הוא מספר שלם". תו"הינו? איזה תו הוא –עבור כל מספר : ובכל מחשב יש טבלת תווים, כיוון שכל תו מיוצג על ידי מספר שלם

' 0'עבור 48והמספר עבור רווח 32והמספר 'A'עבור 65והמספר 'a'עבור 97המספר , לדוגמא. מייצג ...וכן הלאה

תווים הכוללת רק את האותיות באנגלית ואת שאר התווים 255עבור ASCIIיש טבלת תווים הנקראת ).כפי שראינו בעמוד הקודם, אפשרויות 255אחד יש byteכי (אחד byteמספיק לה . במקלדת

היא . בעולם ושאר התווים במקלדתעבור כל האותיות של כל השפות Unicodeיש טבלת תווים הנקראת .אפשרויות 65,535 –כ "סה. bytesצריכה שני

:ננסה להבין את האינפורמציה בטבלה, לאחר שראינו שגודל הטיפוס מוגדר בהתאם למספר הביטים

סוג הערך הטיפוסמספר הביטים

ברירת המחדל

ערכי מינימום ומקסימום

eanbool true אוfalse 1 false false אוtrue

char תו )Unicode-ב(

#FFFFעד #0000 #0000 16

String אינו טיפוס (

)בסיסי מחרוזת תווים

תלוי במספר התווים

"" מחרוזת (

)ריקה

byte מספר שלם

חיובי או שלילי או אפס

127עד -128 0 8

short מספר שלם

חיובי או שלילי או אפס

32767עד 32768- 0 16

int מספר שלם

חיובי או שלילי או אפס

32 0 עד 2146483648-2147483647

long מספר שלם

חיובי או שלילי או אפס

64 0 ממספר שלם מאוד גדול וחיובי עד מספר שלילי

קטן במיוחד

float

מספר ממשי יכול להיות (

שלם ויכול להיות עם שבר

)עשרוני

32 0.0 מקומות 7דיוק של עשרוניים

double

ר ממשי מספיכול להיות (

שלם ויכול להיות עם שבר

)עשרוני

64 0.0 מקומות 15-16דיוק של עשרוניים

Object אינו טיפוס (

)בסיסי

מחלקת הבסיס של כל

הטיפוסים

הדפסה על המסך

• System.out.println("…"); - יורד שורה, כתיבת שורה למסך.

• System.out.print("…"); – לא יורד שורה, שורה למסך כתיבת.

מהמשתמש/קליטת נתונים מהמסך

:Scannerהצהרה על משתנה מסוג : השלב הראשון לקליטת נתונים מהמשתמש הוא קבועScanner input = new Scanner(System.in);

לכן נצהיר על . כי זה לא נמצא באותה חבילה שלה Scannerהמחלקה שלנו לא מכירה את המחלקה ):package-לאחר הגדרת ה(נכתוב בתחילת התוכנית . נמצאת בה Scanner-החבילה ש

import java.util.*;

:להלן דוגמה לקלט עבור כל אחד מן הטיפוסים הבסיסיים

public static void main(String[] args)

{

Scanner input = new Scanner(System.in);

:שלםקלט מספר מסוג

System.out.println("Enter an integer number: ");

int i = input.nextInt(); :עשרוניקלט מספר מסוג

System.out.println("Enter an double number: ");

double d = input.nextDouble(); :בולאניקלט מספר

System.out.println("Enter an boolean value (true/false): ");

boolean b = input.nextBoolean(); :מחרוזתקלט של

System.out.println("Enter String: ");

String str = input.next(); :תוקלט של

System.out.println("Enter char: ");

char c = input.next().charAt(0);

:הדפסה System.out.println("Your number is: " + i); System.out.println("Your number is: " + d); System.out.println("Your value is: " + b);

System.out.println("Your string is: " + str); System.out.println("Your char is: " + c);

}

פלט/קלט –תרגילים

.קלוט מחרוזת והדפס אותה )1 .קלוט מספר שלם והדפס אותו )2 .קלוט מספר עשרוני והדפס אותו )3 .קלוט מספר בולאני והדפס אותו )4 .קלוט תו והדפס אותו )5 ).0-הספירה מתחילה מ, שים לב(קלוט מהמשתמש מחרוזת והדפס את התו הרביעי שלה )6והאם , )עבור זכר' M'עבור נקבה ו' gender - 'F(מין , )height(גובה , )age(גיל , )name(קלוט שם )7

.והדפס את הנתונים בשורות נפרדות, )likeSalad(המשתמש אוהב סלט :דוגמא לפלט

name: yoni age: 16.5 height: 1.80 gender: M likeSalad: true

?מה יוצג על המסך )8int numOfStudents = 23;

System.out.println(numOfStudents);

int x = 5;

int y = x + 3;

System.out.println(y); .והדפס אותו 10הוסף לו , קלוט מספר שלם )9

.עם רווחים מפרידים, המחרוזת ושוב את התו, הדפס בשורה אחת את התו. קלוט תו, קלוט מחרוזת )10

Math,Randomשימוש במחלקות

Random - בטווח מסויים" מספריםהגרלת ("מנגנון לייצור מספרים אקראיים.( Random rnd = new Random();

int num = rnd. nextInt(8); ?יכול לקבל numאיזה מספרים אקראיים המשתנה : שאלה ).8המספר לא כולל( 8לבין ) 0 כולל( 0מספר אקראי בין : תשובה

Random rnd = new Random();

int num = rnd.nextInt(8)+5; ?יכול לקבל numם אקראיים המשתנה איזה מספרי: שאלה ).13לא כולל ( 13לבין ) 5כולל ( 5מספרים אקראיים בין : תשובה

?איך נחשב זאת בעצמנו

.12-ל 5הגרל מספר בין : שאלה .מספרים 8כ "סה: 12-5+1): 12כולל ( 12-ל 5נחשב כמה מספרים יש בין : שלב ראשון - :תשובה

rnd.nextInt(8)נכתוב : שלב שני - rnd.nextInt(8)+5): המספר הקטן( 5נוסיף לתוצאה את המספר : שלב שלישי -

תרגילים .ותדפיס אותו 10עד 0-בנה תוכנית שתגריל מספר בטווח המספרים מ )1 .ותדפיס אותו 3עד 2-כתוב תוכנית שתגריל מספר בטווח המספרים מ )2 .ספר של המשתמש והדפס אותועד המ 0-הגרל מספר בטווח המספרים מ, קלוט מספר שלם מהמשתמש )3, 5עד המספר של המשתמש ועוד 5-הגרל מספר בטווח המספרים מ, קלוט מספר שלם מהמשתמש )4

.והדפס אותו

Math – מחלקה שמספקת פעולות מתמטיות רבות:

.ותפתח לנו רשימת הפונקציות, ולאחריה נקודה Mathנכתוב את המילה : שימוש : זירהבכל פונקציה רואים מה היא מח

לכן צריך לקלוט את התוצאה לתוך משתנה מטיפוס , )מספר שלם( intהפונקציה הזאת מחזירה טיפוס מסוג :שלם

int i = Math.abs(-5);

):athMהעזר בפונקציות של המחלקה (ים תרגיל ).PI(הדפס כמה זה פאי )1

:10.24עבור המספר ).sqrt(הדפס את השורש שלו )2 .שלו) pow(הדפס את הריבוע )3 ).round(הדפס את העיגול שלו )4 ).min(קלוט שני מספרים והדפס את הקטן מביניהם )5של הגדול ) sqrt(הדפס את השורש . קלוט שני מספרים )6

.של הקטן מביניהם) pow(מביניהם ואת הריבוע , הדפס את שני המספרים. 100-ל 1הגרל שני מספרים בין )7

.מביניהם) max(ואת הגדול

נייםביטויים חשבו כפל, חיסור, משמשים לחיבור *,-,+האופרטורים • ! תמיד מספר שלםתהיה חלוקה בין מספרים שלמים – לוקימבצע ח/ האופרטור •

3 = 3 / 10: דוגמא משמש לקבל שארית מחלוקה בין מספרים שלמים %האופרטור •

:דוגמא

לסוגריים הקדימות הגבוהה ביותר() • מות גבוההקדי* ,/,% • קדימות נמוכה+ ,- •

:דוגמאint a =5, b=6; int c,d; c = (a + 2)*b; // = 42 d = 30 / 6 / 3; // =1

ביטויים חשבוניים –ים תרגיל

:והדפס את, בהתאמה 6,4וטען לתוכם את הערכים a,b: הגדר שני משתנים שלמים .החיבור שלהם )1 .החילוק של הראשון בשני )2 .הכפל שלהם )3 ).Mathמבלי להשתמש במחלקה (הריבוע של הסכום שלהם )4

:והדפס את, בהתאמה 6,3,2: וטען לתוכם את הערכים a,b,c: הגדר שלושה משתנים שלמים .cעם a+bשארית החילוק של )5 .c+3והכפל את התוצאה עם bעם aחלק את )6קות ומדפיסה כמה אנשים כתוב תוכנית הקולטת את מספר הד. אנשים כל בדקה 5זבוב מצליח לעצבן )7

.הצליח הזבוב לעצבןטבח . טבח שני אופה שתי לחמניות בדקה. טבח ראשון אופה לחמניה אחת בדקה. במאפיה שלושה טבחים )8

כתוב תוכנית הקולטת מספר דקות ומדפיסה את מספר הלחמניות . לחמניות בדקה 5שלישי אופה .המוכנות

.שלו הדפס את החלק העשרוני. קלוט מספר עשרוני )9

:6,7,11תרגילים 59עמוד –מבט לחלונות חלק א : תרגילים נוספים

שארית תוצאה7/2 = 3 7%2 = 1 7/3 = 2 7%3 = 1

7/4 = 1 7%4 = 3 7/5 = 1 7%5 = 2 7/6 = 1 7%6 = 1

שארית תוצאה6/2 = 3 6%2 = 0 6/3 = 2 6%3 = 0 6/4 = 1 6%4 = 2 6/5 = 1 6%5 = 1

תנאים

:מבנה הוראה לביצוע מותנה אזי ) תנאי( אם

1הוראות לביצוע

אחרת

2הוראות לביצוע

. אלא בפקודה שבתוכו ";"לא כותבים ifאחרי

: ורי ההשוואה הבאיםבתוך תנאי יכולים להופיע אופרט

המשמעות דוגמא לשימוש האופרטור

< A<B האם ערכו שלA קטן מערכו שלB ?

> A>B האם ערכו שלA גדול מערכו שלB ?

<= A<=B האם ערכו שלA קטן או שווה לערכו שלB ?

>= A>=B האם ערכו שלA גדול או שווה לערכו שלB ?

======== A==B האם ערכו שלA ו של שווה לערכB ?

!= A!=B האם ערכו שלA שונה מערכו שלB ?

:אפשר לשלב כמה תנאים ביחד בעזרת האופרטורים הבאים

המשמעות דוגמא לשימוש האופרטור

? falseהאם ערכו של התנאי שווה !!!!)תנאי( ! ! ! !

))))) תנאי ב(&& ) תנאי א( (((( &&&&&&&& trueהאם ערכו של תנאי א שווה

? true ערכו של תנאי ב שווה וגםוגםוגםוגם

))))) תנאי ב(| | ) תנאי א( (((( | || || || | trueהאם ערכו של תנאי א שווה

? trueערכו של תנאי ב שווה אואואואו

הוא בעל | || || || |והאופרטור , &&&&&&&&האופרטור אחריו , הוא בעל הקדימות הגבוהה יותר !!!!האופרטור .הקדימות הנמוכה ביותר

if ( תנאי ) { . . } else { . . }

תנאי רגיל - דוגמא ראשונה

".עבר"אחרת הדפס , "לא עבר"הדפס 55-מאם הציון קטן . קלוט ציוןScanner in = new Scanner(System.in);

System.out.println("Enter grade: ");

int grade = in.nextInt();

if (grade<55)

{

System.out.println("lo avar");

}

else

{

System.out.println("avar"); }

)משני תנאים( תנאי מורכב –דוגמא שניה

.הדפס תשובה בהתאם. 3- וב 2-בדוק אם הוא מתחלק ב. קלוט מספרScanner in = new Scanner(System.in);

System.out.println("Enter number: ");

int number = in.nextInt();

if ((number % 2 == 0) && (number % 3 == 0))

{

System.out.println(number + " divided");

}

else

{

System.out.println(number + " is not divided"); }

)תנאי בתוך תנאי(תנאי מקונן -דוגמא שלישית

.בודקת ומדפיסה את המספר הקטן מבין שלושת המספרים, כתוב תכנית הקולטת שלשה מספריםScanner in = new Scanner(System.in);

int num1, num2, num3;

System.out.println("Enter first number:");

num1 = in.nextInt();

System.out.println("Enter second number:");

num2 = in.nextInt();

System.out.println("Enter third number:");

num3 = in.nextInt();

if ((num1 < num2) && (num1 < num3))

{

System.out.println("The small number is:" + num1);

}

else

{

if ((num2 < num1) && (num2 < num3))

{

System.out.println("The small number is:" + num2);

}

else

{

if ((num3 < num1) && (num3 < num2))

{

System.out.println("The small number is:" + num3); } }

}

בלוקים .פותחים בלוק תמידלמחלקה

.פותחים בלוק תמידלפונקציה ?ח בלוקופתחייבים למתי ). עדיף תמיד( לפתוח בלוק תמידחייבים לא if-ל

.כאשר יש יותר מפקודה אחת :לדוגמא

-שתי הפקודות לא יתבצעו –אם התנאי לא יתקיים if (תנאי) { System.out.println("hello"); System.out.println("by"); }

- כי היא לא חלק מהתנאי , הפקודה השניה תתבצע –אם התנאי לא יתקיים if (תנאי) System.out.println("hello"); System.out.println("by");

:החיצוני if-ייבים לפתוח בלוק ללא ח, לכן בדוגמא הבאה. לפקודה אחת נחשב if תנאיif (תנאי) if(תנאי) { … }

קדימויות בבלוקים

.מוזיזים קצת פנימה –כל הקוד בתוך בלוק מסויים : "הזחה"כלל ה Edit � Advances � Formatנלחץ בתפריט על , אם בזמן הכתיבה לא ביצענו הזחה

Document טומטיתוהמערכת תבצע לנו את ההזחה או. .בבלוק הפנימי גםיוכר –כל משתנה שהגדרנו בבלוק חיצוני : כלל

!יהיה מוכר אך ורק באותו בלוק ולא יהיה מוכר מחוץ לו –משתנה שהוגדר בבלוק פנימי :דוגמא

public class Test

{

static int x = 20;

static void main(String[] args)

{

int j = 5;

if (j < 5)

{

System.out.println("hello");

int i = 10;

j = j + 1;

}

// i = i + 1; !שגיאה: משתנה מקומי שהוגדר בבלוק מסויים, לא מוכר מחוץ לו

x = x + 1;

}

public static void go()

{

x = x + 1;

// j = j + 1; !שגיאה: משתנה מקומי שהוגדר בבלוק מסויים, לא מוכר מחוץ לו

}

}

ריתםאלגו/ תרשים זרימה

.אלא מומלץ לתכנן אותה תחילה, לא מומלץ לגשת לכתיבת הקוד מיד, כאשר ניגשים לתוכנית מורכבת .כתיבה של מה שאנחנו הולכים לעשות בשפה שלנו: והכוונה". תרשים זרימה"לתכנון הזה קוראים גם

:עמוד הקודםמהנה תרשים הזרימה עבור הדוגמא הראשו

".עבר"אחרת הדפס , "לא עבר"הדפס 55-אם הציון קטן מ. קלוט ציון

gradeקלוט ציון למשתנה ששמו grade<55אם "לא עבר"הדפס

אחרת "עבר"הדפס

?באיזה מילים יש להשתמש • ".הדפס", "קלוט: "במילים, עבור קלט והדפסה ".אחרת"ו" אם: "עבור תנאי במילים

.יש להקפיד על כלל ההזחה גם בתרשים הזרימה •

:שאלה !הרי חזרנו בעצם על המילים של התרגיל ? מה תרשים הזרימה הועיל

:תשובה

, לחשוב ולתכנן מה לעשות במילים שלנו) כמעט חובה(זה נועד למקרים יותר מורכבים בהם קל יותר .כ להפוך כל שורה מתרשים הזרימה לקוד"ואח

איםתנ –תרגילים כתוב תרשים זרימה . ₪ 5.3עבור כל טופס הוא מקבל שכר של . פקיד בנק עובד במילוי טפסים )1

.הקולט מספר טפסים ומדפיס את השכר של הפקיד :לפניך קטע תוכנית )2

int num = 10;

if ((a + b) > 0) num = 7;

else if (a > 0) num = 19;

else num = 50;

:עבור הערכים הבאים, ל"לאחר ביצוע הקטע הנ numמה יהיה ערכו של המשתנה

a=-8; b=3; ג a=3; b=-8; ב a=5; b=-4; א

3( מה תהיה תוצאת הביטויים , 5 8 - 3 0: הם D C B A בהנחה שערכי המשתנים

false או true: הבוליאניים הבאים

:ב את התנאים הבאים המנוסחים במילים לביטויים בוליאניים כתו )4 .50וקטן מ 0גדול מ xערכו של המשתנה .א .10קטן מ xאו ערכו של המשתנה 0גדול מ aערכו של המשתנה .ב .'Z'ואינו התו ' A'אינו התו letterערכו של המשתנה .ג .'Z'או שווה לתו ' A'שווה לתו letterערכו של המשתנה .ד .4שווה לערכו המוחלט וגדול מ xערכו של המשתנה .ה .100קטן מ xוערכו של המשתנה 0גדול מ dערכו של המשתנה .ו .10קטן מ x או ערכו של המשתנה 0גדול מ aערכו של המשתנה .ז .191קטן מ sumאו שערכו של המשתנה 100גדול מ numערכו של המשתנה .ח

.דפיסה אותם בסדר עולהכתוב תוכנית הקולטת שני מספרים ומ )5-אם הממוצע קטן מ, מחשבת ומדפיסה את ממוצעם, כתוב תוכנית הקולטת שלשה ציונים של תלמיד )6

.'התלמיד עבר': אחרת מדפיסה', התלמיד נכשל': מדפיסה 55התכנית תבקש מהמשתמש שיחשב , " 5+8+3 = ?" : כתוב תכנית המדפיסה על המסך את התרגיל )7

יפה מאד ': תודפס הודעה, אם המשתמש פתר נכון, מש בקלט לתכניתהתוצאה תש. את התוצאה .'16התוצאה היא , טעית': אחרת תודפס הודעה', !פתרת

אם , מחשבת ומדפיסה את מכפלתם, הקולטת שלשה מספרים, בליווי תרשים זרימה, כתוב תכנית )8 .אחרת מדפיסה את הסכום והמכפלה, מדפיסה את המספרים, המכפלה קטנה מהסכום

:הבא למשפטי תוכנית ) תרשים הזרימה(תרגם את האלגוריתם )9 let1 let2 let3למשתנים ABC-קלוט שלוש אותיות מה

(let1<let2) וגם) let2<let3( םםםםא "האותיות מסודרות בסדר עולה"הצג כפלט את ההודעה אחרת "עולה האותיות אינן מסודרות בסדר"הצג כפלט את ההודעה

:כתוב תכנית הקולטת מספר בודקת אותו ומדפיסה אחת מההודעות הבאות )10 ספרות ומעלה 4המספר בן .א ספרות 3המספר בן .ב ספרות 2המספר בן .ג המספר בן ספרה אחת בלבד .ד

(A > B) && (C = = D)

A = = 10 / 2) (

(A >= D) && (C > B)

(C < D) | | ( B < A)

(A < B) && (C <= B % 2) | | (C > 0)

טבלת מעקב

:נתונה התכנית הבאה .1

Scanner in = new Scanner(System.in);

double A,B,C,D;

System.out.println("Enter three double numbers");

A = in.nextDouble();

B = in.nextDouble();

C = in.nextDouble();

if (A>B)

{

D = A;

A = -B;

B = D;

}

if (C<A)

{

D = A;

A = C;

C = -D;

}

if (C<B)

{

D = B;

B = C;

C = D;

}

System.out.println("A=" + A);

System.out.println("B=" + B);

System.out.println("C=" + C);

:מה יודפס על המסך עבור הקלטים הבאים, טבלת מעקבמצא בעזרת ) 1

C=12.5 B=34.6 A=11 . א

C=13.3 B= 4 A=7 .ב

C=22 B=22 A=33 .ג

.ל"מה מבצעת התכנית הנ, רשמו) 2

פתרון עבור סעיף א .נצייר טבלת מעקב

:עמודת פלטעמודת פלטעמודת פלטעמודת פלט+ מספר התנאיםמספר התנאיםמספר התנאיםמספר התנאים+ כמספר המשתניםכמספר המשתניםכמספר המשתניםכמספר המשתניםמספר הטורים של הטבלה הוא

C<B C<A A>B D C B A פלט true false false 12.5 34.6 11

11A = 34.6 34.6 12.5 12.5B = 34.6C =

.2ואת שאלה , ג-שיכו לפתור את סעיף ב והמ

לולאות ?למה צריך לולאות

חיסכון בכתיבת פקודות :ראשוןשימוש

:"hello"ם את המילה פעמי 5תוכנית שכותבת כתוב System.out.println("hello"); System.out.println("hello"); System.out.println("hello"); System.out.println("hello"); System.out.println("hello");

whileלולאת

:פעמים hello" 5"התוכנית הבאה כותבת את המילה int i=0; while (i<5) { System.out.println("hello"); i++; }

forלולאת

:נכתבים באותה השורה iתנאי הסיום של הלולאה והקידום של , iהאיתחול של , forבלולאת for (int i=0; i<5; i++) { System.out.println("hello"); }

:שתי הלולאות מתבצעות באותו סדר .תפעולה זאת מתבצעת רק פעם אח. 0-ל iמאתחלים את )1 ?5- קטן מ iהאם : בדיקת התנאי )2 .נכנס ללולאה ומבצע את הפקודה, 5-קטן מ i-כיוון ש )3 .iמקדם את )4 i<5בודק את התנאי )5 .נכנס ומבצע את הפקודה בתוך הלולאה )6 .4חוזר לשלב )7

. אלא בפקודה שבתוכם ";"לא כותבים while-ו if ,forאחרי

- אלא לפעמים נוח להשתמש ב, וכן להיפך whileולאת ניתן לכתוב בל forכל מה שניתן לכתוב בלולאת

for ולפעמים נוח להשתמש ב-while. ?while-ומתי נוח להשתמש ב for-מתי נוח להשתמש ב

.נוח להשתמש כאשר ידוע מראש כמה פעמים צריך לבצע את הלולאה for-ב .נוח להשתמש כאשר מספר הפעמים של ביצוע הלולאה לא ידוע מראש while-ב

.forפשוט יותר להשתמש בלולאת ") hello"את המילה פעמים 5כתוב (גמא הקודמת בדו

דוגמא

קלוט 10-כל עוד המספר גדול או שווה ל. 10- על המספר להיות קטן מ. כתוב תוכנית שקולטת מספר .מספר אחר

פתרון

) 10-פר קטן ממס(כיוון שלא ידוע כמה פעמים נצטרך לקלוט מספר עד שהמשתמש יכניס מספר חוקי .whileנעדיף להשתמש בלולאת

:ישנו קוד שחוזר על עצמו פעמיים דרך כלל, כאשר כותבים לולאה שמספר הפעמים לא ידוע מראש קלוט מספרwhile (10 =< המספר) { קלוט מספר }

?forל בלולאת "מדוע לא לכתוב את התוכנית הנ :כי זה לא נראה יפה

קלוט מספרfor(;number >= 10;) { קלוט מספר }

:הקודint number;

Scanner in = new Scanner(System.in);

System.out.println("Enter number less than 10");

number = in.nextInt();

while (number >= 10)

{

System.out.println("Enter number less than 10");

number = in.nextInt();

}

System.out.println("your number is: " + number);

:הרחבות

.doמשתמשים עם , אם רוצים להבטיח שהלולאה תתבצע לפחות פעם אחת) 1 :פעם אחת" hello"התוכנית הבאה תכתוב את המילה

int i=5; do { System.out.println("hello"); } while (i<5);

2( :whileת בגירסת לולאת לולאה אין סופי

while(true) { … }

:forלולאה אין סופית בגירסת לולאת for (;;) { … }

אותו קוד

Javaבשפת 3- ו 2חוברת ליחידות

[email protected] 20 - 050-8756869 – בדיחי לירון

)שימוש ראשון(לולאות –תרגילים

]מספר הפעמים ידוע מראש[ forלולאת תרגילים עם

.פעמים 12הדפס את שמך )1וכנית שתעשה עבור כתוב ת. פעם 400" לא אדבר בשעת השיעור"תלמיד קיבל עונש לכתוב )2

.התלמיד את העבודה .פעמים 3כתוב תוכנית שקולטת משפט ומדפיסה אותו )3 :הפלט. כוכביות 20כתוב תוכנית המדפיסה בשורה )4

******************** .כתוב תוכנית שקולטת מספר שלם ומדפיסה כוכביות כמספר הפעמים של המספר השלם )5 .ש פעמיםכתוב תוכנית המבצעת את התרגיל הקודם שלו )6 .כוכביות 20כתוב תוכנית המדפיסה סוגריים ובתוכם )7

: הפלט(********************)

.'('כ את התו "כוכביות ואח 20כ "אח' )'התו : רמז .פעמים 10כתוב תוכנית המבצעת את התוכנית הקודמת )8

]ידוע מראשלא מספר הפעמים [ whileלולאת תרגילים עם

תוצג , אם המשתמש לא הכניס אות קטנה). 'z'-ל 'a'תו בין (טנה כתוב תוכנית שקולטת אות ק )1 .התוכנית תדפיס את האות, בסיום". הכנס אות קטנה"הודעה

כתוב תוכנית שמחשבת ממוצע ל: ממוצע מספרים )2כל . על המשתמש לנחש את המספר. כתוב תוכנית המגרילה מספר -" נחש את המספר"משחק )3

, טעית: "וכל עוד לא עברו שלושה ניחושים תוצג הודעה ,עוד המשתמש לא ניחש את המספראם המשתמש הצליח לגלות את ". המשחק הסתיים: "תוצג הודעה, נסיונות 3אחרי ". נסה שוב !"ניצחת: "תוצג הודעה, המספר

. כמה פעמים שהוא רוצה" נחש את המספר"כתוב תוכנית שנותנת למשתמש לשחק במשחק )4אם המשתמש לחץ על ". ל/כ? האם ברצונך לשחק שוב: "דעהבסיום המשחק הראשון תוצג הו

תודה ששיחקת בתוכנית נחש : "תוצג הודעה', ל'אם המשתמש לחץ על . יתחיל משחק חדש' כ' .והתוכנית תסתיים" את המספר

Javaבשפת 3- ו 2חוברת ליחידות

[email protected] 21 - 050-8756869 – בדיחי לירון

שימוש במספרים הרצים שמייצרת הלולאה :שנישימוש

םשיטת שלושת השלבי –דרך כללית לפתרון כל לולאה :שלבים 3תמיד נצטרך לעבור . שיטת הפיתרון תהיה קבועה

.כתיבת כמה פקודות במפורש: שלב ראשון

:נשאל את עצמנו שתי שאלות: שלב שני ?מהי התבנית הקבועה )1 ?מה טווח המספרים הרצים )2

: כתיבת הלולאה: שלב שלישי

.התחום של הלולאה יהיה בדיוק הטווח של המספרים הרצים - .ואיפה שצריך להיות המספר הרץ נכתוב את המשתנה של הלולאה, ולאה נכתוב את התבנית הקבועהבתוך הל -

דוגמא ראשונה .בשורות נפרדות 10עד 1-הדפס את המספרים מ

:פתרון :כתיבת כמה פקודות במפורש :שלב ראשון

System.out.println(1);

System.out.println(2);

...

System.out.println(10);

?זיהוי מה התבנית הקבועה ומה טווח המספרים הרצים :שלב שני ;( )System.out.println: הקבועהתבנית ה

.10עד 1- מ: טווח המספרים הרצים

בתוך הלולאה נכתוב את ). 10עד 1-מ(ניצור לולאה בדיוק בתחום המספרים הרצים :שלב שלישי :וב את המשתנה של הלולאהואיפה שצריך להיות המספר הרץ נכת, התבנית הקבועה

for (int i=1; i<=10; i++)

{

System.out.println(i);

}

דוגמא שניה

:פעמים בצורה הבאה 5כתוב את השם שלך 1 liron 2 liron 3 liron 4 liron 5 liron

Javaבשפת 3- ו 2חוברת ליחידות

[email protected] 22 - 050-8756869 – בדיחי לירון

:פתרון :כתיבת כמה פקודות במפורש :שלב ראשון

System.out.println(1);

System.out.println("liron");

System.out.println(2);

System.out.println("liron");

...

System.out.println(5);

System.out.println("liron");

?זיהוי מה התבנית הקבועה ומה טווח המספרים הרצים :לב שניש

:התבנית הקבועהSystem.out.println( );

System.out.println("liron");

.5עד 1- מ: טווח המספרים הרצים

בתוך הלולאה נכתוב את התבנית ). 5עד 1-מ(ניצור לולאה בדיוק בתחום המספרים הרצים :שלב שלישי :ואיפה שצריך להיות המספר הרץ נכתוב את המשתנה של הלולאה, הקבועה

for (int i=1; i<=5; i++)

{

System.out.println(i);

System.out.println("liron");

}

שלישיתדוגמא .והצג אותו 10עד 1-חשב את הסכום של המספרים מ

:פתרון

:כתיבת כמה פקודות במפורש :שלב ראשוןint sum = 0;

sum = sum + 1;

sum = sum + 2;

sum = sum + 3;

...

sum = sum + 10;

:הערה

.התוצאה עוברת לצד השמאלי כ"ואח, קודם מחושב הצד הימני

?זיהוי מה התבנית הקבועה ומה טווח המספרים הרצים :שנישלב

:הקבועהתבנית הsum = sum + ;

.10עד 1- מ: טווח המספרים הרצים

Javaבשפת 3- ו 2חוברת ליחידות

[email protected] 23 - 050-8756869 – בדיחי לירון

בתוך הלולאה נכתוב את ). 10עד 1-מ(ניצור לולאה בדיוק בתחום המספרים הרצים :שלב שלישי :של הלולאה ואיפה שצריך להיות המספר הרץ נכתוב את המשתנה, התבנית הקבועה

int sum = 0;

for (int i=1; i<=10; i++)

{

sum = sum + i;

}

:הערה

אלא יכול לגשת ישר , לא חייב לעבור את שלושת השלבים האלה, מי שרואה את הפיתרון מראשל יהיו הכרחיים כדי להגיע "שלושת השלבים הנ, כאשר נגיע לדוגמאות מסובכות יותר, אמנם. לפיתרון

.לי לטעותלפתרון ב

Javaבשפת 3- ו 2חוברת ליחידות

[email protected] 24 - 050-8756869 – בדיחי לירון

)שימוש שני(לולאות –תרגילים

.100עד 1- כתוב תוכנית המדפיסה את המספרים מ )1 .בסדר הפוך 100עד 1- כתוב תוכנית המדפיסה את המספרים מ )2כתוב תוכנית הקולטת מספר שלם ומדפיסה בשורה אחת את כל המספרים העוקבים עד אותו )3

".גמרתי"ית תדפיס התוכנ, בסיום. מספר מופרדים עם פסיקים ביניהםכתוב . יותר מאשר בשבוע שעבר₪ 2אבא הבטיח לבנו דני שאם יתנהג יפה יתן לו כל שבוע )4

.תוכנית הקולטת את מספר השבועות שדני התנהג יפה ומחשבת כמה כסף יש לדני .100עד 1-בטווח מ 4- הדפס את כל המספרים המתחלקים ב )5ה החליטה לצאת במבצע ולתת לכל עובד מספר חברת קוקה קול. עובדים 26במפעל קוקה קולה )6

.בקבוקי קולה 20-ל 5אקראי בין :ומדפיסה לדוגמא 20-ל 5כתוב תוכנית המגרילה עבור כל עובד מספר בקבוקים אקראי בין

.בקבוקים 3קיבל 1עובד .בקבוקים 12קיבל 2עובד

...

7,8,9,10,13תרגילים 113עמוד –מבט לחלונות חלק א : תרגילים נוספים

37,39תרגילים 127עמוד –מבט לחלונות חלק א : תרגילים נוספים

.יש להדפיס את סכום כל המספרים, אלא שבמקום להדפיס את מכפלת כל המספרים, 39כמו תרגיל •

Javaבשפת 3- ו 2חוברת ליחידות

[email protected] 25 - 050-8756869 – בדיחי לירון

לולאה בתוך לולאה דוגמא

:כתוב תוכנית שמציגה את הפלט הבא* ** ***

:שהפקודות באופן מפורכתיבת : שלב ראשון1) System.out.print("*"); System.out.println(); 2) System.out.print("*"); System.out.print("*"); System.out.println(); 3) System.out.print("*"); System.out.print("*"); System.out.print("*"); System.out.println();

:ללולאהנכניס כל שלב 1) for (int i=0; i<1; i++) { System.out.print("*"); } System.out.println(); 2) for (int i=0; i<2; i++) { System.out.print("*"); } System.out.println(); 3) for (int i=0; i<3; i++) { System.out.print("*"); } System.out.println();

:נבדוק מהי התבנית הקבועה ומה טווח המספרים הרצים: ינשלב ש :התבנית הקבועה

for (int i=0; i< ; i++) { System.out.println("*"); } System.out.println();

.3עד 1- מ :טווח המספרים הרצים

Javaבשפת 3- ו 2חוברת ליחידות

[email protected] 26 - 050-8756869 – בדיחי לירון

בתוך הלולאה נכתוב את התבנית ). 3עד 1-מ(הרצים ניצור לולאה בדיוק בתחום המספרים : שלישישלב :ואיפה שצריך להיות המספר הרץ נכתוב את המשתנה של הלולאה, הקבועה

for (int j=1; j<=3; j++) {

for (int i=0; i<j ; i++) {

System.out.print("*"); } System.out.println(); }

:תרגיל דומה :כתוב תוכנית שתציג את הפלט

*** ** *

Javaבשפת 3- ו 2חוברת ליחידות

[email protected] 27 - 050-8756869 – בדיחי לירון

)מתקדמת(דוגמא

:כתוב תוכנית שתציג את הפלט*** ** *

:הבנת השאלה :נדרש לצייר בכל שורה רווחים ואחריהם כוכביות

:שלב ראשון

)עיין הערה( *פעמים 0בשורה הראשונה מציגים רווח :כ יורדים שורה"ואח, פעמים 3אחריו כוכבית

System.out.print("*"); System.out.print("*"); System.out.print("*"); System.out.println();

:ובלולאהfor (int j=0; j<0; j++) { System.out.print(" "); } for (int i=0; i<3; i++) { System.out.print("*"); } System.out.println();

אחריו , פעמים 1בשורה השניה מציגים רווח :כ יורדים שורה"ואח, פעמים 2בית כוכ

System.out.print(" "); System.out.print("*"); System.out.print("*"); System.out.println();

:ובלולאהfor (int j=0; j<1; j++) { System.out.print(" "); } for (int i=0; i<2; i++) { System.out.print("*"); } System.out.println();

אחריו , פעמים 2בשורה השלישית מציגים רווח :כ יורדים שורה"ואח, פעמים 1כוכבית

System.out.print(" "); System.out.print(" "); System.out.print("*"); System.out.println();

:ובלולאהfor (int j=0; j<2; j++) { System.out.print(" "); } for (int i=0; i<1; i++) { System.out.print("*"); } System.out.println();

.פעמים וכתבנו לשם כך לולאה שלעולם לא תתבצע 0בשורה הראשונה הצגנו רווח : הערה ?מדוע

נית של אז התב, אם לא היינו עושים לולאה עבור הרווחים. כדי שלכל השורות תהיה אותה תבניתהשורה הראשונה היתה שונה מהתבנית של שאר השורות ואז היינו צריכים להשאיר את התבנית של

.השורה הראשונה בפני עצמה ולא היינו יכולים לקבץ אותה עם התבניות של שאר השורות, ניתן להשאיר את התבנית של השורה הראשונה כמו שהיא, כלומר! זו לא שגיאה, אמנם זו גם דרך

.כ לקבץ את שאר התבניות"ואח

Javaבשפת 3- ו 2חוברת ליחידות

[email protected] 28 - 050-8756869 – בדיחי לירון

:שלב שני :התבנית הקבועה

for (int j=0; j< ; j++) { System.out.print(" "); } for (int i=0; i< ; i++) { System.out.print("*"); } System.out.println();

2עד 0-מספר עולה מ: העליון for-ב :טווח המספרים הרצים 1עד 3-מספר יורד מ: התחתון for-ב

: שלב שלישי

):הדרך הפשוטה(דרך ראשונה בתוך הלולאה ). התחתון for-העליון ושל ה for-של ה(ניצור לולאה בדיוק בתחום המספרים הרצים

:ואיפה שצריך להיות המספר הרץ נכתוב את המשתנה של הלולאה, נכתוב את התבנית הקבועה .xהעליון נגדיר את המשתנה for-ם המספרים הרצים של העבור תחו

.yהתחתון נגדיר את המשתנה for-עבור תחום המספרים הרצים של הint x; int y;

for(x=0 , y=3; x<=2 && y>=1; x++ , y--) {

for (int j=0; j<x; j++) { System.out.print(" "); }

for (int i=0; i<y; i++) { System.out.print("*"); } System.out.println();

} ):דרך טריקית(דרך שניה

for-של ה אוהתחתון for-של ה: נבחר תחום מספרים אחד(ניצור לולאה בדיוק בתחום המספרים הרצים ת המשתנה ואיפה שצריך להיות המספר הרץ נכתוב א, בתוך הלולאה נכתוב את התבנית הקבועה). העליון

).נתאים את תחום המספרים הרצים השני בעזרת תחום המספרים הרצים הראשון(של הלולאה .xנגדיר עבורו את המשתנה . העליון for-נבחר את תחום המספרים הרצים של ה

.1עד 3- כדי שהמספרים ירדו מ x-3נכתוב , התחתון for-עבור תחום המספרים הרצים של ה

for(int x=0; x<=2; x++) {

for (int j=0; j<x; j++) { System.out.print(" "); }

for (int i=0; i<3-x; i++) { System.out.print("*"); } System.out.println();

} :הסבר

x-3: התחתון for-הערכים של ה x: העליון for-הערכים של ה

3 = 0 – 3 0 בסיבוב הראשון של הלולאה

2 = 1 – 3 1 השני של הלולאהבסיבוב

1 = 2 – 3 2 בסיבוב השלישי של הלולאה

Javaבשפת 3- ו 2חוברת ליחידות

[email protected] 29 - 050-8756869 – בדיחי לירון

לולאה בתוך לולאה –תרגילים

!השתמש בשיטת שלושת השלבים). 10עד (כתוב תוכנית המדפיסה את לוח הכפל )1

Javaבשפת 3- ו 2חוברת ליחידות

[email protected] 30 - 050-8756869 – בדיחי לירון

פונקציות

.עשונניח שאתה מנהל ויש לך פועלים ואתה נותן להם פקודות והם מבצעים ומחזירים לך את מה ש: רקעאחת mainיש רק מנהל אחד לכן יש רק פונקציית . mainהפונקציה הראשית היא המנהל וקוראים לה

).אחרת נקבל שגיאה(במחלקה - כל הפונקציות חוץ מה. אלא על פונקציה אחרת, לעשות main-לא מוטלת על ה –כל פעולה חישובית

main מטילים על –חישובית שיש לעשות כל פעולה "). פעולה"פונקציה נקראת גם ( הפועליםהם .פונקציה אחרת

דוגמא

התוכנית . כתוב תוכנית שמקבלת מהמשתמש מספר ושולחת אותו לפונקציה שבודקת אם הוא ראשוני .הראשית תדפיס את התשובה

: פתרון .הפונקציה הראשית תקלוט מהמשתמש מספר )1 .אשוני ומקבלת את התשובההפונקציה הראשית תשלח את המספר לפונקציה שתבדוק אם הוא ר )2 .הפונקציה הראשית תחזיר למשתמש את התשובה )3

public static void main(String[] args)

{

1) Scanner input = new Scanner(System.in);

System.out.println("Enter number:");

int num = input.nextInt();

2) boolean isRishoni = checkRishoni(num);

3) if (isRishoni == true)

System.out.println("Number " + num + " Rishoni !!!");

else

System.out.println("Number " + num + " not Rishoni");

}

: הפונקציה שבודקת אם המספר ראשוני

.מקבלת מהפונקציה הראשית את המספר כפרמטר )1 .falseמחזירה לפונקציה הראשית –אם הוא מתחלק במספר אחר חוץ מעצמו : ה לולאה שבודקתמפעיל )2 .trueלכן מחזירה לפונקציה הראשית –סימן שהמספר לא מתחלק בשום מספר , אם נגמרה הלולאה )3

1) public static boolean checkRishoni(int number)

{

2) for (int i = 2; i < number; i++)

{

if (number % i == 0)

{ return false; }

}

3) return true;

}

שארית תוצאה7/2 = 3 7%2 = 1 7/3 = 2 7%3 = 1 7/4 = 1 7%4 = 3 7/5 = 1 7%5 = 2 7/6 = 1 7%6 = 1

שארית תוצאה6/2 = 3 6%2 = 0 6/3 = 2 6%3 = 0 6/4 = 1 6%4 = 2 6/5 = 1 6%5 = 1

.עדיין לא קיימת פונקציה כזו .עוד מעט ניצור אותה

!שים לבאין קשר בין הבלוק של הפונקציה

, הראשית לבלוק של הפונקציה הזאת !לכן יש להשתמש במשתנה החדש

Javaבשפת 3- ו 2חוברת ליחידות

[email protected] 31 - 050-8756869 – בדיחי לירון

המבנה של פונקציה :תבנית של פונקציה שעושה פעולה ולא מחזירה ערך

public static void אם יש –פרמטרים שמקבלת מהתוכנית ) שם הפונקציה ) { … }

:הפעלת הפונקציה מהתוכניתאם יש –פרמטרים לשליחה ) שם );

:לדוגמא intתבנית של פונקציה שעושה פעולה ומחזירה ערך

public static int אם יש –פרמטרים שמקבלת מהתוכנית ) שם הפונקציה ) { … return 5; }

:הפעלת הפונקציה מהתוכניתint number = אם יש –פרמטרים לשליחה ) שם );

:ההבדל בשלושה מקומות, םכפי שרואי

:מקום ראשוןvoid – עבור פונקציה שלא מחזירה כלום.

int – עבור פונקציה שמחזירה משתנה מסוגint.

:מקום שניreturn – על ידי הפקודה , להחזיר את הערך חייבים, בפונקציה שמחזירה ערךreturn .

:מקום שלישי .כ סוגריים"יבת שמה ואחעל ידי כת –הפעלת פונקציה שלא מחזירה כלום

.צריך להעביר למשתנה את הערך שהפונקציה מחזירה –הפעלת פונקציה שמחזירה ערך

תיעוד .כדי שיבין את התוכנית מהר, תיעוד זה הוספת הסברים למי שיקרא את התוכנית שלכם

.בתוכניות גדולות התיעוד הוא הכרחי ?כיצד כותבים את התיעוד

.כותבים את התיעוד ואחריה// מוסיפים הערה ).גם אם זה נראה מיותר(נכתוב תיעוד בו כתוב מה הפונקציה עושה , לפני פונקציה

.כדאי גם כן לכתוב תיעוד בו כתוב מה הפעולה החישובית עושה, )בפונקציה או בתוכנית(לפני פעולה חישובית :דוגמא

// this function checking if number is rishoni

public static boolean CheckRishoni(int number)

{

for (int i = 2; i < number; i++)

{

// if number divide in any number - the number is not rishoni

if (number % i == 0)

{ return false; }

}

// if number didn't divide in any number - the number is rishoni

return true;

}

בסוף השורה " ;"אין –שים לב

בסוף השורה " ;"אין –שים לב

Javaבשפת 3- ו 2חוברת ליחידות

[email protected] 32 - 050-8756869 – בדיחי לירון

]הוסף תיעוד[ פונקציות –תרגילים

כתוב תוכנית שקולטת שני מספרים שלמים ושולחת אותם לפונקציה שמחזירה את המספר )1 ).לך בדיוק לפי השלבים בדוגמא למעלה(הגדול מביניהם

).Main-זוהי פונקציה שלא מחזירה ערך ל, שים לב(מספר ומדפיסה אותו שמקבלתכתוב פונקציה )2 .מספר ומדפיסה אותו הקולטתכתוב פונקציה )3תדפיס את המספר התוכנית. 10שקולטת מספר ושולחת אותו לפונקציה שמוסיפה לו תוכניתכתוב )4

.החדשהתוכנית , אם הוא זוגי. כתוב תוכנית שקולטת מספר ושולחת אותו לפונקציה שבודקת אם הוא זוגי )5

".לא זוגי"אחרת תדפיס , "זוגי"תדפיס שיתהראעד 1- היא מדפיסה את כל המספרים הזוגיים בטווח מ, אם המספר זוגי. לפניך תוכנית שקולטת מספר )6

.עד אותו המספר 1- זוגיים בטווח מ-היא מדפיסה את כל המספרים האי, אם הוא אי זוגי. אותו המספר :השלם את הפונקציות החסרות

Scanner input = new Scanner(System.in);

System.out.println("Enter number:");

int num = input.nextInt(); if (isZugi(num))

{

printZugiim(num);

}

else

{

printEZugiim(num);

}

ושולחת אותו לפונקציה שמדפיסה את כל המספרים 10עד 1-כתוב תוכנית הקולטת מספר מ )7 .100עד 1-מספר בטווח המספרים משמתחלקים באותו

כל פעם שנרצה , כלומר. ()System.out.printlnשתחליף את הפקודה displayכתוב פונקציה בשם )8 . display("hello"): נכתוב, להדפיס על הלוח משהו

:כתוב תוכנית שקולטת אורך ורוחב של מלבן ושולחת את הפרמטרים לפונקציות שונות )9 .ב ותדפיס את שטח המלבן ואת היקפותחש –פונקציה ראשונה

.תצייר את המלבן המתקבל באמצעות כוכביות –פונקציה שניה 3-מהקלט וקטן ברוחבו ב 2תחשב שטח והיקף של מלבן הגדול באורכו פי –פונקציה שלישית

.השתמש בפונקציות מסעיפים קודמים. תצייר אותו, וכן. מהקלטπr(ושטחו ) 2πr(ומציגה כפלט את היקפו , rוס כתוב פונקציה המקבלת כקלט אורך רדי )10

של מעגל ) 2 .rשרדיוסו

Javaבשפת 3- ו 2חוברת ליחידות

[email protected] 33 - 050-8756869 – בדיחי לירון

switch .מעיד על תכנון לקוי, )if(פתרון שיש בו שימוש מרובה במשפטי תנאי

.switch-נעדיף להשתמש במשפט ה, כאשר נזהה שימוש מרובה במשפטי תנאי

switch-מבנה הswitch (משתנה) { case אפשרות ראשונה: … break; case אפשרות שניה: … break; case אפשרות שלישית: … break; default: … break; }

דוגמא ראשונה

.num2-ו num1בשם קלוט שני מספרים לתוך משתנים .choiseקלוט מספר נוסף מהמשתמש לתוך משתנה בשם

num1 + num2הדפס – 1שווה choiseאם num1 – num2הדפס – 2שווה choiseאם num1 * num2הדפס – 3שווה choiseאם num1 / num2הדפס – 4שווה choiseאם

".לא בחרת מספר חוקי"דפס ה –) לא שווה לאף אחד מהמספרים choiseאם (אחרת פתרון

Scanner input = new Scanner(System.in);

System.out.println("Enter two numbers:");

int num1 = input.nextInt();

int num2 = input.nextInt();

System.out.println("Enter your choise:");

int choise = input.nextInt();

switch (choise)

{

case 1:

System.out.println(num1 + num2);

break;

case 2:

System.out.println(num1 - num2);

break;

case 3:

System.out.println(num1 * num2);

break;

case 4:

System.out.println(num1 / num2);

break;

default:

System.out.println("בחרת מספר לא חוקי");

break;

}

Javaבשפת 3- ו 2חוברת ליחידות

[email protected] 34 - 050-8756869 – בדיחי לירון

דוגמא שניה

:כתוב פונקציה שמקבלת מהתוכנית מספר שלם ומחזירה תו בהתאם למספר 'b'התו הפונקציה תחזיר את, 1שווה numאם 'g'הפונקציה תחזיר את התו , 4שווה numאם 'r'הפונקציה תחזיר את התו , 9שווה numאם

'0'הפונקציה תחזיר , )ל"לא שווה לאף אחד מהמספרים הנ num-במקרה ו(אחרת פתרון

public static char function(int num)

{

switch (num)

{

case 1: return 'b';

case 4: return 'g';

case 9: return 'r';

default: return '0';

}

} .switch-כי שתי הפקודות מבטאות יציאה מה, breakבאה במקום הפקודה returnהפקודה

תרגילים

.קלוט תו )1 ".?how are you"הדפס 'u'אם התו שווה ."thank you"הדפס 't'אם התו שווה

."hello"הדפס 'h'ווה אם התו ש "by by"הדפס , אחרת

הפונקציה תקלוט . numכתוב פונקציה שמקבלת מהתוכנית מספר שלם לתוך משתנה בשם )2 .choiseמספר נוסף לתוך משתנה בשם

numהפונקציה תחזיר את, 1שווה choiseאם num + numהפונקציה תחזיר את , 2שווה chosieאם num + num + numציה תחזיר את הפונק, 3שווה choiseאם

.0תחזיר , אחרת

Javaבשפת 3- ו 2חוברת ליחידות

[email protected] 35 - 050-8756869 – בדיחי לירון

מערך חד מימדי ?מהו מערך

.מערך זהו אוסף של משתנים מאותו טיפוס :מספרים שלמים 5שמכיל אוסף של aמערך בשם , לדוגמא

אפשר לדמות מערך לארון שיש בו תאים

.ובכל תא נכנס מספר אחד .בכל התאים 0יש בו רק . הארון ריק, בהתחלה

;a[0] = 5: הכנסת מספר לתא

a[3] = 2;

:התוצאה

אינקס המערך

.מספר התא של המערך= אינדקס ! 0- התא הראשון במערך תמיד מתחיל מ) מספר(אינדקס

.1אינדקס התא השני הוא :שאלה

?איזה אינדקס יהיה לתא הרביעי :תשובה

.נכון, 3

Javaבשפת 3- ו 2חוברת ליחידות

[email protected] 36 - 050-8756869 – בדיחי לירון

כרוןאיך המערך נשמר בז

:ישנם שני סוגי זכרונות שהתוכנית שלנו משתמשת בהם במהלך תוכנית .קטן שנקרא מחסנית והוא עובד ישירות עם המעבד זכרון

.זכרון גדול שנקרא ערימה ).מעבדה עובד ישירות עםכי הוא (הזכרון הקטן מהיר יותר מהזכרון הגדול

?מדוע. הכל מתבצע בזכרון הקטן ;double d = 9.8או ;int i = 5כאשר מבצעים

:לו" מחכה"כי הזכרון הקטן יודע כמה ).ולא יכול להיות יותר(בייטים 4הוא intהגודל של ).ולא יכול להיות יותר(בייטים 8זה doubleהגודל של

100תאים או עם 5המשתמש יכול להחליט להגדיר מערך עם . הגודל לא קבוע, כאשר מגדירים מערך .לכן המערך נשמר בזכרון הגדול. תאים

:כללכ .נשמר בזכרון הגדול) אלא המשתמש קובע אותו(משתנה שהגודל שלו לא קבוע

.משתנה שהגודל שלו קבוע נשמר בזכרון הקטן

?עצמו aמה נשמר בתוך המשתנה ).520(נשמרת הכתובת של המערך aבתוך המשתנה

גם בתוך המחשב יש לכל . 8נחל לכיש , לדוגמא. גרלכל אדם יש מקום בו הוא ? מה זה כתובת: הערה .והכתובת הזאת היא מספר, משתנה כתובת בו הוא נמצא

לכן נמצא . והמערך עצמו נמצא במקום אחר,נשמרת הכתובת של המערך aבתוך המשתנה , לסיכום :ומסומן כך, )מפנה למקום אחר, כלומר" (משתנה הפניה"בהרבה ספרים שמשתנה מערך נקרא

.משתנה שמכיל בתוכו כתובת למקום בזיכרון שמכיל את מערך המספרים: משתנה הפניה

.ההבנה מהו מערך ואיך הוא נשמר בזכרון היתה חשובה לפני שנראה איך משתמשים בו

Javaבשפת 3- ו 2חוברת ליחידות

[email protected] 37 - 050-8756869 – בדיחי לירון

מערךהגדיר אפשרויות ל 2 :אפשרות ראשונה

יצירת משתנה מטיפוס מערך) 1int[] a;

".תאים" 3יצירת מערך בעל . היו למערךי" תאים"מגדירים כמה ) 2a = new int[3];

?תאים 3לא היה מובן בלעדיה שהמערך מכיל ? newמדוע מופיעה המילה : שאלת הבנה .המערךתאים של 3 עבור בזכרון הגדולמקום חדש תקצה לי : newהכוונה במילה : תשובה

):שלו" תאים"והגדרת ה יצירת משתנה מטיפוס מערך(אפשר לקצר את שני השלבים ביחד

int[] a = new int[3]; :של המערך" תאים"הכנסת איברים ל

a[0] = 5; a[1] = 2; a[2] = 9;

:אפשרות שניה :ניתן להגדיר את המערך כך, כאשר האיברים ידועים מראש

int[] a = {5,2,9};

כללנקבל שגיאה , 3במערך בגודל 4- ר האם ננסה לפנות לאיב, לדוגמא. לא ניתן לחרוג מגבולותיו של המערך

".חריגה מגבולות המערך"את ההודעה ) באנגלית(שמציגה

גודל המערך :נתון המערך

int[] a = new int[3]; .3גודל המערך הוא

:ניתן לקבל את גודל המערך כךint g = a.length;

.3שווה g, כלומר. gקיבלנו את גודל המערך לתוך המשתנה

?מה נרויח, a.Length-ל 3את כל המקומות בתוכנית בהם כתוב אם נחליף נצטרך 3בכל מקום בתוכנית שכתבנו . תאים 6-תאים ל 3נניח שנרצה לשנות את גודל המערך במקום

.לא נצטרך לשנות כלום, a.Lengthאבל אם כתבנו בתוכנית . 6-לשנות ל

שאלה .בהתחלה כל התאים ריקים, כאשר מגדירים מערך

.0בכל תא יהיה , (int)אם המערך מסוג מספרים שלמים ?מה יהיה בכל תא, )string(אם המערך מסוג מחרוזות

תשובה "".בכל תא תהיה מחרוזת ריקה

����

����

Javaבשפת 3- ו 2חוברת ליחידות

[email protected] 38 - 050-8756869 – בדיחי לירון

דוגמא

5,3,7,8,6,5,9,0,6,3: הגדר מערך והכנס אליו את המספרים .בשורה אחת הצג את המערך

:פתרון .בניית המערך והכנסת מספרים לתוכו

int[] a = {5,3,7,8,6,5,9,0,6,3}; :הצגת המערך :כתיבת כמה פקודות במפורש: שלב ראשון

System.out.print(a[0] + " "); System.out.print(a[1] + " "); System.out.print(a[2] + " "); ... System.out.print(a[9] + " ");

:הרציםנבדוק מהי התבנית הקבועה ומה טווח המספרים : שלב שני ;System.out.println(a[ ]): התבנית הקבועה

.9עד 0- מ :טווח המספרים הרצים :שלב שלישי

, בתוך הלולאה נכתוב את התבנית הקבועה). 9עד 0-מ(ניצור לולאה בדיוק בתחום המספרים הרצים :ואיפה שצריך להיות המספר הרץ נכתוב את המשתנה של הלולאה

for(int i=0; i<10; i++) { System.out.print(a[i] + " "); }

i<100נצטרך לכתוב i<10במקום לכתוב , 100-אם נשנה את הגודל של המערך ל

.ואז לא נצטרך לשנות כלום i<a.lengthאפשר לכתוב

Javaבשפת 3- ו 2חוברת ליחידות

[email protected] 39 - 050-8756869 – בדיחי לירון

מערך חד מימדי –תרגילים

.מספרים לתוך מערך והצג אותם 10קלוט )1

הצג את הסכום ). 12כולל ( 12-ל 5רים אקראיים בין הכנס לתוכו מספ. 10הגדר מערך בגודל )2 .שלהם

4,7,3,1,5,7,2,9: והכנס אליו את האיברים aהגדר מערך בשם )3 .aבגודל של המערך bצור מערך ריק חדש בשם

.בסדר הפוך aאת האיברים של המערך bהכנס למערך b :9,2,7,5,1,3,7,4תוצאת המערך

4,7,3,1,5,7,2,9: האיבריםוהכנס אליו את aהגדר מערך בשם )4 .bצור מערך ריק חדש בשם

,aהאיברים הימניים של המערך 4את forהכנס בלולאת , bלארבעת המקומות השמאליים של המערך .aהאיברים השמאליים של המערך 4את forהכנס בלולאת , bולארבעת המקומות הימניים של המערך

b: 5,7,2,9,4,7,3,1תוצאת המערך

.0,1,2,3,4,5,6,7,8,9: מספרים המערך והכנס בו עשר הגדר )5 .יעבור לצד שמאל –האיבר הימני ביותר : הזז את כל האיברים מקום אחד ימינה

!אין להשתמש במערך עזר 9,0,1,2,3,4,5,6,7,8: הפלט

).אין צורך לבדוק את תקינות הקלט(אותיות מהמשתמש 8קלוט )6 .ה ולהציג למשתמש את התוצאהצריך לספור כמה פעמים כל אות מופיע

:לפי הדרך של שלושת השלבים. על ידי לולאה בתוך לולאה: פתרון פשוט .כתיבת כמה פקודות במפורש: שלב ראשון

.נבדוק מהי התבנית הקבועה ומה טווח המספרים הרצים: שלב שניבתוך הלולאה נכתוב את . ניצור לולאה בדיוק בתחום המספרים הרצים :שלב שלישי

.ואיפה שצריך להיות המספר הרץ נכתוב את המשתנה של הלולאה, תבנית הקבועהה

.תוצג בפלט פעמיים, אות שמופיעה פעמיים: בפיתרון הפשוט החיסרון h,e,l,l,o,w,o,r: עבור התווים

:הפלט

Scann

er

input = new

Scann

er(Sy

stem.

Javaבשפת 3- ו 2חוברת ליחידות

[email protected] 40 - 050-8756869 – בדיחי לירון

)להעשרה בלבד( פתרון מתקדם .המשתמש הכניס אותיות קטנות ולא גדולות: הנחה :תכנון

:הקוד

public static void main(String[] args)

{

System.out.println((int)('a'));

int size = 'z'-'a'+1; // =26

int[] letters = new int[size];

Scanner in = new Scanner(System.in);

for(int i=0; i<10; i++)

{

char c = in.next().charAt(0);

letters[c-'a']++;

}

for (int i=0; i<size; i++)

{

if (letters[i]>0)

System.out.println((char)(i+'a')+"-->"+letters[i]);

}

}

.תוצג בפלט רק פעם אחת, אות שמופיעה פעמיים :יתרוןה h,e,l,l,o,w,o,r: עבור התווים

:הפלט

Javaבשפת 3- ו 2חוברת ליחידות

[email protected] 41 - 050-8756869 – בדיחי לירון

בסיס –וים מחרוזות ותו

String – סידרה כלשהי של תווים –מחרוזת. char – תו.

(" ")מחרוזת כותבים עם מרכאות

)' '(תו כותבים עם גרשיים

:דוגמאString str = "HAPPY BIRTHDAY "; מחרוזת בשםstr מילים שאחרי כל אחת 2- המורכבת מ

.מהן מופיע רווחchar c = 'Y' )בשגיאה לכתו :char c = "Y" (

charAt(index)אפשר לפנות לכל תו בה באמצעות הפונקציה , תוויםכיוון שמחרוזת היא סידרה של

:דוגמא

str.chatAt(4) � 'Y' str.charAt(13) � 'Y' str.charAt(5) � ' ' str.charAt(14) � ' '

דוגמא

.תהדפס את המחרוז. תווים לתוך מחרוזת 5קלוט מהמשתמש פתרון

:נגדיר מחרוזת ריקהString str = "";

:נוסיף למחרוזת, כל תו שהמשתמש יכניסScanner input = new Scanner(System.in);

for (int i = 0; i < 5; i++)

{

System.out.println("Enter char");

char c = input.next().charAt(0);

str = str + c;

}

:המחרוזת נדפיס אתSystem.out.println(str);

מחרוזות –תרגילים

.והדפס את התווים עם רווח בין כל תו לתו קלוט מחרוזת )1 ".מופיעה aהאות "הדפס , אם כן. aבדוק אם מופיעה בתוך המחרוזת האות . קלוט מחרוזת )2בסדר והכנס אליה את התווים bצור מחרוזת חדשה בשם ". happy birthday"נתונה מחרוזת )3

. הפוך. המר את המערך למחרוזת, h,e,l,l,o, ,w,o,r,d: שיכיל את התווים charצור מערך מטיפוס )4

.הדפס את המחרוזת

Javaבשפת 3- ו 2חוברת ליחידות

[email protected] 42 - 050-8756869 – בדיחי לירון

מערך דו מימדי

?מהו מערך דו מימדי .מימדי זהו אוסף של משתנים מאותו טיפוס חדמערך .מאותו טיפוסמימדי זה אוסף של מערכים שכל אחד מהם הוא אוסף של משתנים דומערך

אפשר לדמות מערך לארון שיש בו תאים

.ובכל תא יש אוסף של תאים .בכל התאים 0יש בו רק . הארון ריק, בהתחלה

;a[0][1] = 5: הכנסת מספר לתא

a[3][2] = 2;

:התוצאה

דו מימדי מערךהגדיר מאפשרויות ל 3 :אפשרות ראשונה

דו מימדי ערךיצירת משתנה מטיפוס מ) 1int[][] a;

).תאים 4תאים ובכל תא 3( x 4 3יצירת מערך בעל . יהיו למערך" תאים"מגדירים כמה ) 2a = new int[3][4];

):שלו" תאים"יצירת משתנה מטיפוס מערך והגדרת ה(אפשר לקצר את שני השלבים ביחד int[][] a = new int[3][4];

:המערך של" תאים"הכנסת איברים ל

a[0][0] = 3; a[0][1] = 2; a[0][2] = 9; a[0][3] = 8;

����

Javaבשפת 3- ו 2חוברת ליחידות

[email protected] 43 - 050-8756869 – בדיחי לירון

:אפשרות שניה :כאשר האיברים ידועים מראש

:ניתן להגדיר את המערך כךint[][] a ={ new int[]{ 1, 2, 3, 4 },

new int[]{ 5, 6, 7, 8 },

new int[]{ 9, 0, 1, 2 } };

:שלישית אפשרות .מערך עם גודל תאים שונה בין תא לתא

לכל תא יכול להיות מספר תאים , כלומר. אין הכרח שבכל תא יהיו אותם מספר תאים, בארון עם תאים :תאים 4תאים ובתא השלישי 3בתא השני , תאים 2יכול להיות ארון שבתא הראשון יש . אחר

:הגדרת המערך

int[][] a;

a = new int[3][];

a[0] = new int[2];

a[1] = new int[3];

a[2] = new int[4];

גודל המערך : ל"הגודל של המערך הנ

a.length כי המערך , 3שווהa תאים 3הוא מערך חד מימדי עם. a[0].length כי המערך , 2שווהa[0] תאים 2הוא מערך חד מימדי עם. a[1].length כי המערך , 3שווהa[1] תאים 3חד מימדי עם הוא מערך. a[2].length כי המערך , 4שווהa[2] תאים 4הוא מערך חד מימדי עם.

����

����

Javaבשפת 3- ו 2חוברת ליחידות

[email protected] 44 - 050-8756869 – בדיחי לירון

דוגמא

.6x4צור מערך דו מימדי בעל המימדים .30-ל 10קלוט לתוכו מספרים אקראיים בין

.הדפס את המערך .חשב את ההיקף והדפס את התוצאה

:פתרון

"שיטת שלושת השלבים"תזכורת .לכתוב במפורש כמה פקודות :שלב ראשון

.לזהות מהי התבנית הקבועה ומה טווח המספרים הרצים: שלב שני .לבנות את הלולאה בהתאם: שלב שלישי

. נחלק את הפיתרון לחלקים לפי השאלה

4x6בניית מערך דו מימדי בגודל )1

int[][] array = new int[4][6]; מספרים אקראייםמילוי המערך ב )2

.30- ל 10מערך במספרים אקראיים בין יש למלא את ה :דרך הפתרון .לחשב מהו הביטוי לחישוב המספרים האקראיים )1יש להשתמש בשיטת שלושת , שים לב. דרך הפיתרון היא לפי שיטת שלושת השלבים )2

פעם שניה כדי ליצור לולאה אחת . פעם ראשונה כדי ליצור לולאות. השלבים פעמיים .עבור כל הלולאות

הדפסת המערך )3

).גם פה צריך להשתמש בשיטת שלושת השלבים פעמיים(רון היא לפי שיטת שלושת השלבים דרך הפית חישוב ההיקף )4

סיכום השורה הראשונה

):למרות שלא צריך, כתבתי את כולן(כתיבת כמה פקודות באופן מפורש : שלב ראשוןins sum=0; sum = sum + a[0][0]; sum = sum + a[0][1]; sum = sum + a[0][2]; sum = sum + a[0][3]; sum = sum + a[0][4]; sum = sum + a[0][5];

:שלב שני [ ]sum = sum + a[0]: התבנית הקבועה

5עד 0- מ: טווח המספרים הרצים :כתיבת הלולאה שמסכמת את השורה הראשונה :שלב שלישי

Javaבשפת 3- ו 2חוברת ליחידות

[email protected] 45 - 050-8756869 – בדיחי לירון

int sum=0; for (int i=0; i<6 i++) sum = sum + a[0][i];

העמודה האחרונהסיכום

:כתיבת כמה פקודות באופן מפורש: שלב ראשוןsum = sum + a[0][5]; sum = sum + a[1][5]; sum = sum + a[2][5]; sum = sum + a[3][5];

:שלב שני sum = sum + a[ ][5]: התבנית הקבועה

3עד 0- מ: טווח המספרים הרצים

:מסכמת את העמודה האחרונהכתיבת הלולאה ש :שלב שלישיfor (int i=0; i<4; i++) sum = sum + a[i][5];

.ניצור לולאה עבור השורה האחרונה ועבור העמודה הראשונה, באותו אופן

כי , הפינות בצורה ידנית 4צריך להפחית את , הלולאות שמסכמות את ההיקף 4אחרי , שים לב

:חישבנו אותם פעמייםsum = sum – array[0][0]; sum = sum – array[0][5]; sum = sum – array[3][0]; sum = sum – array[3][5];