עבור לתוכן

כיצד ניתן לשלב אלגורתמים שנבנו כ-Console App בתוך תוכנה גראפית?

Featured Replies

פורסם

שלום לכולם.

יש לי ידע סביר בעבודה ב-C# , אך מה שלמדתי עד היום התעסק רק באלגורתמים שפותחו כ-Console App.

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

תודה מראש

פורסם

אתה יודע איך להכניס קוד שיקרה כשאתה לוחץ על כפתור כלשהו?

פשוט תעתיק לשם את האלגוריתם שהיה לך ב-Console App... אלא אם כן אתה

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

פורסם
  • מחבר

לא אין לי מושג... איך עושים את זה?

פורסם

יש לי ידע סביר בעבודה ב-C#

אתה יודע איך להכניס קוד שיקרה כשאתה לוחץ על כפתור כלשהו?

לא אין לי מושג... איך עושים את זה?

Fail

פורסם

שלום לכולם.

יש לי ידע סביר בעבודה ב-C# , אך מה שלמדתי עד היום התעסק רק באלגורתמים שפותחו כ-Console App.

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

תודה מראש

אני לא ממש זוכר איך זה הולך ב C#, עברה תקופה די גדולה וכרגע אני מתעסק עם JAVA. אבל בגדול זה צריך להיות די דומה , אז כדאי שתחפש ותלמד על ארועים (Events), מאזינים (אם זה בכלל קיים ב C#), תכיר את הרכיבים שקיימים וכו'...

אני זוכר ב C# זה די קל, אם אתה עובד בסביבת עבודה של VISUAL STUDIO אז יש לך בצד שמאל Toolbox שאתה פשוט גורר את הרכיב לתוך ה FRAME, לוחץ עליו פעמים ורושם מה הוא צריך לבצע בלחיצה עליו.

לעומת JAVA, מי שמשתמש ב ECLIPSE צריך לרשום הכל לבד, אין אפשרות של גרירה של רכיב...

זה אולי יכול לעזור לך: http://msdn.microsoft.com/en-us/library/360kwx3z(VS.90).aspx

בהצלחה

פורסם

ואל תשכח להחליף את הconsole.writeline בtextbox.appendtext (או משהו אחר לבחירתך)

פורסם

אני לא ממש זוכר איך זה הולך ב C#, עברה תקופה די גדולה וכרגע אני מתעסק עם JAVA. אבל בגדול זה צריך להיות די דומה , אז כדאי שתחפש ותלמד על ארועים (Events), מאזינים (אם זה בכלל קיים ב C#), תכיר את הרכיבים שקיימים וכו'...

אני זוכר ב C# זה די קל, אם אתה עובד בסביבת עבודה של VISUAL STUDIO אז יש לך בצד שמאל Toolbox שאתה פשוט גורר את הרכיב לתוך ה FRAME, לוחץ עליו פעמים ורושם מה הוא צריך לבצע בלחיצה עליו.

לעומת JAVA, מי שמשתמש ב ECLIPSE צריך לרשום הכל לבד, אין אפשרות של גרירה של רכיב...

זה אולי יכול לעזור לך: http://msdn.microsoft.com/en-us/library/360kwx3z(VS.90).aspx

בהצלחה

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

פורסם

האלגוריתם שלך לא צריך לשבת בשום פנים ואופן במחלקת הUI (המחלקה עם הMain בתוכנית קונסולה או הForm הראשי בWinForms).

קוד לוגי צריך לשבת במחלקה נפרדת (ובמקרה שלך נשמע כמו שיש לך סט אלגוריתמים שאתה רוצה לייצא בתור ספרייה - אז DLL זה בדיוק בשביל זה) בשביל שום קשר לממשק משתמש, כאשר כל הInput/Output נקבע על ידי פרמטרים לפונקציות \ משתנים במחלקה.

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

פורסם

^^^

כן, כשאתה בונה תוכנה אמיתי בעלת שכבת מידע ושכבת GUI וכו' וכו'.

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

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

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

אין טעם להתחיל להסתבך עם שכבת מידע ו-GUI וכדומה.

פורסם

