ספר לתכנות ב-DOS

ספר לתכנות ב-DOS

שלום לכולם, הייתי פה פעם והמלצתם לי ללמוד תכנות ב-C++. בינתיים אני עובדת עם GAME MAKER (שזו, אגב, תוכנה מצוינת...לא כמו תכנות, אבל...). העניין הוא שאני באמת רוצה להתקדם ולא להישאר כל הזמן עם GAME MAKER. יש לי בבית ספר ישן שמלמד תכנות ב-C++ אבל לא בווינדוס אלא ב-DOS. אני מבינה שהיום זה בעיה, ושאין כמעט אנשים שמשתמשים ב-DOS. השאלה שלי היא האם אפשר בכל זאת ללמוד מהספר ואח"כ לתכנת גם בוינדוס או ללמוד בקלות לתכנת בוינדוס, או שזה משהו אחר לגמרי ולא כדאי אפילו להיכנס לזה? אם זה לא טוב, אשמח אם תמליצו לי על אתרים שמלמדים C++ בעברית. אני יכולה להשאיל ספר עדכני מהאוניברסיטה, אבל זה יהיה ללא הקבצים הנלווים ב-CD (שזה די חשוב ללמידה...לא?). מה אתם מציעים לי לעשות? תודה רבה
 

EvilProject

New member
זה לא שונה מבחינת התחביר של השפה

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

somebodddy

New member
את יכולה ללמוד מהספר

וגם אם תמצאי ספר יותר מעודכן - עדיף שגם הוא ילמד על DOS. תכנות בWIN32 הוא הרבה יותר קשה מתכנות בDOS, ועדיף להתחיל ללמוד את עקרונות התכנות בDOS.
 
תודה. כדאי אולי ללמוד בקורס באוניברסיטה?

אני לומדת בבר אילן (לא מחשבים) והסתכלתי קצת בקורסים שיש להם ומצאתי את הקורסים: מבוא למדעי המחשב: מבוא: סקירה. מבנה אלגוריתם בC-. סביבת עבודה: קומפליקציה, קישור והרצה, DEBUGGING, יצירת PROJECT. טיפוסי נתונים ומשתנים: טיפוסים בסיסיים, איתחול, CONST וDEFINE-, CASTING. משפטי השמה ומבנה תכנית:השמה (תוך הדגשה על המתרחש בזיכרון), תכנית בסיסית בC-. קלט/פלט: ביטויים ואופרטורים: אופרטורים אריתמטיים, לוגיים, קדימות, אופרטור --,++. מבני בקרה: תנאים, לולאות, SWITCH ומשפטי שבירת לולאות. פונקציות: הצהרה, הגדרה, קריאה, פרמטרים לפונקציה, ערך מוחזר,מחסניתהזיכרון. טווח הכרה ואורך חיים: משתנה רגיל, גלובלי, סטטי. מערכים ומחרוזות: מערך חד-ממדי, דו ממדי, רב ממדי, מיון בועות, חיפוש בסיסי(סדרתי), מחרוזות ופונקציות ספריה לטיפול במחרוזות. מצביעים... מבוא לתכנות מונחה עצמים: במסגרת הקורס נלמד את העקרונות הבסיסיים של תכנות מונחה העצמים ויישומם בשפת ++C. בין הנושאים נלמד: מחלקות, ירושלה, פולימורפיזם,TEMPLATES, שימוש בחריגות (EXCEPTIONS), ונראה כמה מהPATTERNS- DESIGN הבסיסיים. הקורס כולל הגשת תרגילי תכנות, השמים דגש על דימוי העולם התעשייתי מבחינת ניתוח דרישות, תאימות לדרישות הלקוח ועמידה בלוחות זמנים. השאלה היא עד כמה הקורסים האלה יעזרו לי בחיים, כי הם לא מיועדים לתכנות משחקי מחשב וגם זה נראה לי רק הבסיס, כי את התכנות ממש אני חושבת שלומדים רק בשנים מתקדמות מאוד. חוץ מזה, אם אני אקח את הקורסים האלה, סביר שאני לא אקבל בהם ציון כ"כ טוב (ככה זה...עושים שם מבחנים קשים) וזה ימנע ממני לקבל הצטיינות במקצוע שלי. אתם חושבים שבכל זאת שווה לקחת את הקורסים האלה, או שבכלל עדיף ללמוד לבד?
 

TerminalFrost

New member
את יכולה להכנס לשיעורים בלי להירשם

