BASIC

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук
BASIC Бейсик
Парадигма: структурна, потім процедурна
Дата появи: 1963
Творці: Джон Кемені і Томас Курц
Система типізації: статична, жорстка, безпечна
Основні реалізації: Apple BASIC, BBC BASIC, Microsoft BASIC
Під впливом від: ALGOL 60, FORTRAN II
Вплинула на: COMAL, Visual Basic, Visual Basic .NET, Gambas

BASIC (Бейсик[1]) — (від анг. basic - початковий, елементарний) мова програмування високого рівня, метою створення якої було отримати просту в користуванні мову для початківців. Мова набула поширення у 1980-х, і лишається популярною й досі, маючи чимало діалектів. Мову було створено у 1963 професорами Дартмутського коледжу Джоном Кемені і Томасом Курцом.

Назва мови є акронімом від фрази англ. Beginner's All-purpose Symbolic Instruction Code, що означає «універсальний код символьних інструкцій для початківців».

Зміст

Історія[ред.ред. код]

Передумови[ред.ред. код]

До середини 1960-х комп'ютери були надто дорогими машинами, що використовувались лише для особливих задач, і виконували лише одну задачу за раз (т. з. пакетна обробка). Однак, протягом 1960-х, ціна на комп'ютери стала падати так, що, навіть, невеликі компанії могли їх собі дозволити. Швидкість комп'ютерів збільшувалась, і настав час, коли вони часто почали простоювати, не розв'язуючи задач.

Мови програмування тієї ери, як і комп'ютери, на яких вони використовувались, були розроблені для специфічних задач, таких як наукові обчислення. Оскільки машини були дорогими і лише одне завдання могло виконуватись за раз, то й машинний час було дорогим — тому швидкість обчислення стояла на першому місці.

У той же час зростала популярність систем із розділенням часу. В таких системах, процесорний час розділявся і всі користувачі почергово отримували короткий відрізок цього часу. Машини були досить швидкими для того, щоб в результаті кожен користувач за терміналом відчував себе так, ніби він працює з системою один. Теоретично, розділення часу радикально знижувало вартість машинного часу, оскільки одна машина могла спільно використовуватись сотнями користувачів.

Народження[ред.ред. код]

Оригінальний Бейсик було вигадано у 1963 році Джоном Кемені і Томасом Курцом в Дартмутському колледжі, і, під їхнім керівництвом було реалізовано командою студентів коледжу. З часом, коли з'явились інші діалекти, цей «початковий» діалект стали називати Дартмутським Бейсиком (Dartmouth BASIC).

Бейсик було спроектовано так, щоб студенти могли писати програми, використовуючи термінали із розділеням часу. Він створювався, як вирішення проблем, пов'язаних зі складністю старіших мов. Він призначався для користувачів з простішими задачами, не стільки зацікавлених у швидкості обчислень, скільки в можливості використовувати комп'ютер для вирішення своїх задач.

В проектуванні мови використовувались такі вісім принципів: нова мова має

  1. бути простою у використанні для початківців
  2. бути мовою програмування загально призначення
  3. надавати можливість розширення функціональності, доступу досвідченим програмістам
  4. бути інтерактивною
  5. надавати ясні повідомлення про помилки
  6. швидко працювати на невеликих програмах
  7. не вимагати розуміння роботи апаратного забезпечення
  8. захищати користувача від операційної системи

Мова часткого ґрунтувалась на FORTRAN II і, частково, на ALGOL 60, з додатками, які робили мову зручнішою для роботи в режимі розділення часу, і, пізніше, обробки тексту та матричної арифметики. Спершу Бейсик було реалізовано на мейнфреймі GE-265 з підтримкою великої кількості терміналів. Всупереч розповсюдженій думці, на момент своєї появи це була компіляторна мова. Кількома роками пізніше, дуже поважний спеціаліст у галізу програмування Едсгер Дейкстра, висловив думку, що використання оператора GOTO, що існував у багатьох мовах, в тому числі, в Бейсику, сприяло поганій практиці програмування. Дехто також висміював Бейсик за його повільність і простоту.

Автори мови вирішили, що вона має належати громадскості, тому мова швидко набула поширення. Також, чимало часу автори витрачали на популяризацію мови. В результаті, знання мови Бейсик стало досить поширеним, і її було реалізовано численною кількістю виробників. Особливої популярності мова набула на нових мінікомп'ютерах на зразок DEC PDP та Data General Nova. На цих машинах мову було реалізовано як інтерпретатор, а не як компілятор.

Вибуховий ріст[ред.ред. код]