האלגוריתם שלך לא צריך לשבת בשום פנים ואופן במחלקת הUI (המחלקה עם הMain בתוכנית קונסולה או הForm הראשי בWinForms).

קוד לוגי צריך לשבת במחלקה נפרדת (ובמקרה שלך נשמע כמו שיש לך סט אלגוריתמים שאתה רוצה לייצא בתור ספרייה - אז DLL זה בדיוק בשביל זה) בשביל שום קשר לממשק משתמש, כאשר כל הInput/Output נקבע על ידי פרמטרים לפונקציות \ משתנים במחלקה.

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

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

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

^^^

כן, כשאתה בונה תוכנה אמיתי בעלת שכבת מידע ושכבת GUI וכו' וכו'.

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

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

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

אין טעם להתחיל להסתבך עם שכבת מידע ו-GUI וכדומה.

מה קשור שכבת מידע ושכבת GUI, אם פעולה מסויימת נעשה רק בלחיצה של כפתור תכניס את כל העולם ואחותו לתוך הפונקציה שמקבלת את הEventOnButtonClick, אני מת על האנשים שתכתבים בOnButtonClick הפניה לפנוקציה נוספת שלא נעשה בה שימוש יותר מעולם, זה לא תכנות יעיל זה תכנות בזבזני, ו"אבל לקוד שלי לוקח 3 שניות להחזיר X" זה לא תרוץ קודם כל אם הקוד לא כתוב נכון אז OnButtonClick יחכה לReturn במילא, ובמיוחד בשביל דברים שלוקחים זמן יש כמעט לכל בקר נורמאלי אירועים שהם Async, וכנראה שעל threading אף אחד לא שמע.

פורסם

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

וגם מה קשור DLL עכשיו? אתה יודע מתי כותבים DLL? אין פה שום צורך בDLL אין לך מספר ישומים שצריכים להשתמש באותו קוד, ואין לך גם בעיות בעדכוני גרסא.מה קשור שכבת מידע ושכבת GUI, אם פעולה מסויימת נעשה רק בלחיצה של כפתור תכניס את כל העולם ואחותו לתוך הפונקציה שמקבלת את הEventOnButtonClick, אני מת על האנשים שתכתבים בOnButtonClick הפניה לפנוקציה נוספת שלא נעשה בה שימוש יותר מעולם, זה לא תכנות יעיל זה תכנות בזבזני, ו"אבל לקוד שלי לוקח 3 שניות להחזיר X" זה לא תרוץ קודם כל אם הקוד לא כתוב נכון אז OnButtonClick יחכה לReturn במילא, ובמיוחד בשביל דברים שלוקחים זמן יש כמעט לכל בקר נורמאלי אירועים שהם Async, וכנראה שעל threading אף אחד לא שמע.

מזה קשור אם אלגוריתם זה מושג טכני או לא? קוד לוגי צריך לשבת בנפרד מהUI נקודה.

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

ואז מה אם הוא רק מתחיל? זה אומר שלא צריך לתכנת בצורה נכונה? לא הזכרתי פה לא MVC ולא MVVM ולא שום דבר מפוצץ אחר. בסך הכל אמרתי לזרוק את כל הקוד הלוגי בפונקצייה\מחלקה אחרת ולא בתוך event handler של לחיצת כפתור.

פורסם

אם הקוד ירוץ רק בלחיצץ הכפתור אין שום סיבה ליצור עוד פונקציה זה לא תכנות נכון, אם יש בעיה של ביצועים בGUI אז Threading/Async אם הפתרון, אם אותו קוד למשל ישמש גם משהו אחר אז כבר צריך לעשות עוד פונקציה נוספת, למרות שגם אז אתה פשוט יכול לעשות קאסטינג לevent handler שלו.

פורסם

^

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

פורסם

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

פורסם

מסכים עם דובי זובי. אין צורך להשתמש ב-DLL כלל וזה סתם יאריך את העבודה.

משתמשים בקבצי DLL כאשר עלינו להשתמש באותם הפונקציות במספר תוכנות שונות (Dynamic Link Library).

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

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

כמה שאני אוהב לחלק את הקוד שלי למחלקות - לדעתי בתור התחלה זה רק יבלבל.

ארכיון

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

דיונים חדשים