ebooksgratis.com

See also ebooksgratis.com: no banners, no cookies, totally FREE.

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
BASIC – ויקיפדיה

BASIC

מתוך ויקיפדיה, האנציקלופדיה החופשית

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

BASIC הוא כינוי למשפחה של שפות תכנות הנחשבות לידידותיות למשתמש וקלות לתכנות. בזכות תכונות אלו, הן זכו לפופולריות רבה בעבר. קוד BASIC מורץ על פי רוב על ידי מפרש (Interpreter), כלומר תוכנה הקוראת את הקוד ומריצה אותו שורה אחר שורה (זאת בניגוד למהדר (Compiler) שמתרגם את הקוד לשפת מכונה, אשר ניתנת להרצה בכל זמן ללא זיקה לקוד המקורי). בחלק מסביבות הפיתוח שהתפתחו משפה זו קיימות גם יכולות הידור, אך לרוב ביצועי קובצי הרצה המתקבלים מהן נחותים לעומת קובצי הרצה שהתקבלו ממהדרים של שפות מהירות כגון C או C++‎.

תוכן עניינים

[עריכה] מבוא

BASIC נוצרה בשנת 1963 בקולג' דרטמות, כשפת תכנות פשוטה וקלה ללמידה, שתוכל לשמש כשפת תכנות ראשונה לצרכי לימוד. מטרה זו באה לידי ביטוי בשמה של השפה, BASIC, שהוא ראשי תיבות של Beginners All-purpose Symbolic Instruction Code. [1]

בסוף שנות ה-70 ובתחילת שנות ה-80, עם תחילת התפוצה הנרחבת של המחשבים האישיים ועוד לפני הופעת המחשב האישי (PC) של יבמ בשנת 1981, זכתה BASIC להצלחה רבה על מחשבים כגון אטארי, קומודור, סינקלייר ועוד. ראשיתה של חברת מיקרוסופט הייתה בפיתוח מהדרי BASIC. למרות קיומו של תקן ANSI לשפה נוצרו בתקופה זו ניבים שונים מאוד של BASIC, שלחלקם אף לא היו כמעט פקודות משותפות.

חברת מיקרוסופט צירפה למערכת ההפעלה שלה DOS מפרש של BASIC (עד גרסה 5 של DOS נעשה שימוש בניב שנקרא BASICA, ולאחר מכן QBASIC) ולכן שפת התכנות נשארה בשימוש. כאשר הופיעה מערכת ההפעלה חלונות, פיתחה חברת מיקרוסופט את שפת Visual Basic שהיא כיום הניב הנפוץ ביותר של BASIC. זמן קצר לאחר מכן הוציאה מיקרוסופט גרסה של Visual Basic גם עבור DOS.

כיום, עיקר השימוש ב-BASIC הוא כשפת תסריט בתוך תוכנות שונות (כגון Microsoft Word) או לשימוש באינטרנט, ולא כשפת תכנות העומדת בפני עצמה. ניב זה מכונה Visual Basic Script.

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

[עריכה] היסטוריה

עד אמצע שנות ה-60, מחשבים היו כלים יקרים ביותר שנעשה בהם שימוש רק למטרות מיוחדות כחישובים מדעיים או צבאיים. מחשבים אלו הפעילו אצווֹ‏‏ת (Batch) של משימות להרצה בזו אחר זו, והיה לעתים צורך להמתין זמן רב עד להתפנותו של המחשב. מסוף שנות ה-60 ואילך הוזילו התפתחויות בתחום האלקטרוניקה את מחירי המחשבים באופן משמעותי, עד כדי כך שכוח החישוב עלה לרוב על הנדרש.

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

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

[עריכה] שנים מוקדמות - עידן המיני-מחשבים

