הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   [מדריך] בניית מחשבון ב C. (https://hosts.co.il/forums/showthread.php?t=34223)

Reality 06-11-06 00:54

[מדריך] בניית מחשבון ב C.
 
שלום לכולם,

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

טוב נתחיל את המדריך, אשתדל לפרט כמה שיותר על-מנת שיהיה מובן.

מה יהיה במחשבון שלנו אחרי שנסיים את המדריך?
לאחר שנסיים לכתוב את התוכנית נוכל לחבר / לחסר / לכפול / לחלק 2 מספרים שלמים בלבד.


אוקי נתחיל.

שלב ראשון: התחלת התוכנית.

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

#include<stdio.h>
#include<conio.h>

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

void main(void)
{
 int a,b;
 char g;

הסבר:
המשתנים A ו B הם המספרים אותם נחשב, במדריך זה המספרים יהיו שלמים בלבד לכן נציב אותם כאינטגרלים "INT".
המשתנה G הוא בעצם הפונקציה אותה נבצע (כלומר, G יהיה שווה לסימן + או - או * או /)
הצבנו את G בתוך "Char" מכיוון שהוא יהיה תו כלשהו.

שלב 2: הכנסת כותרות.

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

  printf("4 Function Integer Calcualtor\n");
  printf("Enter the calculation\n");

הסבר:

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


שלב 3: קבלת המשתנים.

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

scanf("%d %c %d",&a,&g,&b);
 getch();

הסבר:

כפי שהסברתי קודם, הפקודה "scanf" סורקת את התו / אות שהוכנסו.
d% - מייצג מספר שלם.
c% - מייצג תו (כל תו במקלדת).
וכעת, מה שבא אחרי הפסיק, לפי הסדר, מייצג את המשתנים.
קוד:

%d %c %d",&a,&g,&b
כפי שאתם רואים פה אנו נקלוט:
X + X
(ה + יכול להיות כל סימן מה4 שצוינו למעלה וכמובן, ה X כל מספר שלם שקיים.
הפקודה:
קוד:

getch();
אומרת לעורך לשמור את התוצאה.

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

#include <stdio.h>
#include <conio.h>

void main(void)
{
 int a,b;
 char g;

  printf("4 Function Integer Calcualtor\n");
  printf("Enter the calculation\n");


 scanf("%d %c %d",&a,&g,&b);
 getch();

שלב 4: הגדרת הפעולות המתמטיות.

כעת, נגדיר את הפעולות המתמטיות ע"י כמה משפטי תנאי.

נתחיל מהפעולה, חיבור:
קוד:

if(g=='+')
 {
 printf("%d + %d = %d",a,b,a+b);
 getch();
 }

הסבר:

מה שבעצם הגדרנו פה זה:
במידה ו G (המשתנה שיכול להיות תו) יהיה שווה לסימן +, אז התוכנית תבצע פקודה של חיבור.
ואז, במידה והוא יהיה + התוכנית תדפיס את התוכן שיש ב printf.
כמו כן הפעולה המתמטית תתבצע בתוך ה printf:
קוד:

%d + %d = %d",a,b,a+b
עלמנת להציב את שאר הפעולות נשתמש בפקודה ELSE שאומרת אם G לא שווה '+' הוא יהיה שווה '-'.
קוד:

else
 if(g=='-')
 {
 printf("%d - %d = %d",a,b,a-b);
 getch();
 }

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

else
 if(g=='*')
 {
 printf("%d * %d = %d",a,b,a*b);
 getch();
 }
 else
 if(g=='/')
 {
 printf("%d / %d = %d",a,b,a/b);
 getch();
 }
}

שלב 5: בדיקת שגיאות.

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

זהו, כעת התוכנית מוכנה להפעלה.

אם קיבלתם קוד זהה לקוד הזה:
קוד:

#include <stdio.h>
#include <conio.h>

void main(void)
{
 int a,b;
 char g;

  printf("4 Function Integer Calcualtor\n");
  printf("Enter the calculation\n");


 scanf("%d %c %d",&a,&g,&b);
 getch();
 if(g=='+')
 {
 printf("%d + %d = %d",a,b,a+b);
 getch();
 }
 else
 if(g=='-')
 {
 printf("%d - %d = %d",a,b,a-b);
 getch();
 }
 else
 if(g=='*')
 {
 printf("%d * %d = %d",a,b,a*b);
 getch();
 }
 else
 if(g=='/')
 {
 printf("%d / %d = %d",a,b,a/b);
 getch();
 }
}

סימן שעשיתם הכל נכון.

תהנו!.

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

-VladK- 06-11-06 06:37

מדריך מצויין! תודה רבה לך.

DCB 06-11-06 14:41

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

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

Level-Serv 06-11-06 15:07

לא עדיף לעשות switch?

tnadav 06-11-06 15:12

בשורה:
קוד:

scanf("%d %c %d",&a,&g,&b);
אני חושב שהיה יותר ידידותי למשתמש לעשות 3 scanf כאשר לפני כל אחד כותבים מה רוצים לקבל למשתנה

meshuga 06-11-06 16:01

ציטוט:

נכתב במקור על ידי Level-Serv
לא עדיף לעשות switch?

אישית אני אוהב להשתמש בelse if.....לא יודע למה...ככה אני אוהב את זה :D...

וכמו שאמרו מעליי, לא צריך לשים getch לכל פלט ובמיוחד לא לכל קלט (שכן, scanf גם ככה מפסיק את התוכנית עד שאתה לוחץ enter)..

Reality 06-11-06 16:34

אני עדיין לא יודע switch ו case חחח...
גם אני רק התחלתי ללמוד C, אבל מכיוון שלא ראיתי שיש באתר מדריכים החלטתי לשתף במה שאני יודע...
אני יוסיף עוד מדריכים בעתיד.

meshuga 06-11-06 17:04

ציטוט:

נכתב במקור על ידי Reality
אני עדיין לא יודע switch ו case חחח...
גם אני רק התחלתי ללמוד C, אבל מכיוון שלא ראיתי שיש באתר מדריכים החלטתי לשתף במה שאני יודע...
אני יוסיף עוד מדריכים בעתיד.

היה אחד לפני שלך |Rolleyes|

CoCa 10-11-06 19:48

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

FreakBox 10-11-06 19:56

אחחח הרבה יותר קל לעשות מחשבון ב-C# חחח (:
תודה בכל מקרה.

meshuga 10-11-06 20:10

ציטוט:

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

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

Ori The Man 10-11-06 20:13

ציטוט:

נכתב במקור על ידי FreakBox
אחחח הרבה יותר קל לעשות מחשבון ב-C# חחח (:
תודה בכל מקרה.

אין ב C switch?
באמת ב c# יותר קל (טוב נו זאת שפה מעפנה שלא עושים איתה הרבה)

CoCa 10-11-06 20:24

אני את הבגרות שלי בC כבר עשיתי :)
אין צורך בGETCH, יכול להיות שמה שכתבתי זה היה נוגע לgets אבל getch זה קיצור של הביטוי באנגלית get char, הגיוני ככה.
אם תשתמש בSCANF התוצאה תהיה שהתוכנית תחכה שהמשתמש יקליד ערכים למשתנים השונים.
אגב, אורי בC יש SWITCH.

Ori The Man 10-11-06 20:42

ציטוט:

נכתב במקור על ידי CoCa
אני את הבגרות שלי בC כבר עשיתי :)
אין צורך בGETCH, יכול להיות שמה שכתבתי זה היה נוגע לgets אבל getch זה קיצור של הביטוי באנגלית get char, הגיוני ככה.
אם תשתמש בSCANF התוצאה תהיה שהתוכנית תחכה שהמשתמש יקליד ערכים למשתנים השונים.
אגב, אורי בC יש SWITCH.

אז לא יותר פשוט לעשות switch ואז caseים?
אני בנ יתי מחשבון ב C# שמכניסים מספר ראשון סימן ואז מספר שני ולפי זה הוא הולך ל case המתאים ועושה תפעולה

opsite 11-11-06 17:38

איך אפשר להוציא את זה כ תוכנית ? הפעלה ..?

CoCa 11-11-06 20:05

אתה צריך קומפיילר, כאשר הקומפיילר המתאים ביותר לווינדוס הוא MSDN VIRTUAL Cpp

mayden 11-11-06 22:23

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

shayb 11-11-06 23:03

ציטוט:

נכתב במקור על ידי FreakBox
אחחח הרבה יותר קל לעשות מחשבון ב-C# חחח (:
תודה בכל מקרה.

הכי קל להשתמש במחשבון של וינדוס וזהו :)


כל הזמנים הם GMT +2. הזמן כעת הוא 00:23.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