פורסם 2005 בספטמבר 320 שנים http://Rar.Co.iL/files/Rar-1125756222.jpgאחרי שאתם מורידים תשנו את הסיומת ל EXE.תגידו לי מה דעתכם, התחלתי ללמוד פסקל אתמול בערב.אם אסור לשים כאן דברים שהכנתי אז תגידו לי..
פורסם 2005 בספטמבר 420 שנים פשוט. אתה יכול ליפות את זה ע"י שימוש בספריית CRT בפונקציות אשר קיימות בה כמו textcolor ועוד ועוד. (ניתן לשחק עם מיקום כרטיס הביקור, לאמצע המסך ע"י שימוש בפונקצית gotoXY). על כל הפונקציות העיצוב תוכל לקרוא בINDEX בפסקל. כמו כן, על מנת ליעל את למידתך, אם תוכל לשים פה העתק של הקוד, אולי יהיה אפשר לראות אם יש אפשרות לחסוך משאבים, לייעל את התוכנית והשאר. יפה להתחלה, פשוט כמובן. רן.
פורסם 2005 בספטמבר 420 שנים מחבר תודה רבה, הנה הקוד:יש לי שאלה, הייתי יכול להשתמש בפרוצדורה או פונקציה בשביל הרווחים?Program Visiting_Card;Uses Crt, Strings;Var Pers_Name, Address, Phone: String; Name_Len, Add_Len, Phone_Len, i: Integer;Begin TextColor(15); Write('Please enter your name: '); ReadLn(Pers_Name); Name_Len := Length(Pers_Name); Name_Len := 31-Name_Len; Write('Please enter your address: '); ReadLn(Address); Add_Len := Length(Address); Add_Len := 24-Add_Len; Write('Please enter your phone number: '); ReadLn(Phone); Phone_Len := Length(Phone); Phone_Len := 22-Phone_Len; WriteLn; WriteLn('Name_Len: ', Name_Len); ClrScr; WriteLn('------------------------------------------'); WriteLn('| Personal Visiting Card |'); WriteLn('| ====================== |'); WriteLn('| |'); { Start writing personal name } i := 0; Write('| Name: ', Pers_Name); Repeat Begin Write(' '); i := i+1; End; Until i=Name_Len; WriteLn('|'); { End writing personal name ) { Start writing address } i := 0; Write('| Address: ', Address); Repeat Begin Write (' '); i := i+1; End; Until i=Add_Len; WriteLn('|'); { End writing address } { Start Writing Phone } i := 0; Write('| Phone: ',Phone); Repeat Begin Write (' '); i := i+1; End; Until i=Phone_Len; WriteLn('|'); { End writing Phone } WriteLn('| |'); WriteLn('------------------------------------------'); WriteLn; WriteLn; Write('Press any key to quit.'); ReadKey;End.
פורסם 2005 בספטמבר 420 שנים וואי וואי, רק לקרוא את התוכנית שלך יצאו לי העיינים.יש לך פה הרבה דברים מיותרים.(אגב, אני מקווה שאת כל התגובות שלי לגבי התארד הזה ואחרים, אתה לא נעלב או נפגע אישיתאני בא ליעל את הלמידה שלך ולעזור לך ללמוד לתכנת חכם ונכון)קודם לשאלתך - לא, אין פונקציה אשר עושה רווחים (לא לפחות אחת שאני מכיר).כמובן שזה לא מונע ממך ליצור אחת.דבר שני, לא הבנתי בשביל מה כל משחק הרווחים האלה, סתם שטותי וסתם יצרת לעצמך עוד משתניםו"שקלת" את אורך המילים וחישבת ובלה בלה...אבל בכל זאת אםאתה אהבת את המשחק רווחים הזה, אז שיהיה בכיף.כפי שאתה שם לב כנראה רשמת 3 פעמים חבילת את אותן חבילת פקודות פשוט עם משתנים שונים.לכן, במצבים כאלה צריל לפעמים להתחשב גם במתכנת (מה לעשות..) ומתכנתים חכמים עובדים כמה שפחות,כמה פחות שאפשר ויעיל כמובן, ולכן כל הכתיבה של 3 חבילות הפקודות החוזרות על עצמן מיותרת לחלוטין,במצבים כאלה "יוצרים" פונקציות/פרוצדורות לפי הצורך.מתי "יוצרים" אותם? פשוט מאוד, מתי שאתה רואה שאתה משתמש באותם פקודות בדיוק (ולפעמים אם משתנים אחרים),ובמקום כל פעם לרשום 3 שורות, או להתחכם ולעשות COPY PASTE ואז אתה מנפח את נפח הקובץ - אתה פשוט רושםפעם אחת את חבילת הפקודות לפני התוכנית הראשית (מעל הBEGIN) בתוך פונקציה/פרוצדורה, וכל פעם שאתה מעונייןלהשתמש באותה פונקציה/פרוצדורה אתה רק קורא לה. (לא בואי בואי..)ולפי כך בניתי לך את הפונקציה הדורשה.(אם תרצה הסבר בין פונקציה לפרוצדורה - בקש, חבל שארשום סתם אולי אתה יודע) התוכנית תראה כך (בקצרה) :Program Visi;Uses crt, strings;var XXXXXXProcedure S_pace (Pstr : string; Pint, Poption:integer); var Li : integer; Loption : string; Begin {Procedure} if Poption=1 then Loption:='Address' else if Poption=2 then Loption:='Phone' else {Poption must be 3} Loption:='Name'; Write('| ',Loption,' : ',Pstr ); Repeat Begin Write (' '); Li := Li+1; End; Until Li=Pint; WriteLn('|'); end; {Procedure}Begin {Main}{main program HERE}S_pace(Pers_name,Name_Len,3);S_pace(Phone,Phone_Len,2);S_pace(address,add_Len,1);End. {Main}כפי שאתה בטח שם לב, התוכנית סתם מסובכת ומסורבלת עם כל הרווחים והמשחק רווחים שעשית פה, לכן יצא לי מסובך מאודלכתוב את זה. אם תרצה הסברים על מה שרשמתי תבקש, נסה לפענח את התוכנית לבד, אני בטוח שתבין.כמו כן אתה תצטרך להתאים אותה לרווחים שלך וכל שאר הדברים.רן.
פורסם 2005 בספטמבר 420 שנים מחבר קודם כל אני מאוד שמח שאתה מגיב לי תגובות מפורטות כל כך ואתה מאוד עוזר לי! השאלה שלי אם היית יכול להשתמש בפונקציה התכוונתי למה שעשיתי אבל נזכרתי בזה רק אחר כך....
פורסם 2005 בספטמבר 520 שנים מחבר הצלחתי.. הנה:Program Visiting_Card;Uses Crt, Strings;Procedure Spaces(Fname: string; ext: integer);Var l_ength, i: integer;Begin {Spaces Procdure} l_ength := length(Fname); If ext = 1 Then {Name} Begin l_ength := 31-l_ength; Write('| Name: ', Fname); End; If ext = 2 Then {Address} Begin l_ength := 24-l_ength; Write('| Address: ', Fname); End; If ext = 3 Then {Phone} Begin l_ength := 23-l_ength; Write('| Phone: ', Fname); End; i := 0; Repeat Begin Write(' '); i := i+1; End; Until i=l_ength; WriteLn('|');End; {End of spaces procedure}Var Pers_Name, Address, Phone: String;Begin {Main} TextColor(15); ClrScr; Write('Please enter your name: '); ReadLn(Pers_Name); Write('Please enter your address: '); ReadLn(Address); Write('Please enter your phone number: '); ReadLn(Phone); ClrScr; WriteLn('------------------------------------------'); WriteLn('| Personal Visiting Card |'); WriteLn('| ====================== |'); WriteLn('| |'); Spaces(Pers_Name,1); Spaces(Address,2); Spaces(Phone,3); WriteLn('| |'); WriteLn('------------------------------------------'); WriteLn; WriteLn; Write('Press any key to quit.'); ReadKey;End.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.