בהצלחה לכל מי שעושה מחר בגרות ב מדעי המחשב. - עמוד 7 - כללי - HWzone פורומים
עבור לתוכן
  • צור חשבון

בהצלחה לכל מי שעושה מחר בגרות ב מדעי המחשב.


thegodx

Recommended Posts

  • תגובות 116
  • נוצר
  • תגובה אחרונה

אולי שם_שדה(אחזר_מרשימה(l,p))

האמת היא שזה לא כל כך משנה(תלוי למי), כי זהו פסאודו קוד קרי קוד כללי. מספיק שאתה מבין אותו. אין לו כלל תחביר. בבית הספר מלמדים אתכם משהו נורא ספציפי ומעצבן. הם רוצים אלגוריתם בפסאודו קוד. ולא מספיק שזה בעברית, הם רוצים גם עם השמות שלהם וכו(טוב, נו, שכנעתי את עצמי עכשיו שזהו לא פסאודו-קוד, אז מה זה?). לדוגמה, בגדול אתה יכול לרשום גם l1<-l2 כדי לבצע "העתקת רשימות" כי אתה מבין מה זה, הביהס רוצה שגם המחשב יבין את זה וזוהי הטעות שלו. בני אדם קוראים פסאודו קוד לא מחשב!!! אתה יכול לעשות גם l1<-x כדי להוסיף איבר לרשימה, אם זה לא משנה הסדר וכו, או משהו יותר "קיצוני" ולרשום q<-x, כלומר להוסיף איבר לתור, שזה נורא ברור, גם המיקום וגם התור שאליו אתה מוסיף. במקום לרשום הכנס_לתור(q, x) שנורא ארוך ואתה לא זוכר את השם שלו, עובדה שאני לא זכרתי עכשיו, אני בטוח שמה שרשמתי הוא לא נכון ואני לא זוכר מה הם רוצים שאני ארשום, אבל זה ברור לכולם למה התכוונתי. ושוב, בני אדם אמורים לקרוא פסאודו קוד ולא מכונות. יש גם אלגוריתמים בפסאודו קוד שנקראים GENERIC(כנראה עוד יותר כללים) שבהם אתה רושם רק באנגלית, כלומר אין שום אזכור למשתנים. לדוגמה, קבץ את כל הרשימות ומצא בהם איברים דומים, שאמור אולי לשמש לאלגוריתם יותר מסובך, והכי חשוב שאתה ואני מבינים את מה שרשום שם ולא המחשב כי זהו פסאודו קוד.

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

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

מכיוון שצריכה להיות אחידות מסויימת גם לזה.

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

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

X->P ובעוד חודשיים תסתכל על זה, מאיפה לך לדעת שמדובר פה על מצביע או תור, או מה שלא רשמת שם?

אתה תתייחס אליהם כ2 משתנים, מכיוון שבאלגוריתם אין הגדרת משתנים לתוכנית (או לתת-תוכנית).

לכן חשוב לשמור על אחידות מסויימת.

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

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

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

(כמו למשל שאתה יכול לרשום, לדוגמא :

קדם את I באחד.

I <- I+1.

ועוד..)

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

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

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

ושתוכל לממש את זה בכל סביבת עבודה.

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

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

רן. ;)

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

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

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

ועוד ד.א. אחד: אני שונא פיסקאות!

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

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

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

זה הגיוני לגמרי לאפשר באלגוריתם לעשות העתקת רשימה ע"י L1 -> L2 כי אתה מבין את המשמעות של זה, וזה ממש לא קריטי,לדוגמה, אם פעולה מסויימת, בכתיבה אלגוריתמית, היא פרוצדורה או פונקציה. כל הדיוק הזה שעושים אתחל_רשימה->L ולא אתחל_רשימה(L) הוא ממש מטומטם. למה לא לכתוב פשוט "אתחל את רשימה L"?

אין יותר כללי מזה, זה יתאים לכל שפה. או פשוט "קדם את P לאיבר הבא בL" במקום " הבא_ברשימה(P <- (L,P ".

מישהו יודע אם אפשר לעשות כזה דבר כדי לגשת לשדה ברשומה הנמצאת בתוך רשימה:

אחזר_מרשימה (l,p).שם השדה

לדוגמה

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

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

נכון, רק שאני התכוונתי ליותר מפעולה אחת. למשל: "כפול ב- 2 את כל איברי הרשימה". בידיוק כך בלי שום לולאה ושום כלום. נכון שכשנממש את זה אנו נעשה לולאה(תלוי גם איך הגדרנו את המחשב שלנו ואת הפעולות שהוא מסוגל לעשות), אך אנו לא מממשים את זה ואתה מבין בידיוק מה הולך כאן בלי שום תהיות.

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

נכון...זה אמור להיות

writeln(tel[4])

writeln(tel[5])

לא

איתן

זה בדיוק מה שעשיתי.

אז הם טעו?

כי בשאלה כתוב:

(3) ג. הנח כי המחרוזת במשתנה Tel היא באורך 5.

כתוב בפסקל/C הוראה/הוראות להדפסת שני התווים האחרונים (מצד ימין) של המחרוזת הנמצאת במשתנה tel. כל תו בשורה נפרדת.

--

יש לי שאלה נוספת בקשר לציונים:

נגיד תלמיד מסויים מקבל מגן 75

ובבגרות הוציא התלמיד 100

- אני שמעתי שמעל 20 נק` הפרש לא עושים ממוצע.

אז השאלה שלי היא: במקרה שצינתי, איזה ציון מקבלים?

ובוא נגיד במקרה הפוך שהמגן הוא 100 ובבגרות מוציאים 70.

במקרה הזה איזה ציון מקבלים?

תודה.

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

בישביל להדפיס את התו האחרון והלפני אחרון של tel היה צריך לעשות:

printf("%s\n",tel[strlen-1]);

printf("%s\n",tel[strlen-2]);

--------------------------------

writeln(tel[4])

writeln(tel[5])

ודבר כזה לא נכון לעשות מכיוון שהמחרוזת מתחילה מתא 0 עד 4 ולכן תא 5 לא קיים. (לפחות ב C )

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

בישביל להדפיס את התו האחרון והלפני אחרון של tel היה צריך לעשות:

printf("%s\n",tel[strlen-1]);

printf("%s\n",tel[strlen-2]);

--------------------------------

writeln(tel[4])

writeln(tel[5])

ודבר כזה לא נכון לעשות מכיוון שהמחרוזת מתחילה מתא 0 עד 4 ולכן תא 5 לא קיים. (לפחות ב C )

בפסקל תא 0 מכיל את הגודל הדינמי של המחרוזת לכן התו הראשון של המחרוזת מתחיל בתא 1.

ד"א

מצאתי עוד טעות בפתרונות של אנקורי

בשאלה 7:

השורה sum:=sum+15

צריכה להיות sum:=sum+5

כי לפי השאלה אם הציון בעבודה ה-3 גדול מ 85 אז התלמיד מקבל בונוס של 5 נק'.

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

בפסקל תא 0 מכיל את הגודל הדינמי של המחרוזת לכן התו הראשון של המחרוזת מתחיל בתא 1.

ד"א

מצאתי עוד טעות בפתרונות של אנקורי

בשאלה 7:

השורה sum:=sum+15

צריכה להיות sum:=sum+5

כי לפי השאלה אם הציון בעבודה ה-3 גדול מ 85 אז התלמיד מקבל בונוס של 5 נק'.

חח נכון איזה נובים...

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

המערך הדו-מימדי זה בעצם המכון הזה, וזה היה צריך להיות כאחד המהtype.

והיה צריך גם לעשות תור של אנשים שלא רשומים אבל רוצים להירשם.

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

נו בוודאי ככה עשיתי את זה

עשיתי Struct בשם Client שבתוכו יש String שם ו String פלאפון (שה Stringים בעצמם הם הגדרות)

ואז הגדרתי ListInfoType וגם QueueInfoType כ Client

ואז עשיתי ClassType שכולל בתוכו רשימה אחת ותור אחד

ואז SystemType שהוא מערך דו מימדי של ClassType של 16 על 5

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

ארכיון

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


×
  • צור חדש...