Попри те, що мова вже використовувався на кількох мінікомп'ютерах, її справжнє розповсюдження розпочалось з появи на мікрокомп'ютері Altair 8800. Більшість мов програмування були надто великими, щоб вміститись у невелику пам'ять, яку користувачі цих машин могли собі дозволити. Для машин з таким повільним носієм, як паперова стрічка (пізніше — аудіо-касета), і відсутністю належного текстового редактора, така невелика мова, як Бейсик, була чудовою знахідкою. BASIC, також, мав ту перевагу, що, завдяки зусиллям Кемені та Курца, він був добре знаний юними програмістами, що цікавились мікрокомп'ютерами в ті часи. Одним з перших для цієї машини був Tiny BASIC, проста реалізація Бейсика, написана доктором Лі-Чен Ванґом і, пізніше, перенесена на Altair Деннісом Еллісоном на прохання Боба Альберта (він пізніше заснував Dr. Dobb's Journal). Повний код Tiny BASIC було опубліковано у 1976 у Dr. Dobb's Journal.

У 1975 Microsoft (тоді, це лише двоє — Білл Гейтс і Пол Аллен, за участі Monte Davidoff) випустили Altair BASIC. Потім його версії з'явились на іншій платформі під ліцензією і незабаром використовувались вже мільйони копій та варіантів; одним з варантів став стандартною мовою на Apple II. В 1979 Microsoft обговорювала з кількома постачальниками комп'ютерів (включно з IBM) ліцензування інтерпретатора Бейсик на їхніх машинах. Одну з версій було включено в ПЗП IBM PC — комп'ютер міг автоматично завантажуватись в Бейсик.

Зрілість[ред.ред. код]

В той період було створено кілька нових версій Бейсика. Microsoft продавала кілька версій для MS-DOS/PC-DOS, включаючи BASICA, GWBASIC (модифікація BASICA, що не вимагала ПЗП від IBM) і Quick BASIC. Borland, відома своїм Turbo Pascal, в 1985 випустила Turbo BASIC 1.0 (його нащадки пізніше продавались під назвою PowerBASIC). На домашніх комп'ютерах з'явились різні розширення Бейсика, зазвичай так, що включаюли засоби для роботи із звуком, графікою, виконанням команд операційної системи, а також, засоби структурного програмування. Деякі інші мови використовували добре відомий синтаксис Бейсика в якості основи, на якій будувалась зовсім інша система (наприклад, GRASS).

Однак, починаючи з кінця 1980-х, нові комп'ютери були набагато складнішими, і надавали можливості (такі, як графічний інтерфейс користувача), які робили Бейсик вже не таким зручним для програмування. Бейсик почав здавати свої позиції, попри те, що величезна кількість його версій ще використовувалась і продавалась.

Фортуна знову повернулась до Бейсика з появою Visual Basic від Microsoft (скорочено MS VB). Хоча і важко погодитись, що ця мова справді є Бейсиком (незважаючи на велику кількість звичних ключових слів), з часом вона стала однією з мов, що використовуються найчастіше на платформі Windows — деякий час вона використовувалась на 70-80% всіх комерційних розробок. Microsoft створила варіант під назвою WordBasic та використовувала його в MS Word до появи Word 97. Microsoft вбудувала Visual Basic for Applications (VBA) в Excel 5.0 в 1993 році, потім в Access 95 в 1995, а, також, у всі інші інструменти, що входять в пакет Office — в 1997. Internet Explorer 3.0 і вище, а також Microsoft Outlook включали інтерпретатор мови VBScript. В повний варіант пакету OpenOffice також включено інтерпретатор Бейсика.

Основні поняття[ред.ред. код]

Призначення та версії мови[ред.ред. код]

Вважають, що назва мови утворена з перших букв англійських слів Beginner's All-purpose Sumbolic Instruction Code. У вільному перекладі це означає " мова програмування для початківців". Англійське слово Basic перекладають як елементарний, базовий (наприклад, набір знань). Перша версія мови налічувала 14 службових слів.

Train Basic everyday! — said a poster in Russian school

Мову бейсик розробили співробітники Дармудського коледжу (США) у 1964 р. з метою навчання студентів, і відразу здобула широке визнання. У 80-х роках інтерес до мови зменшився, оскільки її різноманітні версії не задовольняли вимог структурного програмування. Цей недолік було подолано у версіях мови Turbo Basic, Quick Basic та Power Basic. Спрощена версія Швидкого Бейсика (Quick Basic) - Qbasic - увійшла до комплекту програм операційної системи MS-DOS корпорації Microsoft.

Усі зазначені вище версії мови (Turbo Basic, Quick Basic, Power Basic, Qbasic) мають багато спільних елементів. Ознайомившись з ними, можна працювати практично з будь-якою версією. Можливості найновіших версій (компіляторів, що дають змогу створювати exe-файли настільки великі, що в багатьох випадках вони успішно конкурують з мовами Паскаль та Ci.

Мова бейсик постійно розвивається. Вона суттєво оновлюється після створення корпорацією Microsoft програмно середовища Visual Basic (VB), яке дає змогу користувачам засобами візуального програмування складати власні програми для операційної системи Windows. Більшість програмних засобів у Microsoft створені засобами цієї мови. Для розширення можливостей таких програм, як MS Word, MS Excel, MS Access ті інших корпорація Microsft розробила версію VB під назвою Visual Basic for Applications )VBA).

Наступне удосконалення мови - Visual Basic .NET, що є складовою інтегрованого середовища створення програм Visual Studio .NET. Середовище - це програмний комплекс, що автоматизує процеси створення, налагодження та виконання програм користувача.

Visual Basic .NET дає змогу не лише створювати типові навчальні програми, що можна робити і в середовищі Qbasic, чи типові Windows-проекти, для чого достатньо середовища Visual Basic, але й високопрофесійні програми для роботи в локальній мережі, а також в інтернеті з характерним web-інтерфейсом, що запускаються з сервера, доступ до яких здійснюється за допомогою браузера.

Алфавіт мови[ред.ред. код]

