מתחיל לתכנת בc - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

מתחיל לתכנת בc


TomerPerez

Recommended Posts

#include <stdio.h>
void main() {
	int x;
	char ch;
	printf("Enter a number");
	scanf_s("%d", &x);
	printf("You have entered the number %d\n", x);
	printf("Enter one char and press enter: \n");
	fflush(stdin);
	ch = getchar();
	printf("you entered the char");
	putchar(ch);
	putchar('\n');
	getch();
}

 לפני כמה ימים קיבלתי ספר לתכנות בשפה C מחבר. הספר יחסית ישן אבל הוא המליץ לי עליו.

אני לא מצליח להריץ את הדוגמה הבאה כמו שצריך.

ניסיתי להשתמש בפונקציה _flushall()

או בfflush(stdin)

הספר משנת 2001 ונכתב על יד יואב נתיב

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

מקווה שתוכלו לעזור לי

קישור לתוכן
שתף באתרים אחרים

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

אם שמים את קליטת התו בהתחלה ניתן לקלוט אותו. 

אני בכלל לא מקובע על ספרים בעברית, על איזה ספר אתה היית ממליץ למתחיל בc?

שמעתי על הספר הזה http://www.amazon.com/Head-First-C-David-Griffiths/dp/1449399916

ספר משנת 2012 עדיין נחשב מיושן?

קישור לתוכן
שתף באתרים אחרים

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

בקצרה, הסיבה לכך שהתוכנית רצה מבלי לקלוט את התו השני היא שscanf משאיר אחריו תו של /n בבאפר, שאותו קורא הgetchar. הייתי מפרט יותר אבל זה לא משהו שמתחיל צריך להתעסק בו כי זה מצריך הבנה של איך מומשו פונקציות הקלט בשפה ואיך עובד המנגנון של קלט פלט בc. אני לא יודע אם זה משהו שכדאי להתעסק איתו כשמתחילים ללמוד את השפה (אני מניח שאין לך רקע קודם בתכנות). בכל מקרה, לך על האופציה של fgets לקליטת קלט ואחריה sscanf. גם יותר נוח וגם יותר בטוח למניעת overflow 

קישור לתוכן
שתף באתרים אחרים

קודם כל תודה על התגובות

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

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

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

מצאתי לדוגמה ספר של c#,  שנראה מאוד רחב- באנגלית

c#6 in a nutshell ( גרסה שישית)

יש לי גם ספר בjava שנקרא the java tutorial (fifth edition) .

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

קישור לתוכן
שתף באתרים אחרים

הבעיה היא ש-fflush ו-flushall הן לא ממש פונקציות סטנדרטיות ולכן הן לא פועלות בדיוק כפי שהיית מצפה מהן בכל קומפיילר או . לדוגמה (fflush(stdin זה בכלל לא תקני, כי מבחינת התקן fflush עובדת רק על פלט, ולא על קלט. אתה יכול לנסות פשוט להתעלם מהקטע הזה. לדוגמה, במקום להשתמש ב-getchar, אתה יכול להשתמש בפיסת הקוד הבאה:

 

scanf_s(" %c", &ch);

 

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

 

C היא שפה עתיקה ויחסית קשה למתחילים. היא בהחלט שפה חשובה ומאוד שימושית, אבל אין שום סיבה להתחיל ממנה ולא משפה מודרנית יותר, כגון Java ו-#C. מבין Java ו-#C שתיהן סבבה והן בסך הכל די דומות, פשוט קח את אחד הספרים ותנסה, שניהם נראים סבבה. חוץ מזה יש מאות מדריכים ברשת, אתה לא חייב דווקא ספר פיזי.

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

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...