פוסט: science computer c++ project

פקודת WHILE ו- WHILE DO.

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

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

תוכנית לדוגמא:

#include
#include
#include
#include
void main (void)
{
int a[10],i;
i=1;
while(i<=10)
{
cout<<<“Enter Number “<<<” Out Of 10:… “;
cin>>a[i];
i++;
}
i=10;
while (i>=1)
{
cout<<
i–;
}
}

הפלט על גבי המסך:

Enter 1 Number Out Of 10:… 1000
Enter 2 Number Out Of 10:… 2000
Enter 3 Number Out Of 10:… 3000
Enter 4 Number Out Of 10:… 4000
Enter 5 Number Out Of 10:… 5000
Enter 6 Number Out Of 10:… 6000
Enter 7 Number Out Of 10:… 7000
Enter 8 Number Out Of 10:… 8000
Enter 9 Number Out Of 10:… 9000
Enter 10 Number Out Of 10:… 10000

10000
9000
8000
7000
6000
5000
4000
3000
2000
1000

תכליתה של תוכנית זו לקלוט עשרה מספרים ולהדפיס אותם בסדר הפוך ממה שהם נקלטו על – ידי המשתמש. תוכנית זו מושתת על לולאת WHILE שבעזרתה המחשב קולט את המספרים ומדפיס אותם בסדר הפוך.
בתחילתה של תוכנית זו ישנה הצהרה של מערך בן עשרה תאים, ופרמטר בשם I. int a[10],i;
לאחר מכן ישנה הגדרה של הערך הראשוני של I, שהוא 1. I=1;
בפקודת הלולאה ישנו תנאי שאם I<10, הפקודות שבתוך הלולאה יתבצעו. while(i<10)
תכליתם של הפקודות שבתוך הלולאה להדפיס על גבי המסך הודאה שתורה למשתמש לכתוב מספר או קבוצת מספרים, ומונה שמוסיף לערך של I 1 בכל פעם שמתבצעת הלולאה.
לאחר קליטתם של המספרים שכתב המשתמש באה שוב פקודת WHILE להדפיס את המספרים בסדר הפוך ממה שנקלטו.

פקודת DO WHILE.