Алфавіт мови складається з таких символів:

  • цифр від 0 до 9;
  • символів математичних операцій (+,-,*,/,^);
  • символів відношення (=, <,> та інших);
  • розділових символів (крапка, кома, двокрапка, крапка з комою, лапки, круглі дужки, пропуск);
  • спеціальних символів (!,#,$,%,^,& та інших).

Алфавіти можуть несуттєво відрізнятися в різних версіях мови. За допомогою символів алфавіту будуть елементи мови: службові слова, імена змінних, числа, вирази, імена, функції та інші.

Службові слова та команди мови[ред.ред. код]

Програми складається з команд. Іноді команди називаються операторами, вказівками, реченнями. За призначенням команди поділяють на такі групи:

  • описові команди, які використовують для опису даних, типів змінних, розмірів масивів, нестандартних функцій тощо;
  • команди введення-виведення даних, які використовують для введення виведення інформації, зокрема, для організації діалогу користувача з комп'ютером.
  • команди для обчислень і керування процесами опрацювання інформації: команди присвоєння, переходу, розгалуження, циклів тощо;
  • інші команди, які забезпечують додаткові можливості: команди для роботи з файлами даних, команди для графічних побудов, отримання звукових ефектів тощо.

Команди складаються з неподільних елементів мови (літералів): службових слів, чисел, символів операції тощо. Службові слова прийнято записувати прописними літерами, то програма Qbasic автоматично переписує його прописними. Основні службові слова мови Qbasic.

DATA дані
DIM оголошення змінних
END кінець
FOR-TO-STEP для-до-крок
FUNCTION опис функції
GOTO перейти до
IF-THEN якщо-то
INPUT ввести
LET нехай
DO-LOOP цикл
NEXT наступний
ON при
OPTION BASE задати базу
PLAY грати
PRINT друкувати
READ читати
REM пояснення
RESTORE відновити
RETURN повернутися
WHILE-WEND цикл "доки"

Структура Qbasic-програм[ред.ред. код]

Бейсик-програма складається з програмних рядків. Один програмний рядок не повинен бути довшим, ніж 255 символів. У середовищі Qbasic під час створення довшого, ніж 80 символів програмного рядка відбувається скролніг - зміщення тексту ліворуч, тому використовувати довгі рядки не рекомендують.

У середовищі VB частину команди можна переносити. У цьому випадку використовують символ переносу «_», який розташовують у кінці рядка після лексеми (неподільного елемента мови) і пропуска. Для переходу на наступний рядок натискають на клавішу вводу.

В одному рядку можна розмістити одну або декілька команд, відокремлених одна від одної двокрапкою (:).

У ранніх версіях мови програмний рядок починався з номера. Номер програмного рядка - це ціле число з деякого діапазону, наприклад, від 1 до 65535. Команди виконувались за зростанням номерів відповідних рядків. Для зручності програмні рядки нумерували числами з певним інтервалом, наприклад, з інтервалом 10: 10, 20, 30... Це давало змогу системі автоматично вставляти в середину програми пропущені й згодом й згодом додатково введені програми рядками: 15, 17, 25 тощо. У сучасних версіях номери рядків можна не писати. Тут вони не впливають на черговість виконання команд програми. Якщо ж номери є, то система трактує їх як мітки (позначки). Після номера рядка можна ставити двокрапку.

Типи даних[ред.ред. код]

Текстові дані[ред.ред. код]

Дане - це деяка інформація, наприклад, числова чи текстова, яку опрацьовують за допомогою комп'ютера.

Залежно від характеру інформації дані поділяють на типи. Тип визначає допустимі значення даного, а також операції, які можна над ним виконувати.

Розглянемо два основні типи даних: текстові (інші назви - символьні, літерні, рядки) та числові.

Текстові дані - це тексти, записані у подвійних лапках, наприклад, "Інформатика","Маса", "2012".

Текстові дані застосовують, зокрема, в команді виведення PRINT для створення заголовків та пояснення результатів, наприклад, PRINT "Це розв'язок задачі" або PRINT "P=", P. Лапки на екран не виводиться.

Числові дані[ред.ред. код]

Числові дані призначені для роботи з числовою інформацією. В інформатиці розрізняють числа цілі (1, -25, 100) та дійсні (-1.0, -15.2, 12.25). Дійсні дані зазвичай містять у своєму зображенні десяткову крапку. Цілі числа зображують цифрами без крапки.

Дійсні числа. Є дві форми зображення дійсних чисел: 1) з фіксованою крапкою, 2) з плаваючою (руховою) крапкою.

У зображеннях чисел з фіксованою крапкою розміщення десяткової крапки безпосередньо вказує на величину числа. Наприклад: 2., -10., 0.00006, 9000000.

У математиці для зручного написання дуже великих або дуже малих чисел є показникова (наукова) форма їх зображення: 0,000006 = 0,6·10−5, 900000000 = 9·108.

Число у показниковій формі має загальний вигляд ±m - мантиса, а ±p порядок числа. Знак "+" можна опускати. Знак "-" опускати не можна. У мовах програмування відповідне число зображають так:

±mE±p

Наприклад, одне й те ж число 0,0000006 можна записати різними способами: 0.6E-5, 6.0E-6, .06E-4.

Оскільки розміщення десяткової крапки в мантисі явно не вказує на величину числа, то кажуть, що "крапка плаває". Тому таке зображення числа називають зображенням з плаваючою крапкою. Наприклад, число 12,5 можна записати так:
12.5, 12.5E0, 1.25E+1, 125.E+1, 0.125E+2.

Типи даних[ред.ред. код]