לא לעשות מבחן, ואז לא יפגעו לך הציונים הקורסים הם בסיסיים וחשובים מאוד למי שלא למד מחשבים בתיכון. ואפילו למישהו שכן למד מחשבים בתיכון, הקורס השני של OOP הוא כנראה בכל זאת חשוב, כי הוא יעשה סדר וגם ירחיב. על הקורס הראשון גם לא הייתי מוותר, הוא מלמד כמה מושגים חשובים. בקשר למעבר מDOS לWINDOWS - בקונטקסט של משחקי מחשב אין הרבה הבדל, וגם אני חושב שאת מתבלבלת. תכנות לCONSOLE זה לא תכנות לDOS. אני חושב שכשאת אומרת "תכנות לDOS" את מתכוונת שיופיעו תווים בתוך חלון CONSOLE שחור כזה שמופיע אם מפעילים "cmd" מתפריט Start -> Run. אבל זה לא תכנות לDOS, זאת תוכנה שנכתבה לWINDOWS שהוגדרה לכתוב את הSTANDARD OUTPUT STREAM שלה לCONSOLE SUBSYSTEM, ולכן נפתח לה חלון שמציג CONSOLE. אבל היא (ברוב המחוץ של המקרים) תוכנה שנכתבה לWINDOWS. אבל, אפשר גם לכתוב תכונות שלא כותבות לCONSOLE, ולהן לא יפתח חלון שחור כזה. הן בד"כ (בכלל לא תמיד) יפתחו חלון - Form, שדרכו יהיה אפשר להתממשק עם התוכנה. יש עוד הרבה סוגים של תוכנות, כמו SERVICEים למשל, שלא פותחים חלון CONSOLE. במשחקי מחשב זה בד"כ לא רלוונטי כי לא נפתח WinForm סטנדרטי של WINAPI, אלא חלון OPENGL או DIRECTX או משהו דומה. אפשר לדרוס גם את הפונקציות ציור של חלונות WINFORM ולצייר עליהם מה שרוצים, אבל כבר כמעט לא עושים את זה, בד"כ משתמשים באיזושהי פלטרפורמה שכבר יודעת לעשות את זה. אני מקווה שעשיתי סדר ולא בלבלתי עוד יותר.
 

sandbird4

New member
התאור של ה-CONSOLE לא מדוייק

בתהליך ה-LINK של התוכנית ניתן לקבוע באיזה STUB להשתמש: /subsystem:console - הפרמטר הזה אומר ל-LINK לשלב STUB שמפעיל חלון קונסול, ממפה את STDIN ו-STDOUT לאותו חלון וגם קורא לפונקציה MAIN. /subsystem:windows - הפרמטר הזה אומר ל-LINK לשלב STUB שלא מתחבר לחלון CONSOLE אוטומטית וגם קורא לפונקציה WINMAIN במקום ל-MAIN. חוץ משימוש ב-STUB אחר אז בשני המיקרים התוכנית יכולה להיות גם CONSOLE וגם GUI (או שניהם ביחד). התוכנית יכולה להפעיל או לכבות את ה-CONSOLE מתי שהיא רוצה וגם לפתוח חלונות מתי שהיא רוצה. לגבי SERVICE אז מדובר בתוכנית רגילה לכל דבר שיכולה להציג כרגיל גם CONSOLE וגם GUI אבל ישנם כמה שינויים קטנים וחשובים: 1. ל-SERVICE יש ממשק מול ה-SCM. 2. הרשאות שונות: ה-SERVICE רץ תחת הרשאות שונות ובדרך כלל הוא מנותק מה-DESKTOP שאותו רואים על המסך, אבל אפשר לגרום ל-SERVICE להציג על המסך ע"י קינפוג ה-SERVICE בצורה המתאימה. 3. ה-SERVICE יכול לרוץ גם לפני שעושים LOGIN וגם אחרי שעושים LOGOUT. ישנם עוד הבדלים קטנים אבל אני לא אכנס לזה. יש עוד נושא שלא הוזכר: DLL ל-DLL יש שלושה מצבי עבודה: 1. סטטית - אומנם ה-DLL אינו חלק מה-EXE אבל כשה-EXE עולה אז LOADMODULE (הקוד בחלונות שמעלה תוכניות) מעלה את ה-DLL עוד לפני שהתוכנית רצה. אם ה-DLL לא נמצא אז התוכנית עפה עם הודעת שגיאה של DLL לא נמצא עוד לפני שהתוכנית בכלל הספיקה לרוץ. רוב המתכנתים משתמשים באופציה הזאת כי היא הכי קלה. 2. דינמית - התוכנית צריכה לדאוג בעצמה לעלות את ה-DLL ולהתחבר לכל הפונקציות שלו. זאת הדרך האהובה עלי. 3. הדרך הסודית שכמעט אף אחד לא מכיר. אם מישהו מעוניין לדעת על זה יותר אז שיפנה אלי בפרטי.
 

sandbird4

New member
קצת הסבר על מושגים שכתבתי

STUB: בניגוד למה שהרבה מתכנתים חושבים אז התוכנית לא באמת מתחילה ב-MAIN (או WINMAIN) וזה בגלל שחלונות לא יודעת מה זה MAIN או WINMAIN. למעשה ההתחלה האמיתית של התוכנית היא קוד באסמבלי שתפקידו לאתחל את ה-PROCESS, לפרק את הפרמטרים (רק ב-MAIN) ובסוף לקרוא ל-MAIN או WINMAIN. בסוף כש-WINMAIN או MAIN מסתימית אז הוא מנקה את הכל והורג את ה-PROCESS. LOADMODULE: אחד החלקים שיצא לי לעשות לו HACKING הכי הרבה בחלונות. זה הקוד שמעלה תוכניות (לא רק למעשה). DLL: סוג של "תוכנית" שלא רצה ישירות אלה כחלק מ-EXE אחר. למעשה היא סוג של EXE אבל עם סימון מיוחד. השימוש שלה הוא כסיפריה חיצונית שניתן להשתמש בה מיותר מ-EXE אחד בלי שאותו קוד יופיע פעמים בכל ה-EXEים. ההגדרה הזאת שכתבתי פה אינה ההגדרה של הספר אלה ההגדרה האמיתית של מה זה DLL באמת.
 

sandbird4

New member
הרבה לפני שהמציאו את ההגדרה הזאת ../images/Emo6.gif

התחלתי להתעסק עם דריברים לחלונות לפני 13 שנה, ועם בכלל דריברים, PC INTERNALS ו-EMBEDDED הרבה לפני
 
למעלה