פקודת DO WHILE היא לולאה, שנועדה לבצע את המשפטים שב”בלוק” של ה-DO מבלי להיות תלוי בתנאי שבלולאה, אבל אם התנאי שבלולאה מתקיים המחשב מבצע את הפקודות שב-DO יחד עם הפקודות שבלולאה. מבנה של הפקדות מתחלק לשני חלקים:
1. החלק של ה-WHILE שנזכר בעמוד הקודם, וזה הלולאה עם התנאי.
2. החלק של ה-DO שנכתב לפני ה WHILE.
DO
{
STATEMENT
{
WHILE (CONDITION)
{
STATEMENT
}

פקודת CASE.

על-מנת לבין את פקודת CASE טוב יותר, נרחיב קודם על IF ELSE.
משפט IF ELSE אומר: אם התנאי מתקיים, אזי הפקודות שבהצהרה הראשונה מבוצעות והפקודות שבהצהרה השניה לא יבוצעו. כאשר התנאי לא יתקיים, הפקודה שבהצהרה הראשונה לא יתקיימו, והפקודות שבהצהרה השניה יתקיימו.
מבנה הפקודה:
if(condition) else ;

תוכנית לדוגמא:

#include
#include
#include
#include
void main (void)
{
int a,b;
cout<<<“Enter Two Numbers:…”;
cin>>a>>b;
if (a*b>0)
{
cout<<<“The Product Of “<<<” Is Bigger Than 0″;
}
else if (a*b<0)
{
cout<<<“The Product Of “<<<” Is Smaller Than 0″;
}
}

הפלט על גבי המסך:

Enter Two Numbars:… 5 11
The Product Of 5*11 Is bigger Than 0

Enter Two Numbers: -313 34
The Product Of 34*(-313) Is Smaller Than 0

תכליתה של תוכנית זו לקלוט שני מספרים, ואם המכפלה ביניהם גדולה מאפס או קטנה מאפס, להדפיס הודאה מתאימה על גבי המסך. תוכנית זו מושתת על משפט IF ELSE.
בתחילתה של תוכנית זו ישנה הצהרה של שני משתנים A ו- B. int a,b;
לאחר מכן באה הודאה על גבי המסך להורות למשתמש לכתוב שני מספרים.
כאשר המחשב מגיע לפקודת IF הוא בודק אם התנאי A*B>0, ואם תנאי זה מתקיים, המחשב יבצע את הפקודות שב”בלוק”. כאשר תנאי זה אינו מתקיים, ידלג המחשב על כל ה”בלוק” ויעבור לאפשרות השניה ELSE ויבצע את הפקודות שכתובות בה. (כאשר IF מתקיים הפקודות בתוך ELSE לא יתקיימו וההפך).

משפט BREAK.

משמעותו של משפט זה “הפסק”, כאשר במהלך התוכנית המחשב מגיע למשפט זה הוא מפסיק את להריץ את כל התוכנית, ולרוב נמצא להפסקת לולאה, או משפט הבקרה שבו הוא נמצא.
מבנה המשפט: break;

משפט SWITCH.

משפט SWITCH הוא בעצם המפעיל של לולאת CASE, כאשר מנגנון נותן אפשרות עבודה קלה, נוחה ויותר מאורגנת מאשר משפט IF ELSE, מטרת כתיבתם דומה, אך דרך הכתיבה שלהם שונה.
מבנה המשפט:
switch()
}
statements; :<קבוע>case
break;
statements; :<קבוע>case
break;
statements; :<קבוע>case
break;
statements; :<קבוע>case
break;
{

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

#include
#include
#include
void main(void)
{
int a;
cout<<<“Enter Number:…”;
cin>>a;
switch(a)
{
case 1:cout<<<“Shlomi”;
break;
case 2:cout<<<“Eli”;
}
}

הפלט על גבי המסך:

Enter Number:… 1
Shlomi

Enter Number:… 2
Eli

תכליתה של תוכנית זו לקלוט מספר, וכאשר המספר שנקלט שווה ל 1-, השם שלומי באנגלית יודפס על גבי המסך, ואם אותו מספר יהיה שווה לשניים יודפס השם אלי באנגלית על גבי המסך.
בהתחלתה לתה של תוכנית זו ישנה הצהרה על משתנה I. int I;
לאחר מכן באה פקודה המורה למחשב להדפיס על גבי המסך הודאת בקשה למשתמש שיכתוב מספר.
כאשר המשתמש יקיש את המספר ‘1’ המחשב יעבור למקרה הראשון, (1CASE ), וידפיס את השם שלומי יודפס באנגלית על גבי המסך. הפקודה BREAK אומרת למחשב לצאת מן התוכנית, שכן ללא פקודה זו המחשב היה עובר מייד למקרה השני (2 CASE) ומבצע אותו. כאשר המשתמש יקיש את המספר ‘2’ הפקודות שב- 2 CASE יבוצעו, והשם אלי יודפס על גבי המסך באנגלית. SWITCH הוא פרמטר הבקרה שלפי ערכו המחשב יודע לאיזה מקרה ללכת. (CASE).

פקודת IF

פקודת IF זוהי פקודת תנאי, אשר שימושה נרחבים ב – ++C, ובאה עם שילוב של פקודות נוספות, לדוגמא פקודת FOR שעליה נרחיב בהמשך.
מבנה הפקודה: (תנאי)IF
}
פקודות שרוצים לבצע כאשר התנאי מתקיים.
{

להלן תכנית לדוגמא:

#include
#include
#include
#include
#include
void main (void)
{
int m;
cout<<<“Enter Number:…”;
cin>>m;
if (m<0)
{
cout<<<“The Number “<<<” Is Bigger Than 0″;
}
}

תכלית התוכנית:

לקלוט מספר, ואם אותו המספר שקלטנו גדול מ- 0 להדפיסו על גבי המסך, ואם הוא קטן מ- 0 לא להדפיסו.

הסבר התוכנית:

בתחילתה של תוכנית פשוטה זו, ישנה הצהרת משתנה M מסוג INT: int m;.
לאחר מיכן באה פקודת COUT שמורה למחשב להדפיס הודאות על גבי המסך:
cout<<<“Enter Number:…”;
ENDL אומר למחשב לרדת שורה, ומה שבגרשיים המחשב יודפיס על גבי המסך.
CIN אומר למחשב להכניס את המספר שנכתב על ידי המשתמש לתוך המשתנה M: cin>>m;.
החלק העיקרי בתוכנית זהו התנאי, הדרוש לשם מיון המספר שנקלט לתוך המשתנה M.
אם המספר שנקלט ל- M גדול מ- 0, התנאי יתקיים ואז תתבצע הפקודה שבתוך הסוגריים המסולסלות, ואם M קטן מ- 0, התנאי לא יתקיים ואז המחשב ידלג על הפקודה שבתוך הסוגריים המסולסלות.

הפלט על גבי המסך:

Enter Number:… 6
The Number 6 Is Bigger Than 0
1

אזורי חיוג.

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

#include
#include
#include
#include
void main(void)
{
int x;
cout<<<“Insert Area Code:…”;
cin>>x;
if(x==03)
{
cout<<<<” Is Area Code Of Tel Aviv”;
}
if(x==04)
{
cout<<<<” Is Area Code Of Haifa”;
}
if(x==06)
{
cout<<<<” Is Area Code Of Kiriat Shmona”;
if(x==07)
{
cout<<<<” Is Area Code Of Be’er Sheva”;
}
if(x==02)
{
cout<<<<” Is Area Code Of Jerusalem, The Capital City”;
}
}

הפלט על גבי המסך:

Insert Area Code:… 03
03 Is Area Code Of Tel Aviv.

Insert Area code:… 02
02 Is Area Code Of Jerusalem The Capital City

Insert Area Code:… 04
04 Is Area Code Of Haifa

Insert Area Code:… 06
06 Is Area Code Of Kiriat Shmona

Insert Area Code:… 07
07 Is Area Code Of Be’er Sheva

שורש או מכפלה.

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

#include
#include
#include
#include
void main(void)
{
int a,b,c;
float root1,root2,product;
cout<<<“Enter Numbers:…”;
cin>>b>>c;
cout<<<“For Root Press 1″<<<“For ‘*’ Press ‘2’”;
cin>>a;
switch(a)
{
case 1:
if(b>=0)
{
root1=sqrt(b);
cout<<<“The Root Of “<<<” Is: “<
}
if (c>=0)
{
root2=sqrt(c);
cout<<<“The Root Of “<<<” Is: “<
}
break;
case 2:product=b*c;
cout<<<“The Product Of “<<<” And “<<<” Is “<
}
}

הפלט על גבי המסך:

Enter Numbers:… 144 256
For Root Press ‘1’ For ‘*’ Press ‘2’:… 1
The Root Of 144 Is 12
The Root Of 256 Is 16

For Root Press ‘1’ For ‘*’ Press ‘2’:… 2
The Product Of 144*256 Is:… 36864

ממוצע משוכלל.

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

#include
#include
#include
#include
#include
void main (void)
{
char a[8],b[8],c[8],m[8];
int i,g,t[4];
float h[4];
cout<<<“Enter The Names Of The Students:…”<<<“1.”;
cin.getline(a, 8);
cout<<<“2.”;
cin.getline(b, 8);
cout<<<“3.”;
cin.getline(c, 8);
cout<<<“4.”;
cin.getline(m, 8);
clrscr();
cout<<<“The greads of “<<<” are:…”;
g=1;
for (i=1;i<=4;i++)
{
cout<<<“Enter “<<<” greade out of 4 “;
cin>>t[i];
g=g+1;
}
h[1]=(t[1]+t[2]+t[3]+t[4])/4;
clrscr();
cout<<<“The greads of “<<<” are:…”;
g=1;
for (i=1;i<=4;i++)
{
cout<<<“Enter “<<<” greade out of 4 “;
cin>>t[i];
g=g+1;
}
h[2]=(t[1]+t[2]+t[3]+t[4])/4;
clrscr();
cout<<<“The greads of “<<<” are:…”;
g=1;
for (i=1;i<=4;i++)
{
cout<<<“Enter “<<<” greade out of 4 “;
cin>>t[i];
g=g+1;
}
h[3]=(t[1]+t[2]+t[3]+t[4])/4;
clrscr();
cout<<<“The greads of “<<<” are:…”;
g=1;
for (i=1;i<=4;i++)
{
cout<<<“Enter “<<<” greade out of 4 “;
cin>>t[i];
g=g+1;
}
h[4]=(t[1]+t[2]+t[3]+t[4])/4;
clrscr();
cout<<<“The averige of “<
<<” is: “<
cout<<<“The averige of “<<<” is: “<
cout<<<“The averige of “<<<” is: “<
cout<<<“The Averige of “<<<” is: “<
if (h[1]>((h[2])&&(h[3])&&(h[4])))
{
cout<<<<“The Highest averige is: “<<<” of “<
}
if (h[2]>((h[1])&&(h[3])&&(h[4])))
{
cout<<<<“The Highest averige is: “<<<” of “<
}
if (h[3]>((h[1])&&(h[2])&&(h[4])))
{
cout<<<<“The Highest averige is: “<<<” of “<
}
if (h[4]>((h[1])&&(h[2])&&(h[3])))
{
cout<<<<“The Highest avverige is: “<<<” of “<
}
}

מפאת חוסר מקום הפלט נכתב בעמוד הבא.

הפלט של “ממוצע משוכלל”:

Enter The Name Of Studentd:
1. Eli
2. Ido
3. Avi
4. Shlomo

The Greads Of Eli Are:…
1. 90
2. 75
3. 83
4. 98

The Greads Of Ido Are:…
1. 58
2. 74
3. 66
4. 89

The Greads Of Avi Are:…
1. 77
2. 81
3. 94
4. 54

The Greads Of Shlomo Are:…
1. 95
2. 87
3. 44
4. 59

The Averige Of Eli Is:… 86.5
The Averige Of Ido Is:… 71.75
The Averige Of Avi Is:… 76.5
The Averige Of Shlomo is:… 71.25

The Class Averige Is:… 76.25

The Best Student Is Eli:… 86.5

פקודת FOR

פקודת FOR זוהי פקודת לולאה, ששימושה נרחבים ומגוונים לצורך מטרות שונות. מופיעה עם פקודות נוספות כגון IF. מבנה הפקודה:
(מונה — או ++ ; תנאי ; ערך ראשוני למשתנה)for
}
פקודות אשר רוצים לבצע.
{

להלן תוכנית לדוגמא:

#include
#include
#include
#include
#include
void main (void)
{
int a[5],i;
for (i=1;i<=10;i++)
{
cout<<<“Enter Number “<<<” Out Of ‘5’ Numbers:…”;
cin>>a[i];
}
for (i=5;i>=1;i–)
{
cout<<<“Number “<<<” Is: “<
}

תחלית התוכנית:

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

הסבר התוכנית:

בתחילתה של תוכנית פשוטה זו, ישנה הצהרת משתנה I, ומערך A בן חמישה תאים: int a[5],i;
לאחר מיכן באה פקודת FOR, שתפקידה לחזור על הפקודות שבתוך הסוגרים המסולסלות מספר פעמים שנקבע מראש על – ידי: תנאי, מונה, וערך ראשוני למשתנה I.
מבנה פקודת הלולאה בתוכנית זו:
I=1 זהו הערך הראשוני ל- I.
I<=5 תנאי לקיום הלולאה.
I++ מונה המוסיף ‘1’ לערך הראשוני כל פעם שמתבצעת הלולאה: for(i=1;i<=5;i++)
טבלת מעקב:

ערך של I קיום התנאי i<=5
1 I<5,התנאי מתקיים
2 I<5,התנאי מתקיים
3 I<5,התנאי מתקיים
4 I<5,התנאי מתקיים
5 I=5,התנאי מתקיים
6 I>5,התנאי לא מתקיים

כאשר התנאי מתקיים יתבצעו הפקודות אשר באות בתוך הסוגרים המסולסלות שבתוך הלולאה, והמחשב יחזור שוב לבדוק את התנאי ואם הוא שוב יתקיים שוב תתבצע הפקודות שבתוך הלולאה וחוזר חלילה. כאשר התנאי לא יתקיים, התוכנית תמשיך בלי לחזור לבדוק את התנאי ולא תבצע את הפקודות שבתוך הלולאה.
כפי הנראה בטבלת המעקב, הפקודות שבתוך “הבלוק” של הלולאה יתבצעו 5 פעמים. (ראה פלט)
פקודות אילו נועדו להורות למשתמש להכניס מספר וקליטתו לתוך מערך.
לאחר מיכן באה שוב פקודת לולאה לשם הדפסת אותם מספרים שניקלטו קודם בסדר הפוך מסדר מקליטתם.
רק הפעם הערך הראשוני של I הוא 5, התנאי I>=1, והמונה I–, כל פעם שמתבצעת הלולאה יגרע המחשב מ- I ב- 1.
טבלת מעקב:

ערך של I קיום התנאי i>=1
5 I>1, התנאי מתקיים
4 I>1, התנאי מתקיים
3 I>1, התנאי מתקיים
2 I>1, התנאי מתקיים
1 I=1, התנאי מתקיים
0 I<1, התנאי לא מתקיים

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

הפלט על גבי המסך:

Enter Number 1 Out Of ‘5’ Numbers:… 10
Enter Number 2 Out Of ‘5’ Numbers:… 20
Enter Number 3 Out Of ‘5’ Numbers:… 30
Enter Number 4 Out Of ‘5’ Numbers:… 40
Enter Number 5 Out Of ‘5’ Numbers:… 50

The Number 5 Is:… 50
The Number 4 Is:… 40
The Number 3 Is:… 30
The Number 2 Is:… 20
The Number 1 Is:… 10