Цілі дані поділяють на короткі (назва типу INTEGER): -45, 135, 32765 та довгі (LONG): 32769, -234565500.

Оперативну пам'ять комп'ютера вимірюють байтами. В одному байті може зберігатися один символ алфавіту або число зі значенням від 0 до 255, або від -127 до 128.
У Qbasic значення коротких цілих даних (INTEGER) займають по 2 байти в пам'яті комп'ютера, а довгих цілих (LONG) - по 4.Тому цілі короткі дані мають значення в діапазоні від -32768 до 32767, а цілі довгі - орієнтовно до плюс-мінус двох мільярдів. У VB і VB.NET дещо інакше: цілі типу SHORT займають 2 байти, типу SNTEGER - 4, а типу LONG - 8 байтів.

Дійсні дані. Розрізняють такі типи числових дійсних даних:

1) короткі (одинарні, чотирибайтні, назва типу SINGLE) до 7 цифр у мантисі;
2) довгі (подвійні, з подвійною точністю, назва типу DOUBLE) - до 15 цифр. Для зберігання довгих даних система відводить удвічі більше пам'яті (8 байтів), ніж для коротких.

Константи[ред.ред. код]

Числам чи текстами можна надавати імена за допомогою команди оголошення сталих CONST

CONST <ім'я 1> = <вираз 1>, <ім'я 2> = <вираз 2>, ...

Команду записують в одному програмному рядку або, якщо сталих багато, кожний наступний рядок має починається зі службового слова CONST. Кутові дужки < > тут призначені для формального запису команд, у фактичних командах їх не пишуть. Наприклад,

CONST Pi = 3.1415926, A = "Програмування".
Дія команди. Обчислюються значення виразів і результати присвоюються відповідним сталим. Дані Pi та A називають сталими.
Сталі дані не можуть змінити свого значення під час виконання програми. За цією ознакою дані в програмуванні поділяються на сталі та змінні.

Змінні[ред.ред. код]

У математиці та фізиці величинами дають імена: стороні - a, висоті - h, часу - t, площі чи шляху - s тощо. Аналітично у програмуванні. Фізичні величини зазвичай можуть міняти свої значення, тобто є змінними. Саме цим терміном у програмуванні прийнято називати дані, які можуть міняти свої значення під час виконання програми.

Змінна - це поіменована ділянка оперативної пам'яті комп'ютера, де зберігаються значення деякої величини. Змінна має такі властивості: назву, значення, тип.

Назву змінних надає користувач. У ранніх версіях мови використовували короткі імена, які складаються з одної літери або з літери і цифри. Приклади коротких назв змінних: A, A1, A6, C6.

У нових системах імена можуть бути довшими і складаються як з великих, так і з малих латинських літер (і цифр), наприклад, Myname1, Myname2. Цифра не може бути першим символом в імені. Регістр значення не має. Імена d i D позначають одну і ту ж саму змінну.
Під час складання програми імена змінним варто надавати, керуючись змістом задачі, наприклад, суму можна позначати буквою S, добуток - D, аргументи x1, x2 деякої функції - X1, X2.

Типи даних[ред.ред. код]

Змінні бувають числові та текстові. Поділ змінних на типи користувач може зафіксувати у програмі різними способами. Їх є чотири:

1) принципи замовчування;
2) спеціальні символи: $, % чи &, ! чи #;
3) команди описування типів DEF;
4) команди оголошення змінних DIM.

Використання принципу замовчування. Якщо в програмі немає описів типів, то Qbasic розглядає змінні як короткі дійсні числові, а VB - як довгі дійсні числові. Однак текстові змінні потрібно описувати завжди. Для цього до імені текстової змінної змінної дописують спеціальний символ $, на приклад A$, A1$.

Використання спеціальних символів. Щоб зазначити явно типи змінних, до їхніх імен дописують спеціальні символи (суфікси).
До змінної цілого типу можна дописати символ % (коротке дане) або символ & (довге дане), наприклад, A1%, C&.
Оголосити короткі чи довгі дійсні змінні можна за допомогою символів ! чи # відповідно. Наприклад, D!, X1 #.
Імена текстових змінних закінчується суфіксом $, наприклад, B5$, C$, M$(8).
Спеціальні символи можна дописувати до чисел, наприклад: 5%, 534778&, 5.2!, 45246.34534#, але це робити необов'язково.

Використання команд описування типів. У більшості сучасних мов програмування спеціальні символи для описування типів змінних не використовують, тому в мові Бейсик варто надавати перевагу командам опису типів або принципу замовчування.

Команди описування типів записують на початку програми. У Qbasic використовують такі команди:
Опис змінних Призначення
DEFINT список літер Для змінних цілого короткого типу
DEFLNG список літер Для змінних цілого довго типу
DEFSNG список літер Для дійсних коротких змінних
DEFDBL список літер Для дійсних довгих змінних
DEFSTR список літер Для змінних символьного типу

Приклад 1. Цілі змінні A, B, C, D можна описати так:

DEFINT A, B, C, D

або так:

DEFINT A, B : DEFLNG C, C.

Приклад 2. Щоб проінформувати систему, що всі змінні, які починаються із символів A, B, C, D, K, M, є змінними цілого типу, із символів E, F дійсного короткого типу, із P, Q текстового типу, на початку програми записують такі команди:

DEFINT A-D, K, M
DEFSNG E, F
DEFSTR P, Q.
Зверніть увагу на дефіс у першій команді. Тут він замінює перелік елементів списку через кому (A, B, C, D).
Використання команди оголошення змінних DIM. Для оголошення змінних у сучасних версіях мови застосовують команду DIM
DIM <змінна 1> AS <тип 1>, <змінна 2> AS <тип 2>
DIM <змінна 3> AS <тип 3>, ...

Приклад 3. Цілі змінні A, B, дійсні C, D та текстову H можна оголосити так:

DIM A AS INTEGER, B AS INTERGER, C AS DOUBLE
DIM D AS DOUBLE, H AS STRING*10.

Текстові дані (назва типу STRING) можуть містити у Qbasic до 255 літер і займати в пам'яті до 256 байтів (у VB ці дані значно довші). Якщо заздалегідь відомо, що кількість літер у тексті не перевищує числа n,то тип цього даного описують як STRING*n.

Команди присвоєння. Функції. Вирази.[ред.ред. код]

Прості (лінійні) програми складаються з команд присвоєння, введення-виведення даних та викликів процедур.

Команда присвоєння.[ред.ред. код]

Команду присвоєння використовують для надання початкового значення змінній або для зміни її поточного значення. Команда присвоєння має вигляд

LET <A> = 

Тут A - назва змінної, B - вираз, символ = тут є символом присвоєння. Службове слово LET є необов'язковим.

Вираз призначений для описування формул, за якими виконуються обчислення. Вираз може складатись з чисел, змінних, назв функції, які з'єднані символами операцій.

Дія команди. Обчислюється значення виразу B і результат присвоюється змінній A. Попереднє значення змінної A втрачається.

Зауваження. Використання службового слова LET у всіх версіях мови є необов'язковим і його надалі писати не будемо.

Приклад 1. Розглянемо фрагмент програми:

A = 5 : B = 10 : C = -2.6
D = (A + B) / (B - A) + C.

Приклад 2. У багатьох задачах потрібно лічити кількість деяких об'єктів (позначмо їх іменем K) або суму (S) величин Y. Відповідні команди присвоєння матимуть такий вигляд:

K = K + 1 'так обчислюють кількість
S = S + Y 'так обчислюють суму S значень Y.

Перетворення типів.[ред.ред. код]

Якщо числовий тип змінної A в команді присвоєння не відповідає числовому типу виразу B, то після обчислення виразу результат автоматично перетворюється до типу змінної A. Наприклад, якщо в програмі про кулю написати написати команду:

S% = 4 * Pi * R^2,
то результат заокруглиться до цілого значення - 1006. Не можна числовій змінній присвоювати текстове значення, а текстовій - числове.

Арифметичні вирази[ред.ред. код]

Арифметичні вирази призначені для описування послідовності дій (операцій) з числовими даними. Вони дають змогу за допомогою позначень, близьких до математичних, описувати у програмі складні формули. Результатом обчислення арифметичного виразу є число.

Арифметичні вирази будує користувач відповідно до умов задачі, комбінуючи сталі, змінні, функції за певними правилами і поєднуючи їх за допомогою символів операції.
Над числовими даними виконують такі операції:
  • піднесення до степеня (^);
  • множення (*) та ділення (/);
  • додавання (+) та віднімання (-).

Операції \ та MOD.[ред.ред. код]

Над цілими даними виконують ще дві операції:

  • цілочислового ділення(символ \);
  • обчислення остачі двох чисел (слово MOD).

Перша операція відкидає дробову частину результату, наприклад, 5 \ 2 = 2, 359 \ 100 = 3, а 5 MOD 2 = 1, 17 MOD 3 = 2.

Задача 1. Дано тризначне ціле число A. Обчислити суму його цифр.

Позначимо шукані цифри C1, C2, C3, а суму - S. Розглянемо будь-яке тризначне число, наприклад 357, і переконаємося, що такі команди присвоєння забезпечують відшукання суми (15) його цифр:
'Програма Сума чисел
A = 357
C1 = A \ 100
C2 = A \ 10 MOD 10
C3 = A MOD 10
S = C1 + C2 + C3
PRINT "S ="; S

Послідовність виконання операції[ред.ред. код]

У виразах така ж, як у математиці. Її описують правилом пріоритетів (порядком виконання операції).

Є чотири рівні пріоритетів:

1) обчислюються значення функцій, якщо вони є у виразі;

2) виконуються всі наявні операції піднесення до степеня;

3) виконуються операції множення та ділення;

4) виконування операції додавання та віднімання.

Операції одного рівня виконуються послідовно зліва направо. Для зміни природної послідовності виконання операції використовують круглі дужки. Кількість відкритих і закритих дужок у виразі повинна бути однаковою. Спочатку обчислюються вирази у дужках. Якщо є вкладені дужки, то спочатку обчислюються вирази у внутрішніх дужках, а потім у зовнішніх та ін.

Оформлення виразів. Вирази записують у Qbasic в одному або (якщо допускає версія мови, наприклад VB) у кількох рядках без дублювання символів арифметичних операцій у випадку переносу. Є таке обмеження на оформлення виразів під час написання програми: показник степеня, індекси, чисельники та знаменники розміщують у горизонтальному рядку. Потрібно уважно записувати знаменник. У багатьох випадках їх беруть у дужки. Зайва пара дужок у складному виразі не призводить до помилки.
Тип результату. В арифметичному виразі використовують числові сталі та числові змінні різних типів - цілі, дійсні. Тип результату буде цілим тільки тоді, коли всі операнди будуть цілого типу. Наприклад, результат A% + B% буде цілого типу, а результати дій A + B% чи A + B - дійсного, якщо заздалегідь не оголошено, що змінні A та B є цілого типу. Результат ділення двох чисел A / B завжди є даним дійсного типу.