שפת ה-BASIC המקורית תוכננה ב־1963 על ידי ג'ון קמני ותומאס קורץ, ומומשה על ידי צוות של סטודנטים באוניברסיטת דארטמות' תחת הוראתם. BASIC תוכננה לאפשר לסטודנטים לכתוב תוכניות עבור מערכת חלוקת זמן שנקראה Dartmouth Time-Sharing System. היא תוכננה להיות מסובכת פחות משפות התכנות שקדמו לה, שכן המשתמשים החדשים, שעשו שימוש במערכות חלוקת זמן, היו על פי רוב בעלי רקע טכני ומתמטי מועט יותר מקהל היעד הוותיק. ניב זה של BASIC כונה מאוחר יותר Dartmouth BASIC.

שמונה עקרונות עמדו לנגד עיני מתכנני BASIC:

  1. קלות שימוש למתחילים.
  2. השפה תתאים לכל מטרה (general-purpose programming language).
  3. תתאפשר הוספת תכונות מתקדמות, ללא פגיעה בפשטות.
  4. הידודיות (אינטראקטיביות).
  5. מתן הודעות שגיאה ברורות וידידותיות.
  6. תגובה מהירה לתוכניות קצרות.
  7. המשתמש לא יידרש להכיר את חומרת המחשב.
  8. חציצה בין מערכת ההפעלה והמשתמש.

