תוכנית ליצירת כרטיס ביקור שעשיתי בפסקל. - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

תוכנית ליצירת כרטיס ביקור שעשיתי בפסקל.


PhoenixBoy

Recommended Posts

פשוט.

אתה יכול ליפות את זה ע"י שימוש בספריית CRT בפונקציות אשר קיימות בה כמו

textcolor

ועוד ועוד.

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

על כל הפונקציות העיצוב תוכל לקרוא בINDEX בפסקל.

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

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

יפה להתחלה, פשוט כמובן.

רן. ;)

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

תודה רבה, הנה הקוד:

יש לי שאלה, הייתי יכול להשתמש בפרוצדורה או פונקציה בשביל הרווחים?


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.

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

וואי וואי, רק לקרוא את התוכנית שלך יצאו לי העיינים.

יש לך פה הרבה דברים מיותרים.

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

אני בא ליעל את הלמידה שלך ולעזור לך ללמוד לתכנת חכם ונכון)

קודם לשאלתך - לא, אין פונקציה אשר עושה רווחים (לא לפחות אחת שאני מכיר).

כמובן שזה לא מונע ממך ליצור אחת.

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

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

אתה אהבת את המשחק רווחים הזה, אז שיהיה בכיף.

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

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

כמה פחות שאפשר ויעיל כמובן, ולכן כל הכתיבה של 3 חבילות הפקודות החוזרות על עצמן מיותרת לחלוטין,

במצבים כאלה "יוצרים" פונקציות/פרוצדורות לפי הצורך.

מתי "יוצרים" אותם? פשוט מאוד, מתי שאתה רואה שאתה משתמש באותם פקודות בדיוק (ולפעמים אם משתנים אחרים),

ובמקום כל פעם לרשום 3 שורות, או להתחכם ולעשות COPY PASTE ואז אתה מנפח את נפח הקובץ - אתה פשוט רושם

פעם אחת את חבילת הפקודות לפני התוכנית הראשית (מעל הBEGIN) בתוך פונקציה/פרוצדורה, וכל פעם שאתה מעוניין

להשתמש באותה פונקציה/פרוצדורה אתה רק קורא לה. (לא בואי בואי..)

ולפי כך בניתי לך את הפונקציה הדורשה.

(אם תרצה הסבר בין פונקציה לפרוצדורה - בקש, חבל שארשום סתם אולי אתה יודע)

התוכנית תראה כך (בקצרה) :

Program Visi;

Uses
crt, strings;

var
XXXXXX

Procedure 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}

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

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

כמו כן אתה תצטרך להתאים אותה לרווחים שלך וכל שאר הדברים.

רן.

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

הצלחתי.. הנה:

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.

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

ארכיון

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

×
  • צור חדש...