Стандартні математичні функції.[ред.ред. код]

Функції поділяють на стандартні та нестандартні. Аргумент функції завжди беруть у круглі дужки. Аргументом може бути стала, змінна, арифметичний вираз, інша стандартна функція. Основні стандартні функції наведені в табл.

Стандартні функції

Функція Математичний запис Коментар
SIN(X) sin x x задають у радіанах
COS(X) cos x x задають у радіанах
TAN(X) tg x x задають у радіанах
ATN(X) arctg x Арктангенс x
ABS(X) x| Модуль (абсолютна величина) x
SQR(X) x Квадратний корінь x
LOG(X) ln x Логарифм натуральний x
EXP(X) ex Експонента
INT(X) x Найбільше ціле число, яке не перевищує x
FIX(X) Ціле число, що утворюється відкиданням дробової частини числа x
RND(X) Випадкове число з проміжку від 0 до 1 (не беручи 1)
SGN(X) sign x

Приклад 3. Значеннями функції TAN(0), ABS(-2), SQR(3*35), INT(2.5) INT(-2.5) є відповідно 0, 2, 2, 2, -3.

Прості програми[ред.ред. код]

Структура простої програми[ред.ред. код]

Проста (лінійна) програма складається переважно з команд уведення-виведення даних (READ, INPUT, PRINT), команди присвоєння (LET), зупинки (STOP) та виходу (END) з програми, з команд-коментарів та ін. Ці команди називають простими. Розглянемо деякі з них.

Команду-коментар REM використовують для внесення пояснень у текст програми:

REM <текст пояснення>

або

' <текст пояснення>

Це пояснення може розміщуватися у будь-якому місці програми, але в рядку має бути єдиною або останньою. Вона не впливає на виконання програми.

Команда зупинки STOP. Команда зупинки виконання програми може бути у будь-якому місці програми:

STOP

Ця команда зупиняє виконання програми і на екран виводиться повідомлення про це. Часто цю команду використовують, щоб переписати проміжні результати з екрана монітора. Виконання програми можна продовжити за допомогою команди Continue з меню середовища Qbasic (або натискають на клавішу F5).

Команда END. Команда закінчення роботи програми має вигляд

END

Ця команда є необов'язковою у програмі. Її можна не писати.

Команда SWAP.[ред.ред. код]

Обмін значеннями між двома змінними можна виконати за допомогою спеціальної команди, яка має вигляд

SWAP A, B

Тут A та B - імена змінних, які обмінюються значеннями.

Приклад 1. У результаті виконання програми

A = 7 : B = 5
SWAP A, B
PRINT A, B

на екрані монітора будуть виведені значення 5 і 7.

Без цієї команди для обміну даними необхідно вводити проміжну змінну C. Програма виглядатиме так:
A = 7 : B = 5
C = A : A = B : B = C
PRINT A, B

Розгалуження[ред.ред. код]

Розгалуження - це алгоримічна конструкція, де перевіряється умова (значення логічного виразу), і залежно від її істинності чи хибності виконується та чи інша серія команд. Вивчатимемо такі види розгалужень: 1) повне; @) неповне; #) вибір.

Введення даних[ред.ред. код]

У Qbais є такі способи надання значень змінним:

1) за допомогою команди присвоєння;

2) за допомогою команди INPUT - уведення даних з клавіатури в режимі діалогу з комп'ютером;

3) за допомогою команди READ - зчитування та надання значень з блоку даних.

Використання команди присвоєння[ред.ред. код]

Команду присвоєння використовують також для надання значень змінним.

Приклад 1. Нехай змінній А потрібно надати значення 5, змінній В - 10, змінній С - -2.5, змінні D$ - значення "Україна". Відповідні команди матимуть такий вигляд:

A = 5 : B = 10 : C = -2.5 : D$ = "Україна"

Надання значень змінним за допомогою команди присвоєння є простим способом, але має два суттєві недоліки. По-перше, якщо є велика кількість вхідних даних, то потрібно записувати відповідну кількість команд присвоєння. По-друге, для повторного розв'язування задачі з іншими даними потрібно вносити змінні в усі команди присвоєння. Цих недоліків не мають інші способи.

Команда INPUT.[ред.ред. код]

Команда уведення даних з клавіатури INPUT дає змогу не вносити зміни у програму під час повторного її виконання. Вона має вигляд:

INPUT <список змінних>

У списку через кому чи крапку з комою пишемо імена змінних, значення яких здаватимемо з клавіатури, наприклад,

INPUT A, B, C, D$

Дія команди. Виконання програми тимчасово припиняється. На екрані монітора з'являється запит комп'ютера у вигляді знака запитання (?) і система чекає введення даних. Користуючись клавіатурою, набираємо список значень, розмежовуючи їх комами, і натискаємо на клавішу вводу.

Приклад 2. Розглянемо дію попередньої команди INPUT. Відповімо на запит комп'ютера таким чином:

? 5, 10, -2.5 "Україна" (Натискаємо на клавішу вводу).
Змінна А отримає значення 5, В - значення 10, С - значення -2.5, а D$ - значення "Україна". Лапки в текстових сталих можна не писати.