השפה התבססה בחלקה על FORTRAN II ובחלקה על ALGOL 60, תוך שהוכנסו בה מספר שינויים כדי להתאימה למערכות חלוקת זמן (אף מערכות אחרות מזאת שפעלה בדארטמות' כגון JOSS ו-CORC ובמידה פחותה יותר LISP). יש לציין שקדמו לה נסיונות אחרים לתכנן שפת הוראה בדארטמות' כמו DARSIMCO ב-1956 ו-DOPE ב-1962.

מראשיתה, תמכה BASIC בביצוע פעולות מתמטיות פשוטות ובפעולות על מטריצות. האפשרות לטפל במחרוזות נוספה במלואה רק ב-1965. BASIC מומשה לראשונה, כשפת מהדר דווקא, על מחשב מרכזי מסוג GE-265 שתמך במספר מסופים. השפה הייתה יעילה למדי, ועקפה בביצועיה את המימושים FORTRAN II ו-ALGOL 60 שרצו על ה-GE-265.

מתכנני השפה החליטו שהמהדר יהיה זמין לכול ללא תשלום כדי להפיץ את השפה. הם הרשו שימוש בו בבתי ספר באזור דארטמות' והשקיעו כמות נכבדה של מאמץ לקדם את השפה. מאמציהם נשאו פרי, ידע של BASIC נעשה נפוץ יחסית. השפה מומשה על ידי מספר ספקים ונעשתה פופולרית על מיני-מחשבים כסדרת ה-PDP של DEC, וה-Nova של Data General. לרוב מומשה BASIC בדרך-כלל כשפת מפרש, במקום (או בנוסף על) מהדר.

מספר שנים אחרי הפצתה, הביעו מספר מומחי מחשבים בעלי-שם וביניהם אדסחר דייקסטרה, את דעתם שהשימוש בהצהרות GOTO הנפוצות ב-BASIC ובשפות אחרות הוא תרגול תכנותי מגונה. [2] בנוסף, מומחים אחרים טענו ש-BASIC איטית מדי (מרבית הגרסאות המפורשות איטיות מהגרסאות המהודרות המקבילות) או פשוטה מדי (גרסאות רבות, במיוחד למחשבים חלשים, לא מימשו תכונות ויכולות חשובות).

[עריכה] גידול מהיר - עידן המחשבים הביתיים

תמונת מסך של Qbasic
תמונת מסך של Qbasic

הצגת המחשב הביתי אלטאיר 8800 ב-1975 הזניקה את הפופולריות של בייסיק. רוב שפות התכנות האחרות דרשו יותר זיכרון (ו/או יותר נפח בכונן הקשיח) ממה שהיה זמין במחשבים הביתיים, ואילו בייסיק יכלה להתמודד עם המגבלות האלו ואף התחשבה באכסון האיטי על טייפ נייר (או יותר מאוחר טייפ של קלטות אודיו, באותה תקופה לא היו כוננים קשיחים למחשבים ביתיים) ובהיעדר עורכי טקסט מתאימים. לבייסיק היה גם היתרון של פופולריות בקרב המתכנתים הצעירים שגילו עניין במיקרו-מחשבים. אחד המימושים הראשונים של השפה שהופיעו למכונות ה-8080 כמו האלטאיר היה ‎Tiny BASIC, מימוש פשוט שנכתב במקור על ידי ד"ר לי-צ'ן ואנג, ושהוסב לאלטאיר על ידי דניס אליסון בעקבות בקשתו של בוב אלברכט (שמאוחר יותר הקים את Dr. Dobb's Journal). התכן של Tiny BASIC וקוד המקור המלא פורסמו ב-1976 בכתב עת זה.

תמונת מסך של Qbasic2
תמונת מסך של Qbasic2

חברות חדשות ניסו ללכת בעקבות ההצלחות של "Micro Instrumentation and Telemtry Systems", "IMSAI", "North Star" ואפל מחשבים, ובכך יצרו תעשיית מחשבים ביתיים; בינתיים בייסיק נהפכה לתכונה מובנית בכמעט כל המחשבים הביתיים. מרביתם שווקו עם מפרש בייסיק ב-ROM (זיכרון לקריאה בלבד) ובכך התגברו על בעיית הכוננים שהיו לא זמינים או יקרים מדי. מהר מאוד היו מיליוני מחשבים שהריצו ניבים של בייסיק ברחבי העולם.

ה-BBC פרסם את BBC BASIC, שפותח עבורם על ידי חברת מחשבי Acorn וכללה מילות מפתח מבניות רבות נוספות וגישה ישירה, מקיפה וגמישה למערכת ההפעלה. כמו כן היא כללה אסמבלר משולב. BBC BASIC היה דיאלקט מאוד מוערך, ועבר הסבה ממחשב ה-BBC Micro המקורי ללמעלה מ-30 פלטמורמות אחרות.

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

[עריכה] בגרות — עידן המחשבים הביתיים

גרסאות בייסיק חדשות רבות נוצרו בתקופה הזאת. מיקרוסופט מכרה מספר גרסאות של בייסיק עבור MS-DOS או PC-DOS כולל BASICA, GW-BASIC (גרסה תואמת BASICA שלא דרשה את ה-ROM של IBM), ו-QuickBASIC. בורלנד, החברה שמכרה את טורבו-פסקל, הוציאה את Turbo BASIC 1.0 ב-1985 (גרסאות חדשות שלה עדיין משווקות על ידי הכותב המקורי תחת השם PowerBASIC).

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

אולם, עד למחצית השנייה של שנות ה-80, מחשבים חדשים היו בעלי יכולת גבוהה בהרבה עם יותר משאבים שעמדו לרשותם. באותו הזמן, מחשבים הפכו ממכשירים שהיוו תחביב, לכלים ששימשו בעיקר ליישומים שנכתבו על ידי אנשים אחרים, ותכנות נעשה פחות חשוב למרבית המשתמשים. בייסיק התחילה להיות פחות חשובה, אף שמספר רב של גרסאות עדיין היו זמינות. בייסיק מהודרת או CBASIC עדיין נמצאת בשימוש במערכות נקודת מכירה רבות המבוססות על מערכת-ההפעלה IBM 4690.

מזלה של בייסיק התהפך שוב עם כניסתה לשוק של Visual Basic של מיקרוסופט. קשה למדי להחשיב שפה זו כבייסיק, בעיקר בגלל המעבר הבולט בנטייה שלה לכיוון תכנות מונחה עצמים ו-תכנות מונחה אירועים. בעוד שזה עשוי להחשב כאבולוציה של השפה, מספר קטן מאוד מהתכונות הייחודיות של בייסיק דארטמות' המוקדם, כמו מספרי שורות ומילית המפתח INPUT, עדיין נשאר שם.

דיאלקטים רבים של בייסיק צצו בשנים האחרונות, כולל Bywater BASIC ו-True BASIC (היורש הישיר של בייסיק דארטמות' מחברה שנשלטת על ידי קורטז). לאחרונה, שארית הקהיליה שהשתמשה במוצרי הבייסיק של מיקרוסופט שלפני ויז'ואל בייסיק החלה לעבור באופן מלא ל-FreeBASIC, מהדר תחת רישיון GPL, שמהדר את בייסיק באמצעות GCC. ואריאנטים רבים אחרים של בייסיק והסבות נכתבו על ידי חובבנים, מפתחי ציוד ואחרים, מכיוון שהיא שפה פשוטה יחסית לפתח מתרגמים עבורה. דוגמה של מפרש קוד פתוח שלה, הכתוב ב-C, היא MiniBasic.

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

[עריכה] השפה

[עריכה] תחביר

פקודות בייסיק נגמרות בסופי שורה אלא אם כן יש תו המשך שורה. תחביר בייסיק מינימלי ביותר צריך רק את הפקודות "LET", "PRINT", "IF" ו-"GOTO".

מספרי שורות היו פן מאוד ייחודי של מפרשי הבייסיק הבסיסיים של מחשבי הבית. יותר מאוחר, מספר מפרשי בייסיק הופיעו עם פקודת "RENUMBER" (= מספר מחדש) מובנית.

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

  • do - loop - while - until - exit
  • on x goto / gosub (switch & case)

ואריאנטים חדשים כמו ויז'ואל בייסיק הציגו תכונות כמו מבנה ה-"For Each...Loop" לאיטרציה מתוך מאגרים ומערכים (שהוצגה ב-"Visual Basic for Applications" ובויז'ואל בייסיק 4 ואילך), ואפילו תכנות מונחה עצמים עם הורשה בגרסה האחרונה. ניהול זיכרון הוא קל יותר מאשר בשפות תכנות פרוצדורליות רבות אחרות בשל אוסף הזבל הכלול שם בדרך-כלל.

העושר הזה של הוואריאנטים מראה שקהילות המשתמשים והמפתחים של השפה הן פעילות, ושניתן לראות את בייסיק כתת-תרבות שמטפלת בתכנות במקום באוסף מוגבל של חוקים תחביריים. זה נכון גם לשפות תכנות "ישנות" אחרות כמו קובול או פורטרן, אך התנועה מאחורי בייסיק היא ללא ספק הגדולה ביותר; ניתן להסביר זאת על ידי המספר הגדול של מקצועני תעשיית המידע שלמדו לתכנת בבייסיק בעידן המחשבים הביתיים של שנות ה-1980.

[עריכה] פרוצדרות ובקרת זרימה

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

מספר דיאלקטים של בייסיק אינם מספקים יכולות הבנייה מובנות, כמו למשל מבנה Procedure. כשהם מתכנתים באלה, מתכנתים צריכים לכתוב את התוכניות שלהם על ידי שימוש בהצהרות GOTO (בעברית "לך ל") כדי לדמות את המבנים האלה. זה עלול להוביל לתוכניות מבלבלות למדי, שנהוג לקרוא להן קוד ספגטי. הצהרות GOSUB (בעברית "לך-דמוי-שגרה") פונות לסוגים פשוטים של שגרות אשר על-פי רוב אינן מקבלות פרמטרים או משתנים מקומיים. מרבית הגרסאות המודרניות של בייסיק, כמו Quick BASIC, הוסיפו תמיכה בשגרות ופונקציות מלאות. זהו עוד תחום בו בייסיק שונה משפות תכנות רבות אחרות. מרבית מימושי הבייסיק, בדומה לפסקל, מבחינים בין פרוצדורה שאינה מחזירה ערך (שגרה) לבין פרודצורה שמחזירה ערך (פונקציה). שפות רבות אחרות (בייחוד C) אינן עושות הבחנה זאת ומחשיבות את כל אלו כפונקציות המחזירות ערך, שערכו יכול להיות ריק מתוכן (void).

בעוד שפונקציות, במובן הרחב של שגרות המחזירות ערכים, נוספו לבייסיק רק מאוחר, מערכות מוקדמות רבות תמכו בהגדרה של פונציות מתמטיות של שורה אחת באמצעות DEF FN ‏("DEFine FunctioN") או "הגדר פונקציה" בעברית. בייסיק דארטמות' המקורי תמך גם בפונקציות ושגרות דמויות-אלגול החל מזמן מוקדם, וכך גם הוואריאנט BASIC09 מסביבות שנת 1979.

[עריכה] טיפוסי נתונים

בייסיק ידועה בפונקציות הטובות שלה לטיפול במחרוזות. דיאלקטים מוקדמים כבר כללו מספר פונקציות יסודיות (LEFT$, MID$, RIGHT$) לפעולות על מחרוזות. מכיוון שנעשה שימוש רב במחרוזות ביישומים של יום-יום, זה היה יתרון משמעותי של נוחות, על פני שפות רבות אחרות בזמן שבייסיק הוצגה.

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

לכל דיאלקט בייסיק מודרני קיימים טיפוסי מספר ומחרוזת. טיפוסי נתונים בדרך-כלל מובחנים על ידי תו-מבחין ("sigil") שנוסף בסוף; באופן טיפוסי, מזהי מחרוזת מסתיימים עם '$', בעוד שמספרים שלמים בדרך-כלל מסתיימים עם '%'. במספר דיאלקטים, משתנים חייבים להיות מוצהרים לפני השימוש הראשון בהם (באמצעות הצהרת ה-DIM); דיאלקטים אחרים אינם דורשים זאת, אבל יש להם אפשרות לחייב זאת - בדרך כלל בשימוש בהוראה כמו Option Explicit (בעברית "אפשרות של מפורש"). לדוגמה, ב-ויז'ואל בייסיק הצהרת משתנים מפורשת איננה בגדר חובה, אך ניתן לתת הנחיה למפרש/מהדר לבדוק שכל המשתנים הוגדרו - באמצעות ההוראה Option Explicit לפני התחלת הקוד. אפשרות זו מסייעת למצוא משתנים ש"אבדו" בסבך הקוד ושמם השתנה בטעות.

דיאלקטים רבים גם תומכים בטיפוסים נוספים כמו מספרים שלמים בני 16 או 32 סיביות, ומספרי נקודה צפה. לחלק יש טיפוסים של "polynomial" ("פולינומים"), "complex" ("מרוכב"), "list" ("רשימה"), וטיפוסים ממוקצעים שתוכננו לתמוך בצרכים של משתמשי קצה מסוימים. בנוסף, חלק מהדיאלקטים מרשים הצהרת טיפוסים שהוגדרו על ידי המשתמש באופן דומה לרשומות ("record") של פסקל או למבני ה-"struct" של C. הנה רוב הדיאלקטים של בייסיק מעבר לפרימיטיביים ביותר תומכים גם במערכים של מספרים או טיפוסים אחרים. בחלק מהם, חייבים להצהיר על המערכים מראש (כלומר להקצות אותם עם הוראת ה-"DIM") לפני שניתן יהיה להשתמש בהם. תמיכה במערכים של שני ממדים או יותר, כמו גם מערכים של טיפוסים שאינם מספרים, היא נפוצה בבייסקים מתקדמים.

[עריכה] דוגמה להצהרת מערכים

DIM myIntArray(100) AS INTEGER
DIM myStringArray(50) AS STRING

חלק מהגרסאות יאפשרו רק את:

DIM myIntArray%(100)
DIM myStringArray$(50)

כתלות בדיאלקט של בייסיק, המערכים מתחילים מ-0, בעוד שאחרים מתחילים מ-1. באופן זה, בחלק מהם, הפקודות כמו הראשונה בדוגמה יגדירו מערך של 101 איברים של שלמים עם איברים מ-0 עד 100, אחרים יגדירו מערך של 100 איברים של שלמים עם איברים מ-1 ל-100, או באופן יותר נדיר מ-0 ל-99. קיימת אפשרות שניתן גם להגדיר את מספר האיבר הראשון לאחר מאשר 0 או 1, עם פקודה נוספת כמו Option Base. הדוגמה לעיל בבייסיק של מיקרוסופט תיצור מערך עם איברים ממוספרים מ-0 עד 100.

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

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

DIM myIntArray (10 TO 20) AS INTEGER

שיהיה מערך בן 11 איברים עם איברים שממוספרים מ-10 עד 20.

[עריכה] אופרטורים יחסיים ולוגיים

אופרטור משמעות
= שווה
<> שונה
> קטן מ
< גדול מ
=> קטן שווה
=< גדול שווה
NOT ניגוד לוגי
AND חיתוך לוגי ("וגם")‏
OR איחוד לוגי ("או")‏

ראוי לציין שאין הבחנה סימונית בין אופרטור ההשמה לבין האופרטור השיויון בבייסיק - סימן שווה יחיד משמש לשניהם. אולם, אם המתכנת מעוניין שיהיה הבדל נראה לעין בין השניים, יש שיטה להשיג זאת: מילת הברירה "LET" מאפשרת להשמות להיות מובחנות באופן חד משמעי מהשימוש של אופרטור ה-"שווה ל". לדוגמה: IF X=7 THEN LET Y=3.

כמו כן ראוי לציין שהאופרטורים "AND", "OR" ו-"NOT" הם למעשה אופרטורים אריתמטיים מונחי-סיביות. ניתן להשתמש בהם גם כפעולות לוגיות, מפני שמרבית הדיאלקטים של בייסיק מייצגים את הערכים הבוליאנים על ידי -1 (עבור "אמת") ועל ידי 0 (עבור "שקר"). אולם, הם מזכירים את האופרטורים האריתמטיים מונחי הסיביות ב-C וב-C++ &, | ו-~ בהתאמה יותר מאשר את האופרטורים הלוגיים &&, || ו-!: למשל, "AND" ו-"OR" תמיד מחשבים את שני הארגומנטים שלהם (הם אינם אופרטורים מקצרים).

[עריכה] דוגמאות

[עריכה] תוכנית ראשונה

מתכנתי בייסיק חדשים שעובדים על מחשב ביתי עשויים להתחיל עם תוכנית פשוטה הדומה לתוכנית Hello world ("שלום עולם") שנעשתה מפורסמת על ידי קרנינגהן וריצ'י. מה שבדרך כלל כרוך בכך הוא שימוש פשוט של פקודת ה-"PRINT" של השפה כדי להציג את ההודעה (כמו שמו של המתכנת) על המסך. פעמים רבות, נעשה שימוש בלולאה אינסופית כדי למלא את התצוגה בהודעה.

[עריכה] בייסיק קלאסי

ראוי לציין שדוגמה זו היא מובנית היטב - מה שמדגים שהשימוש בפקודת GOTO אינו בהכרח מביא לתוכנית לא מובנית.

10 INPUT "What is your name: "; U$
20 PRINT "Hello "; U$
30 REM
40 INPUT "How many stars do you want: "; N
50 S$ = ""
60 FOR I = 1 TO N
70 S$ = S$ + "*"
80 NEXT I
90 PRINT S$
100 REM
110 INPUT "Do you want more stars? "; A$
120 IF LEN(A$) = 0 THEN GOTO 110
130 A$ = LEFT$(A$, 1)
140 IF (A$ = "Y") OR (A$ = "y") THEN GOTO 40
150 PRINT "Goodbye ";
160 FOR I = 1 TO 200
170 PRINT U$; " ";
180 NEXT I
190 PRINT

[עריכה] בייסיק מודרני

דיאלקטים מובנים "מודרניים" של בייסיק (לדוגמה QuickBASIC, FreeBasic, PureBasic, Blitz BASIC, PowerBASIC ו-‎TrueBASIC, תומכים בפקודות קלאסיות כמו הצהרות ה-GOTO במידות שונות, כשהן מוסיפות עוד מילות מפתח מודרניות רבות אחרות.

הדוגמה הקודמת ב-QuickBASIC:

INPUT "What is your name"; UserName$
PRINT "Hello "; UserName$
DO
   INPUT "How many stars do you want"; NumStars
   Stars$ = ""
   Stars$ = REPEAT$("*", NumStars)   ' <- ANSI BASIC
   ''--or--''
   Stars$ = STRING$(NumStars, "*")   ' <- MS   BASIC
   PRINT Stars$
   DO
      INPUT "Do you want more stars";  Answer$
   LOOP UNTIL Answer$ <> ""
   Answer$ = LEFT$(Answer$, 1)
LOOP WHILE  UCASE$(Answer$) = "Y"
PRINT "Goodbye ";
FOR I = 1 TO 200
   PRINT UserName$; " ";
NEXT I
PRINT

לשם השוואה, אותה התוכנית במימוש PureBasic המודרני יותר:

OpenConsole()
PRINT("What is your name ")
UserName$ = INPUT()
PrintN("Hello " + UserName$)
Repeat
   PRINT("How many stars do you want ")
   NumStars = VAL(INPUT())
   Stars$ = RSET("", NumStars, "*")
   PrintN(Stars$)
   Repeat
      PRINT("Do you want more stars ")
      Answer$ = INPUT()
   UNTIL Answer$ <> ""
   Answer$ = Left(Answer$, 1)
UNTIL UCase(Answer$) <> "Y"
PRINT("Goodbye ")
FOR I = 1 TO 200
   PRINT(UserName$ + " ")
NEXT I
PrintN("")
CloseConsole()

[עריכה] ההיבט הישראלי

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

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

[עריכה] ראו גם

[עריכה] הערות

  1. ^ ראשי התיבות הופיעו בשמו של מאמר שלא פורסם של תומאס קורץ והן אינן ראשי תיבות שהומצאו בדיעבד כפי שלעתים נטען.
  2. ^ ראו את מכתבו של דייקסטרה משנת 1968: "Go To Statement Considered Harmful". המאמר לא הזכיר שפת תכנות מסוימת אלא הצהיר שהשימוש המוגזם ב-GOTO מזיק בשל כמה סיבות תכניות. במאמר סרקסטי משנת 1975 "How do We Tell Truths that Might Hurt" ("כיצד אנו מבחינים באמיתות שעלולות לכאוב"), Sigplan Notices Volume 17 No. 5, דייקסטרה מביא רשימה של "אמיתות" לא נוחות, כולל את דעתו על מספר שפות תכנות דאז, כמו BASIC. יש לציין,כי BASIC לא זכתה לביקורת חריפה יותר מאשר PL/I, COBOL או APL;

[עריכה] מראי מקום

[עריכה] סטנדרטים

  • ANSI/ISO/IEC Standard for Minimal BASIC:
    • ANSI X3.60-1978 "FOR MINIMAL BASIC"
    • ISO/IEC 6373:1984 "DATA PROCESSING - PROGRAMMING LANGUAGES - MINIMAL BASIC"
  • ANSI/ISO/IEC Standard for Full BASIC:
    • ANSI X3.113-1987 "PROGRAMMING LANGUAGES FULL BASIC"
    • ISO/IEC 10279:1991 "INFORMATION TECHNOLOGY - PROGRAMMING LANGUAGES - FULL BASIC"
  • ANSI/ISO/IEC Addendum Defining Modules:
    • ANSI X3.113 INTERPRETATIONS-1992 "BASIC TECHNICAL INFORMATION BULLETIN # 1 INTERPRETATIONS OF ANSI 03.113-1987"
    • ISO/IEC 10279:1991/ Amd 1:1994 "MODULES AND SINGLE CHARACTER INPUT ENHANCEMENT"

[עריכה] קישורים חיצוניים


שפות תכנות

Ada | ALGOL | Awk | Assembly | Basic | BCPL | C | C++ | C# | Cobol | Delphi | Eiffel | Forth | Fortran | Haskell | Java | LISP | Logo | Miranda | Modula-2 | Oberon | Ocaml | Pascal | PHP | Perl | PL/I | PL/SQL | Prolog | Python | REXX | SQL | Ruby | Smalltalk | Visual Basic | Visual Basic .NET


aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -