פורסם 2005 בספטמבר 320 שנים כדי לפתוח קובץ לכתיבה לא צריך לקרוא ל- Rewrite במקום Reset?בכל מקרה, אתה יכול לדבג ולראות על איזו שורה אתה מקבל את השגיאה.
פורסם 2005 בספטמבר 320 שנים מחבר תודה. התחלתי אתמול ללמוד פסקל כדי לדעת יותר לפני שאני אלמד את זה בבה"ס.מזינים לתוכנה מספר התחלתי ומספר סופי והיא מציגה לכם את המספרים וצבע הטקסט שהם מייצגים.עשיתי שלא יהיה אפשר להכניס מספר סופי שיותר קטן ממספר התחלתי אבל אני לא יודע איך לעשות שלא יהיה אפשר להכניס אותיות.קיבצתי את זה לראר רק בשביל להעלות את זה לאינטרנט. תגידו לי מה דעתכם בשביל מתחיל בפסקל.. ודרך אגב אם למישהו יש רעיון לעוד תוכניות קטנות או משהו אז שיגיד לי...הורדה:http://Rar.Co.iL/files/Rar-1125746172.rar
פורסם 2005 בספטמבר 320 שנים מחבר הנה הקוד:Program Colors;Uses Crt;Var ColorNum, StartNum, EndNum: integer;Begin ClrScr; TextColor(15); Write('Enter start number: '); ReadLn(StartNum); Write('Enter end number: '); ReadLn(EndNum); Repeat If EndNum<StartNum Then Begin ClrScr; TextColor(12); WriteLn('Please enter a higher number.'); TextColor(15); Write('Enter end number: '); ReadLn(EndNum); End Else ClrScr; For ColorNum := StartNum to EndNum do Begin TextColor(ColorNum); WriteLn(ColorNum); End; Until (EndNum>StartNum) OR (EndNum=StartNum); TextColor(15); Write('Press any key to quit.'); ReadKey;End.
פורסם 2005 בספטמבר 320 שנים ReadLn לא מסוגלת למנוע קלט מסוים.בשביל לעשות את זה אתה צריך להשתמש בפונקציה שקוראת תו מהקלט בלי להדפיס אותו, ורק אם זה תו שמוצא חן בעיניך - תדפיס אותו למסך.(אם הייתי זוכר טיפה פסקל, אולי הייתי זוכר איך קוראים לפונקציה הזו ואם היא בכלל קיימת)
פורסם 2005 בספטמבר 320 שנים נחמד מאודרק טיפ קטן: במקום לבדוק בנפרד אם EndNum>StartNum ואם EndNum=StartNum, אתה יכול להשתמש באופרטור => או =< (כאשר סימן השווה הוא מימין לסימן הגדול/קטן). כך שהמשמעות של(EndNum>StartNum) OR (EndNum=StartNum)זהה לEndNum>=StartNum
פורסם 2005 בספטמבר 420 שנים קודם כל נחמד מאוד. אבל ניתן ליעל את התוכנה. במקום להשתמש בלולאת REPEAT UNTIL ובתנאי IF, ניתן להשתמש רק בלולאת WHILE, אשר יותר ברורה גם לעין (לפי דעתי). While (EndNum<StartNum) do begin clrscr; writeln('enter number higher then : ',StartNum); readln(EndNum); end;for ColorNum:= StartNum to EndNum do begin textcolor(ColorNum); writeln(ColorNum); end; אם אתה רוצה לעשות את התוכנית יותר מעניינת, אז הינה לך משימה. קלוט 2 מספרים, כאשר מספר אחד התחלתי ומספר שני סופי. אם המספר ההתחלתי קטן מהסופי, הצג את המספרים בינהם לפי הסדר, אחרת אם המספר הסופי קטן מהמספר ההתחלתי הצג את המספרים בינהם בסדר יורד. לדוגמא : עבור הקלט 3,1 התוכנה תציג : 1 2 3 עבור הקלט 1,3 התוכנה תציג : 3 2 1 (רמז : השתמש בdownto). הינה לך משימה קטנה שחשבתי עליה עכשיו. בהצלחה, רן.
פורסם 2005 בספטמבר 420 שנים מחבר קודם כל נחמד מאוד. אבל ניתן ליעל את התוכנה. במקום להשתמש בלולאת REPEAT UNTIL ובתנאי IF, ניתן להשתמש רק בלולאת WHILE, אשר יותר ברורה גם לעין (לפי דעתי). While (EndNum<StartNum) do begin clrscr; writeln('enter number higher then : ',StartNum); readln(EndNum); end;for ColorNum:= StartNum to EndNum do begin textcolor(ColorNum); writeln(ColorNum); end; אם אתה רוצה לעשות את התוכנית יותר מעניינת, אז הינה לך משימה. קלוט 2 מספרים, כאשר מספר אחד התחלתי ומספר שני סופי. אם המספר ההתחלתי קטן מהסופי, הצג את המספרים בינהם לפי הסדר, אחרת אם המספר הסופי קטן מהמספר ההתחלתי הצג את המספרים בינהם בסדר יורד. לדוגמא : עבור הקלט 3,1 התוכנה תציג : 1 2 3 עבור הקלט 1,3 התוכנה תציג : 3 2 1 (רמז : השתמש בdownto). הינה לך משימה קטנה שחשבתי עליה עכשיו. בהצלחה, רן. הבנתי... לא חשבתי על זה =] אני אעשה את זה.
פורסם 2005 בספטמבר 420 שנים מחבר הנה עשיתי:http://Rar.Co.iL/files/Rar-1125848660.rarיש לי שאלה, איך עושים סאונד בפסקל? אני רוצה סאונד דרך הרמקול הפנימי של המחשב....גם סידרתי את הקוד...ואני חושב שהוא יותר יעיל עכשיו...Program Colors;Uses Crt;Var ColorNum, StartNum, EndNum: integer;Begin ClrScr; TextColor(15); Write('Enter start number: '); ReadLn(StartNum); Write('Enter end number: '); ReadLn(EndNum); ColorNum := 0; ClrScr; If EndNum<StartNum Then { If end number is higher then start number } Begin Repeat For ColorNum := StartNum downto EndNum do Begin TextColor(ColorNum); WriteLn(ColorNum); End; Until (EndNum<=StartNum); End Else { If end number is lower then/equal to start number } Begin Repeat For ColorNum := StartNum to EndNum do Begin TextColor(ColorNum); WriteLn(ColorNum); End; Until (EndNum>=StartNum); End; TextColor(15); Write('Press any key to quit.'); ReadKey;End.
פורסם 2005 בספטמבר 420 שנים אם אני לא טועה הפונקציה היא sound. אתה יכול לחפש בINDEX על מנת להיות בטוח ולקבל הסבר. אתה רושם את ה"סאונד" ומספר "סידורי" כלשהו (כמו בצבעים, מספר=צבע. פה מספר=צליל מסויים). sound(400); כמו כן, אם תריץ רק את הפקודה הזאתי, תתקע עם סאונד מעצבן שלא יפסיק לפעול. לכן יש את הפקודה nosound; כמו כן אם תקמפל את 2 השורות האלה לא תשמע כלום, כי התוכניות תשמיע צליל ותכבה אותו מיד אחרי. לכן יש פקודה נוספת : delay(x); פקודה זו "תוקעת" את התוכנית למספר מאיות שניה (MS) לפי הפרמטר בסוגריים (X). לכן המטרה שלנו היא להפיק צליל "לתקוע" את התוכנית לכמה שניות עם הצליל ולכבות את הצליל. נעשה זאת בשילוב 3 הפקודות שהצגתי : sound(X);delay(Y);nosound; הינה למדת עוד שטויות בפסקל. רן.
פורסם 2005 בספטמבר 420 שנים מחבר תודה על ההשקעה אבל את זה ידעתי חשבתי שאפשר משהו אחר כי זה לא עובד לי... זה הקוד שרשמתי:Program Sound;Uses Crt;Begin Sound(5000); Delay(20000); NoSound;End.כשאני מנסה להדר אני מקבל שגיאה:Error 94: "." expected.
פורסם 2005 בספטמבר 420 שנים אל תקרא לתוכנית שלך על שם שמור (sound), קרא לה S_ound אם משו אחר.אולי זה יפתור את הבעיה.בכל מקרה, הדילאי שלך נראה גבוהה למדי, יכול להיות שהתוכנית תתקע הרבה זמן. (זה 20 שניות לפי החישובים שלי, תעשה 2 שניות, מה צריך לחכות?)תוריד 0 אחד.לגבי התוכנית שלך (עכשיו חזרתי הביתה אני מסתכל) :א) איפוס המשתנה colornum מיותר לחלוטין, מכיוון שכפי שהסברתי (לא זוכר אם בתארד הזה) בלולאת FOR מתבצעת הצבה בזקיף הלולאה(במקרה שלנו - colornum),לכן לא משנה איזה "ג'נק" (זבל) יהיה במשתנה הזה, ברגע שלולאת הFOR תחל, יוצב הערך ההתחלתי בזקיף הלולאה.(במקרה שלנו זStartNum יוצב בColorNum).ב) לא הבנתי למה השימוש בלולאת REPEAT UNTIL. אתה סתם יוצר לולאה אין סופית.ניסית להריץ את התוכנית?אין לך בכלל צורך בלולאת WHILE/REPEAT UNTIL (לולאת תנאי).שים לב שבתוכנית שלך, נניח הקלט הוא 1 ואז 3. תגיע שורת הבדיקה הראשונה(שאגב, יותר נורמלי לרשום אותי הפוך, כך : StartNum>EndNum, יותר נוח לעין ולמשפט עזר שהוספת בצד, השתמשתבמונח גדול ושמת סימן של קטן, אומנם הפכת בין המשתנים ולכן אין עם זה בעיה בהרצה ובתקינות של התוכנית למשימה, אבל יותר נוח לראותאת זה כפי שציינתי).אז הבדיקה הראשונה תיהיה FALSE, והתוכנית לא תכנס לIF הראשון ולפי כך אנו יודעים שהמספר הגדול הוא האחרון ולא הראשוןאו שהם שווים, כמובן.לאחר מכן (ELSE) -התוכנית נכנסת ללולאת REPEAT UNTIL מיותרת לחלוטין (גם הלולאה REPEAT UNTIL בIF הראשון מיותרת מאותה סיבה)ואף עלולה לתקוע את התוכנית! מכיוון שאנו לא קולטים יותר נתונים למשתנים, ולכן הערכים הנוכחים במשתנים (1 ו-3) לא ישתנו לעולם.אם התנאי היה FALSE הלולאה הייתה נכנסת לסבב נוסף, מכיוון שזו לולאת REPEAT UNTIL, הלולאה תחזור עד אשר תנאי מסויים יקרה,כל עוד התנאי לא קורה (FALSE) הלולאה תחזור על עצמה.בתוכנית שלך, הערכים endnum ו startnum אינם משתנים בזמן הFOR (ולא צרכים גם להשתנות) ולכן הלולאה של REPEAT UNTIL מיותרת.היא לא תעשה סבב אחד נוסף אפילו, מכיוון שהתנאי כן קורה.המספר הסופי 3 יותר גדול(או שווה) למספר ההתחלתי 1.לכן לולאת REPEAT UNTIL מיותרת לחלוטין ולא עושה שום שימוש בתוכנית.לולאת ה-FOR היא זו שחוזרת על עצמה לפי המספרים ההתחלתים והסופיים (אני מניח שאתה יודע את זה).נ.ב.----במהלך ההסבר שלי שהסתכלתי שוב על התוכנית שלך, בילבל אותי לגמרי הפעולה וההסבר הבאים : If EndNum<StartNum Then { If end number is higher then start number }התנאי הוא EndNum<StartNum וההסבר הוא "אם המספר הסופי גדול מהמספר ההתחלתי",כאשר התנאי הוא "אם המספר הסופי קטן מהמספר ההתחלתי", כנראה התבלבלת.רן.
פורסם 2005 בספטמבר 420 שנים מחבר וואו יש לך תגובות מעולות! אני לומד מהן הרבה...בקשר לסאונד צדקת, הבעיה היתה בשם.בקשר להערוה שרשמתי - אני בטעות שכחתי להחליף את ההערות... והלולאת repeat נועדה כדי להציג את המספר ואת הצבע שהוא מייצג.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.