Для уникнення помилок під час уведення даних з клавіатури в команді INPUT, а саме:

INPUT "Введіть А, В, С, ТЕКСТ" ,A; B; C; D$.

Отже, за допомогою команди INPUT значення змінних вводять у відповідь на запит комп'ютера, тобто у режимі діалогу користувача із системою.

Команда READ (Qbasic)[ред.ред. код]

Команда READ надає значення змінним з блоку даних (блок розглянемо нижче). Вона має вигляд

READ <список змінних>

Список складається з імен змінних, записаних через кому, наприклад:

READ A,B,C,D$.

Значення змінним надають з блоку даних.

Блок даних - це список даних (наприклад: 2, 3, 4), значення яких присвоюють

відповідним змінним зі списку команди READ. Блок даних потрібно задати. Для цього використовують команду оголошення блоку даних, яка має вигляд

DATA <список даних>

Команда DATA не виконує активної дії. Вона є описовою. У список заносимо числові та текстові дані, наприклад:

DATA 5, 10, 2.5, "Україна".

Графіка[ред.ред. код]

Текстовий та графічний екрани[ред.ред. код]

Розміри текстового екрана у Qbasic визначають кількістю символів у горизонтальному та вертикальному. Найчастіше це 80 символів у рядку і 25 символів у стовпці.

Зображення символу виникає шляхом зміни кольору точок на ділянці екрана, де зображуються один символ. Ділянка може мати різні розміри, що залежить від типу монітора. Нехай ділянка має розміри 8 на 8 точок. Кількість точок на екрані буде такою: 640 точок у рядку та 200 точок у стовпці. Екран функціонує так: у кожну точку можна спрямувати сигнал, який змінить її колір. Якщо колір точки збігається з кольором навколишніх точок, тобто з тлом, то зображення точки на екрані буде невидиме.

Екран, який дає змогу працювати безпосередньо з точками, називають графічним.
Перехід від векторного (n=0) до графічного екрана виконують за допомогою команди SCREEN, а саме:
SCREEN n

Тут n - номер екрана, який визначає розподільну здатність. Наприклад, 2 - розподільна здатність 640x200 графічних точок, 16 кольорів, 1 відео-сторінка, 7 - 320x200 графічних точок, 2 відеосторінки, 8 - 640x200, 9 - 640x350, 11 або 12 640x480 тощо.

Розташування точки на екрані визначається її координатами - парою чисел (X,Y).

Кольори[ред.ред. код]

Кольори в програмі задають командою COLOR:


COLOR A, B, C || n = 0;
COLOR A, B|| n = 7-10;
COLOR A || n = 12


Тут A, B, C - числа або змінні. Значення А задає колір зображення, В - колір тіла, С - колір межі. Кольорів такі:

№ (номер) Колір
0 чорний
1 синій
2 зелений
3 блакитний
4 червоний
5 рожевий
6 коричневий
7 світло-сірий
8 темно-сірий
9 яскраво-синій
10 яскраво-зелений
11 яскраво-блакитний
12 яскраво-червоний
13 яскраво-рожевий
14 жовтий
15 білий

Приклад 1. Команда COLOR 0, 14, 3 забезпечують чорне зображення на жовтому тлі з блакитною межею текстового екрана. :Змінити колір точки можна за допомогою команди PSET

PSET (X,Y), D

Тут X - горизонтальна координатна точки; Y - вертикальна; D - колір; X, Y, D - сталі змінні або вирази.

Якщо кольори задані командою COLOR A, B то засвітити точку (X, Y) кольором А (на тлі В) можна так:
PSET (X,Y)

Приклад 2. Засвітити зеленим кольором точку з координатами (50, 100) можна так: PSET (50, 100), 2.

Загасити точку можна командою PSET (X,Y), B або командою
PRESET (X, Y)

Приклад 3. Загасити засвічену раніше точку можна так: PSET (50, 100).

Команду PRESET використовують також для розміщення графічного курсора в стартове положення (X, Y) під час побудови рисунків.

Зображення прямих і прямокутників[ред.ред. код]

Для зображення (рисування) прямої кольором D використовують команду LINE:

LINE (X1, Y1) - (X2, Y2), D

У дужках зазначають координати початку і кінця прямої. Координати початку можна опускати, якщо користувача влаштовують координати графічної точки, де є курсор. Отже, коротка форма команди має такий вигляд:

LINE - (X2, Y2)

У цьому випадку рисується (кольором A) пряма лінія від деякої поточної точки до точки з координатами (X2, Y2).

Приклад 4. З'єднати точки з координатами (50, 100) та (50, 150) червоною лінією можна так:

LINE (50, 100) - (50, 150),4 або LINE - (50, 150), 4.
Для зображення прямокутника використовують команду
LINE (X1, Y2), D, B

Тут у дужках задано координати діагонально протилежних вершин прямокутника.

Щоб розмалювати весь прямокутник кольором D, замість символу B пишуть символи BF.

Приклад 5 Нарисуємо квадрат і розмалюємо його яскраво-синім кольором: LINE (50,100) - (100, 150), 9, BF.

Для розмальовування замкнутих ділянок (не лише прямокутників) використовують команду PAINT:
PAINT (X, Y), D, C

Тут X, Y - координати будь якої точки, що лежить у середині замкнутої ділянки, яку розмальовують; D - колір розмальовування; C - колір межі ділянки.

Дія команди PAINT. Нехай межа ділянки (фігури) має колір C. У результаті виконання команди замкнута ділянка буде розмальована кольором D.

Приклад 6. Сонце можна намалювати так:

Програма "Сонце"
SCREEN 7
COLOR 5, 3
CIRCLE (160, 100), 70, 4  'Команда CIRCLE зображає коло.'
PAINT (160, 100), 14, 4
END

Зображення кола, дуги, сектора й еліпса[ред.ред. код]

Для зображення кола використовують команду CIRCLE:

CIRCLE (X, Y), R, D

Тут у дужках зазначено координати центра кола; R - радіус; D - колір.

Приклад 1. Команда CIRCLE (125, 100), 50, 4 нарисує червоне коло з радіусом 50 точок і центром у точці (125, 100).

Для зображення дуги кола використовують цю ж команду з додатковими параметрами:
CIRCLE (X, Y), R, D, A1, A2

Тут A1, A2 -кути початку та кінця дуги в радіанах (1 радіан - 57 градусів, а 90 градусів - це 1,57 радіан). Відлік ведуть проти годинникової стрілки.

Приклад 2. Чверть кола можна зобразити на екрані командою CIRCLE (125, 100), 50, 4, 0, 1.57.

Якщо A1 < 0 і A2 < 0, то попередня команда зображає на екрані комп'ютера круговий сектор, який використовують для побудови кругових діаграм.

Приклад 3. Чверть круга зображуємо так:

CIRCLE (125, 100), 50, 4, -1.57, -3.14.
Для зображення еліпса команду CIRCLE використовують з такими параметрами:
CIRCLE (X,Y), R, D,,, Z

Тут Z означає розтяг, якщо Z > 1, чи стиск, якщо Z < 1, еліпса у вертикальному напрямку. Розглянемо програму "Еліпси".

Програма "Еліпси"
SCREEN 7     'або 8'
COLOR 3, 1
FOR I=80 TO 20 STEP -4
 D=RND(1)*16
 CIRCLE(128,96),96,D,,,10/I
 CIRCLE(128,96),96,D,,,I/10
NEXT I
END

У результаті виконання програми отримаємо декілька еліпсів різних кольорів. Частина їх буде розтягнута, а частина стиснута.

Команда DRAW[ред.ред. код]

Команду DRAW використовують (лише у Qbasic)для рисування ліній різного кольору різної довжини у восьми допустимих напрямках. Вона має вигляд

DRAW текстова стала

Тут текстова стала - це послідовність параметрів-кодів, які позначають напрямок руху. Після кожного параметра стоїть число, яке вказує довжину лінії. Параметрів, що задають напрямок руху, є вісім. Стрілка пояснює, в якому напрямку комп'ютер рисує лінію на екрані.

Буква Напрямок
U
R
D
L
E ↑→
F ↓→
G ↓←
H ↑←

Приклад 4. За допомогою команди 30 DRAW "U30R40D30L40" можна нарисувати прямокутник, виходячи з деякої точки, заданої командою PSET, або з точки, де закінчила рисувати попередня команда, інакше рисування почнеться у центрі екрана.

Корисними є також такі три параметри: N, B, C.
Якщо на початку рядка символів зазначити параметром N, то після рисування лінії невидимий графічний курсор повернеться у стартову точку.
Якщо на початку рядка написати B, то графічний курсор переміститься у зазначеному іншими параметрами напрямку, нічого не рисуючи.
Якщо в середині рядка символів поставити параметр C з числовим значенням кольору, то колір ліній зміниться на заданий. Цей параметр діє тільки в межах команди DRAW.

Імітація руху об'єкта на екрані[ред.ред. код]

Для імітації руху зображення об'єкта на екрані потрібно виконати такий алгоритм:

1. Нарисувати об'єкт у заданій точці. 
2. Знищити об'єкт, замалювавши його кольором тла. 
3. Змінити координати об'єкта. 
4. Перейти до пункту 1.

Продемонструємо цей алгоритм на прикладі програми "Рух кола". На екрані зелене коло на чорному тлі рухатиметься вверх-вниз. Програма "Рух кола"

SCREEN 8
COLOR 2,1
Y = 10 : SY = 4
start: CIRCLE (120, Y), 40, 2       'Рисування кола'
CIRCLE (120, Y), 40, 1              'Стирання кола'
Y = Y + SY                          'Зміна y-координати центра'
IF Y < 10 OR Y > 190 THEN SY = -SY
GOTO start                          'Рисування кола'

Перервати виконання цієї програми можна акордом CTRL+Braek.

Для комп'ютерів з високою швидкістю процесора слід робити штучні паузи між рисуванням та стиранням об'єктів, щоб не втрачати їхнє правильне зображення на екрані.


(Ще не написано, автор втомився)

Див. також[ред.ред. код]

Стандарти[ред.ред. код]

  • ANSI X3.60-1978 «FOR MINIMAL BASIC»
  • ISO/IEC 6373:1984 «DATA PROCESSING — PROGRAMMING LANGUAGES — MINIMAL BASIC»
  • ANSI X3.113-1987 «PROGRAMMING LANGUAGES FULL BASIC»
  • ISO/IEC 10279:1991 «INFORMATION TECHNOLOGY — PROGRAMMING LANGUAGES — FULL BASIC»
  • 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»

Джерела[ред.ред. код]

Виноски[ред.ред. код]