Організація розвязку задач на сучасній ЕОМ
Етапи підготовки до розв'язання задачі на комп'ютері: вибір числового методу, розробка ефективного алгоритму рішення і побудова блок-схеми, складання та перевірка правильності програми, підрахунок і обробка результатів. Поняття алгоритмічної мови.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | украинский |
Дата добавления | 08.12.2010 |
Размер файла | 540,1 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Тема: Організація розвязку задач на сучасній ЕОМ
Зміст
задача комп'ютер алгоритм програма
1. Етапи підготовки та розвязку задачі на ЕОМ
2. Поняття алгоритму
3. Мова блок-схем
4. Алгоритмічні мови
1. Етапи підготовки та розвязку задачі на ЕОМ
І. Постановка задачі: отримані ті рівняння, які описують досліджуваний процес.
ІІ. Вибір числового методу. Передусім необхідно звести задані математичні співвідношення до послідовності арифметичних дій і логічних правил так, щоб вона добре відображала сутність заданої математичної задачі. Метод заміни якої-небудь функції, інтегралів і т.д. арифметичними виразами часто виявляються не єдиними, тому приходиться аналізувати декілька методів, вибираючи той з них, який краще відповідає вимогам поставленої задачі і враховує особливості компютера.
ІІІ. Складання алгоритму рішення задачі. Це етап планування послідовності арифметичних та логічних дій у відповідності з вибраним числовим методом. Алгоритм рішення задачі, як правило, виявляється не єдиним. Різні алгоритми відрізняються за своєю простотою, обємом обчислювальних робіт та ін., а від цих факторів залежить ефективність використання машини. Для розробки ефективного алгоритму, його доводиться декілька раз переробляти і на кожному етапі алгоритм потрібно яким-небудь чином фіксувати. Для цього найзручніше використовувати мову блок-схем.
ІV. Програмування - це переклад алгоритму рішення задачі на мову машини або проміжну алгоритмічну мову. Цей етап являється джерелом великої кількості помилок, так як потребує великої уваги.
"Програмування - дзеркало розуму" - писав Джералд Вейнберг."Шлях людства до створення науки про програми - це шлях до пізнання самих себе як інтелектуальних субстанцій".
"Як знаючи тільки алгоритм розвязку задачі, визначити час його програмування, та ще й оцінити кількість помилок, які будуть зроблені" На це питання не дасть відповіді жодна наука сьогодні - стверджують сьогодні багато.
"На помилках вчаться"- цей вислів в програмуванні слід памятати буквально.
- Крилов В.В.-доктор технічних наук, зав. Кафедри Горківського політеха.
Леді Лавлейс - дочка Байрона - 1843 р. - перша програмістка. 1843 р. стаття Л.Ф.Менабреа "Опис аналітичної машини, винайденої Беббіджем. З замітками перекладача". Машина Беббіджа -праобраз сучасної ЕОМ,яка вміщувала багато її особливостей. Перекладач - Ада Лавлейс. В замітках, що переважають за обємом статтю, зустрічаються терміни і поняття, що використовуються в сучасному програмуванні, наведені приклади перших у світі програм, змальовані перспективи розвитку обчислювальної техніки.
Беббідж - різницева машина - універсальна обчслювальна машина -аналітична машина, яка описана молодим італійським інженером Менабреа.
Традиційна архітектура машин зроблена Нейманом в 1945 р.- керуюча програма міститься в памті машини.
N |
код |
А1 |
А2 |
А3 |
Приклад |
|
0020 0021 0022 0023 0024 0025 |
05 05 05 01 01 04 |
0002 0006 0003 0010 0006 0011 |
0002 0006 0003 0010 0006 0011 |
0006 0007 0010 0011 0012 0013 |
x2 5x2 4x 4x+5x2 x2+7 y |
V. Відлагодження програми. Програма є загальним результатом всіх попередніх етапів і на кожному з них можуть бути допущені різного роду помилки. В результаті цього при виконанні складеної програми машина, як правило, видає нам не правильні результати або не видає їх зовсім. Тому перед тим як починати рахунок, програма повинна пройти етап відлагодження, під час якого виконується перевірка правильності програми, виявлення і усунення всіх допущених помилок. Цей етап є трудомістким і дуже відповідальним, так як непомітна помилка в програмі приводить до отримання невірних результатів.
VI. Підрахунок і обробка результатів. Цей етап полягає у виконанні на машині відлагодженої програми. Отримані результати далі обробляються.
Етапами обробки програми на компютері є:
1) Трансляція
2) Редагування
3) Виконання
2. Поняття алгоритму
З поняттям алгоритму людина зустрічається на кожному кроці своєї діяльності. З алгоритмом маємо справу кожен раз, коли формалізуємо процес рішення якої-небудь задачі, зводячи її до застосування скінченої послідовності достатньо простих правил.
Алгоритм звязується з іменем середньовічного узбецького математика і астронома Муххамеда ібн Муса аль-Хорезмі, який вперше (825р.) розробив правила виконання чотирьох арифметичних дій в десятковій системі числення. Для будь-якого обчислювального процесу, який виконується вручну, характерні:
1) Зберігання інформації
2) Обробка інформації
3) Управління процесом обчислення
За допомогою ЕОМ виконується: переробка інформації по заданому алгоритму; зберігання цієї інформації.
В якості прикладу розглянемо задачу про вибір найбільшого з трьох заданих х, у, z чисел. Для рішення цієї задачі нам достатньо біжучого погляду на задані числа, але в основі цього лежить деяка послідовність достатньо простих дій, яку ми виконуємо машинально. Ця послідовність може бути такою:
1. Порівняти х з у. Якщо х<y, то присвоїти більшому u=y; інакше присвоїти u=x. Перейти до пункту 2.
2. Порівняти u з z. Якщо u?z, то перейти до пункту 3, інакше присвоїти u=z і перейти до пункту 3.
3. Прийняти u в якості кінцевого результату і припинити процес рішення задачі.
Ця система правил і представляє собою алгоритм рішення задачі. Вона однозначно визначає хід рішення і при довільних x, y, z приводить до правильного результату.
Класичним прикладом алгоритмів є "схема Горнера" для знаходження значення полінома (многочлена).
Pn(x)=anxn+an-1xn-1+…+a1x+a0
при деякому заданому значенні x, основана на записі поліному Pn(x) у вигляді
Pn(x)=(...((anx+an-1 )x+an-2)x+…+a1)x+a0
Процес обчислення простий і одноманітний: він розпадається на окремі етапи (кроки), на кожному з яких виконується обчислення значення виразу, взятого в наступні дужки - для цього достатньо домножити на х попереднє обчислення і до отриманого додати наступний коефіцієнт полінома. Перший раз береться значення an .
Якщо зафіксувати n, то ці етапи обчислень можна виписати в явному вигляді. Наприклад, при n=3 отримаємо наступну систему правил, що являється алгоритмом обчислення значення полінома третього степеня.
1. Присвоїти S=a3 .
2. Величині S присвоїти значення виразу S=S*x+a2 .
3. Величині S присвоїти значення виразу S=S*x+a1.
4. Величині S присвоїти значення виразу S=S*x+a0.
5. Прийняти S в якості значення полінома і припинити обчислення.
або
1. і=N
2. Присвоїти S=ai .
3. Зменшити значення і на 1, тобто i=i-1.
4. Якщо і<0, то перейти до етапу 6, інакше перейти до етапу 5.
5. Величині S присвоїти значення виразу S*x+ai ; перейти до етапу 3.
6. Прийняти S в якості полінома.
І. Особливість: порівняно невелика кількість правил, з яких складається алгоритм, визначає обчислювальний процес, число дій в якому може бути >> кількості дій, явно вказаних в цих правилах, за рахунок того, що в цьому процесі ряд правил буде застосовуватись багаторазово, циклічно. Для більшості обчислювальних процесів циклічність є дуже характерною. Саме ця обставина і дозволяє визначати обчислювальні процеси з великою кількістю дій досить компактними алгоритмами.
ІІ. Число повторень кроків 2, 3 і 4 при фіксованому n є відомою величиною до виконання алгоритму і такі цикли називаються арифметичними.
Розглянемо ще алгоритм добування квадратного кореня =xn . Використаємо ітераційний метод Ньютона
xn=xn-1+( - xn-1), n=1,2… (1)
Початковими даними для цієї задачі є число а, із якого потрібно взяти корінь, початкове наближення до кореня (х0=1) і деяке мале число е>0, що визначає точність обчислення . Точність будемо визначати як різницю між двома послідовними наближеннями хn та хn-1 ;
xn-xn-1=
Тоді алгоритм знаходження кореня буде таким:
1. Присвоїти u=x0, де x0 - грубе наближене значення ;
2. Виконати обчислення по формулі V=, тобто знайти розрахункову точність;
3. Обчислити наступне наближення кореня по формулі u=u+v
4. Якщо ?е, то перейти до 5, інакше до 2.
5. Прийняти x за шукане значення кореня і припинити обчислення.
Особливість: циклічність; на відміну від схеми Горнера число повторень етапів 2-5 до виконання алгоритму в даному випадку рівноцінно рішенню всієї задачі в цілому і такі цикли наз. ітераційними.
Алгоритм - це система формальних правил, які чітко і однозначно визначають процес виконання обчислень.
Алгоритм володіє властивістю масовості (застосування до різних вхідних даних), детермінованості (однозначність правил алгоритму, зрозумілість і нема місця довільності), результативності (алгоритм приводить до рішення задачі за скінчену кількість кроків), дискретності (скінчена кількість правил, кроків, етапів), формальності та скінченності.
3. Мова блок-схем
Краще всього на початковому етапі розробки алгоритму користуватися мовою блок-схем. Блок-схема дозволяє наглядно зобразити структуру алгоритму. На ній легко простежити основні логічні звязки окремих етапів. В блок-схему без складнощів можна внести зміни і перевірити правильність складеного алгоритму.
Блок-схемою називається графічне зображення структури алгоритму, в якому кожен етап обчислювального процесу представляється у вигляді прямокутників, ромбів та інших геометричних фігур. Ці фігури зєднуються одна з одною стрілками, які для кожного етапу вказують його можливих послідовників. Всередині фігур дається описання змісту відповідного етапу, якщо воно не зовсім громіздке, інакше блок позначається будь-яким символом і його зміст вказується поза блок-схемою. Біля стрілок можуть бути деякі зауваження, які, наприклад, показують в такому випадку, що вибір наступника буде проводитися у відповідності з даною стрілкою.
Етапи вводу і виводу інформації зображаються паралелограмами. Всі інші етапи, що мають одного наступника, зображаються прямокутниками. Етап, що має двох можливих наступників - логічний. Цей етап здійснює розгалуження обчислювальних процесів і позначається ромбом. Початок і кінець обчислювального процесу зображається еліпсами.
Зображення алгоритму з великим степенем деталізації у вигляді блок-схеми буде занадто громіздким і втрачає всяку наглядність.
Блок-схема обчислення полінома за схемою Горнера.
Змінна і і змінна S мають різні значення в правих і лівих частинах. Праворуч і і S мають значення до виконання вказаних етапів. Ліворуч - значення після виконання цих етапів.
Присвоєння (=) означає, що значення виразу правої частини присвоюється змінній лівої частини.
Блок-схема не є, як правило, точним представленням відповідного алгоритму - вона відображає лише його логічну суть, і може місити багато неясностей чи неоднозначностей в поясненні деталей процесу обробки даних, тобто користуючись тільки блок-схемою далеко не завжди можна виконувати зображаючий його алгоритм.
Щоб алгоритм міг бути виконаним, він повинен бути записаний на алгоритмічній мові, розрахованій на певного виконавця, тобто той, хто склав алгоритм, повинен бути впевнений, що окремі етапи будуть зрозумілими однозначно тим, хто буде виконувати цей алгоритм.
Але навіть при наявності представлення даного алгоритму на алгоритмічній мові його блок-схема може сильно полегшити задачу будь-якої його переробки.
4. Алгоритмічні мови
За статистикою на 100 команд досвідчений програміст робить дві помилки.
Для того, щоб машина могла проводити обчислення, необхідно скласти програму на машинній мові, тобто розбити кожен етап алгоритму на елементарні операції і записати інформацію про них у вигляді послідовності команд. Переклад алгоритму на мову певної машини можна довірити самій машині так як це, в основному, технічна робота.
Однак, для того, щоб машина могла здійснити переклад, алгоритм повинен бути записаний на певній проміжній мові для запису алгоритмів, на, так званій, алгоритмічній мові .Запис на алгоритмічній мові виглядає коротше, ніж програма в командах і ближче до загальноприйнятої математичної мови. При використанні алгоритмічної мови, програміст не виконує розбиття алгоритму на елементарні операції, можливі в машині. Цю операцію виконує сама машина. Переклад алгоритму з алгоритмічної мови на машинну виконує сама машина за допомогою спеціальної програми-транслятора.
Всі існуючі алгоритмічні мови можна розділити на дві групи : машинно-орієнтовані і проблемно-орієнтовані:
1-для розвязку задач на певній машині ("Наірі");
2-для розвязку задач певного кола: ФОРТРАН, АЛГОЛ для розвязку науково-технічних задач, КОБОЛ, АЛГЭМ, ПЛ-1-для розвязку економічних задач.
1954-США ФОРТРАН-"фор" - формула,"ТРАН" - транслятор-перекладач. Велика бібліотека, прості транслятори Ф,Ф-4,Ф-Дубна.
1958-2000 мов, кожен центр створював мову для своєї машини.
1960(Європа, Париж)-АЛГОЛ-60-"АЛГО" - алгоритмічний, "L"-language - мова - простіше програмувати, важко працювати з вводом даних.
COBOL-"CO"-common "B"-бізнес, "O" - орієнтр.,"L"- language - мова.
ECIO10-Угорщина.
ECIO20-Болгарія,СРСР.
Є мови низького та високого рівня.
До мов низького рівня відноситься машинна мова 0 і 1 та Асемблер.
До однієї із мов високого рівня відноситься і мова Quick Basic , яку ми будемо вивчати.
BASIC-Beginners All purpose Symbolic Instruction Code-(багатоцільова символічна мова символічних інструкцій для початківців).
Створили цю мову Камені та Куртц (Дармутський коледж, США).
Перша програма на мові Basic була виконана 1травня 1961 р. Бейсік першим із мов високого рівня був реалізований на PC.В нього інтерактивний характер взаємодії з користувачем С++ або Modula-2.
1.Покоління інтерпретаторів (GW Basic, BASICA).
2. -//- Quick Basic.
3.-//- Visual Basic.
Є два підходи до трансляції: інтерпретація та компіляція. Інтерпретатори перекладають на машинну мову 1-рядок програми за один прохід. При великих програмах процес виконання програми займає багато часу, але зручно, бо всяка зміна зразу перекладається на машинні коди і виконується. Інтерпретатор - синхронний перекладач. При компіляції спочатку перекладається весь текст програми, а вже потім отриманий файл запускається на виконання. Відкомпільована програма виконується значно швидше, але при наявності помилок редагування, компілювання, виправлення помилок, знову редагування займає дуже багато часу.
В Quick Basic є 2 транслятори. При підготовці програми інтерпретатор компілюючого типу (ІКТ) виконує кожну команду так швидко, якби вся програма була скомпільована. При вводі тексту програма перекладається в псевдокод зразу як тільки переводиться курсор на наступний рядок. І до того часу як ви збираєтесь запустити програму на виконання - вона вже готова до роботи.
Створення Quick Basic всередині 80-х років зробило революцію в світі Basic. Перші версії QB зявились в 1985, а версія 4.5 в 1988 році. В QB в достатньо повній мірі реалізовані ідеї модульного та структурного програмування, є механізм застосування двійкових бібліотек, а значить готових програмних модулів, написаних і на інших мовах.
Але в QB практично відсутня можливість по ефективній адаптації програми до конкретної конфігурації компютера. Ці питання вирішуються в більш пізніх системах MS-Basic-PDS і Visual. В 1989 зявилась Microsoft Basic Professional Development System версії 7.0, 7.1. Visual не є обєктно-орієнтованою мовою.
Р.Форсеніт "Basic - это питон, пожирающий всё на своём пути. Basic только что закончил "переваривать" язык Pascal со всеми его управляющими структурами. После небольшой паузы он будет в состоянии "слопать" PROLOG так, что скоро мы увидим варианты языка Basic со встроенным механизмом доказательства теорем методом резолюций".
Програмування на мові QuickBasic
Алфавіт мови.
Біт, 8 біт - байт, 16 біт - слово
16-розрядним словом можна представити
- цілі числа без знаку від 0 до 65535;
- цілі числа зі знаком від -32768 до +32767.
Довжина рядка обмежена в QB 258 символами (1 байт).
Розмір масиву 64 кБ (65535 байт - слово)
8-бітове позначення кожного символу із ASCII-коду (American Standard Coding FOR InFORmation Interchange) включає: символи з кодами від 0 до 127 - стандартна ASCII-таблиця, а друга половина - унікальна для кожної країни.
QB - це дещо, що нагадує "будівельну площадку" для побудови пр-ми. Він дає нам множину фундаментальних елементів мови, які можуть зєднуватися разом для створення пр-ми, яка сприймається компютером.
Розглянемо, які символи із таблиці ASCII можна
використовувати в пр-мах:
- всі великі та малі букви латинського алфавіту (A-Z, a-z);
- цифри (0-9) і букви А-F для 16-ої с-ми числення;
- знаки +, -, *, =, /, <, >, ^ - піднесення до степеня, \ - зворотній слеш, mod;
- розділові знаки: , . : ; ( ) _
- символи обяви типу: % - цілі; & - довгі цілі; ! -дійсні звичайної точності; # - дійсні подвійної точності; $ - символьні.
Дані: змінні та константи
Типи даних. Кожна змінна та константа в QB має тип . Тип визначає, які дані зберігаються в змінній. Є два типи даних: числові та символьні.
Числові типи даних - цілі, довгі цілі, дійсні звичайної точності, дійсні подвійної точності.
Цілі - 2 байти; - 32768 + 32768.
Довгі цілі (LONG ) - 4 Б; - 2147483648 + 2147483647.
Звичайної точності (SINGLE ) - 4 Б; -3.402823Е+38 до - 1.40129Е-45 і для "+"
+1.40129Е-45 до 3.402823Е+38.
Подвійної точності (DOUBLE ) - 8 Б; 1.797693134862316Е+308 4.94965Е-324.
Символьні типи даних.
Рядок змінної довжини (STRING ) - це послідовність довжиною до 32567 символів із таблиці ASCII. Займає в памяті стільки байт, яка його довжина + 4Б на описувач.
Рядок фіксованої довжини (STRING * тип ) - символьний рядок довжиною num байт. В памяті займає num байт.
Тип даних користувача (записи ). Якщо дані, що використовуються в пр-мі потрібно згрупувати, то для цього використовується запис, що складається із простих типів даних (числових і символьних ).
1) Константи
Константи - наперед визначені значення, що не змінюються в процесі роботи програми (Пі, е). Є два види констант - неіменовані та іменовані.
Неіменовані - символьні та числові константи і використовуються в програмуванні в тих випадках, коли їх значення наперед відоме і не буде змінюватися.
Символьні константи - послідовність до 32767 алфавітно-числових символів (за винятком CR-ASCII 13, LF-ASCII 10, переводу каретки і пропуску рядка), взята в лапки.
PRINT "Середня зарплата"
Числові константи - додатні або відємні числа. Вони є таких типів
- 16-річні - &H1A0B, двійкові - &B100010001000
- Цілі -32768?+32767 (215); 5%; +5; -5;
- Довгі цілі -231?231-1; 4Б
- Дійсні константи звичайної точності з фіксованою крапкою та "плаваючою крапкою"
- Дійсні константи з фіксованою крапкою - мають точність до 6-ої значущої цифри:
234.57689 > 234.578
0.00123456789 > 0.00123457
123. ; 0.321; .321; .5! ; -55.13
Константи з плаваючою крапкою
- Дійсні константи з подвійною точністю 4.35D-10; 1.34687#
Іменовані константи - це також символьні та числові константи тих же типів. Щоб використати іменовану константу її необхідно обявити за допомогою ключового слова CONST
CONST MaxArray% = 512
Дальше до цієї константи можна звертатися по імені. DIM TOVAR$ (MaxArray)
CONST BAD$ = "mbt120ele12c"
PLAY BAD
При звертанні до іменованих констант можна опускати розширення. Використання іменованих констант має деякі переваги над змінними:
- Один раз визначивши константу не можна випадково змінити її значення. Зразу буде повідомлення про помилку "Duplicate DEFinition" (Подвійне визначення)
- Іменована константа доступна всім процедурам і функціям даного модуля. Якщо ж використовувати змінну, то її потрібно обявити як SHARED у всіх процедурах і функціях модуля.
- BASIC виконує операції з константами швидше ніж із змінними.
Зручно використовувати іменовані константи для позначення функціональних клавіш. Не потрібно тримати в голові коди клавіш, а можна написати:
CONST F1% = 59, F2% = 60 , …F10% = 68
…
SELECT CASE Kod
CASE IS = F1 : …
CASE F3 TO F9 : …
CASE IS = F10 : …
END SELECT
2) Змінні
Змінні - величини, що можуть змінюватися при виконанні програми. Змінні є прості (символьного типу, числового типу та користувацького) та змінні з індексами, що є елементами масивів, які представляють групу обєктів одного типу.
Імена (ідентифікатори) змінних можуть містити до 40 символів. В імені можуть бути латинські букви, числа, . ,%, &, !, #, $. Першим символом повинна бути латинська буква. Якщо змінна розпочинається з FN, то розуміється виклик функції DEF FNFUN. Іменем не можуть бути зарезервовані слова (LOCATE, END…). Зарезервованими словами QB є команди, оператори, імена стандартних функцій (їх є 218).
BASIC не розрізняє великих і малих букв, але слідкує щоб комбінація великих та малих букв були скрізь однаковою для всіх змінних.
Якщо раз звернулись до змінної Happy New Year, то скрізь буде так.
Змінні числового типу - це є числа. Присвоїти змінній цілий тип можна такими трьома способами:
Цілі (INTEGER)
- 1. DEFINT A-Z обявити змінні в програмі що починаються з букв від А до Z цілого типу.
Оператор DEFINT є оператором обяви типу і його бажано написати на початку програми.
- 2. явно задати змінну за допомогою суфікса %
FLAG% = 1
- - 3. використати оператор описання змінної DIM описуємо змінну як цілу
DIM FLAG AS INTEGER
Якщо неописаний тип змінної, то вона вважається дійсною звичайної точності.
Гарним стилем вважається розпочинати програму обявляючи всі змінні цілого типу так як виконання операцій над цілими числами відбувається швидше. Якщо ж необхідні дані інших типів то можна скористатися суфіксом або оператором описання змінних.
Довгі цілі (LONG)
-DEFLNG B-C (DEFINED LONG)
-суфікс &
- DIM BISUNESS AS LONG
Звичайної точності (SINGLE)
- DEFSNG ; ! ; оператор описання змінних DIM
Подвійної точності
- DEFDBL ; # ; оператор DIM
А%=15
A& = 7000
A!=1.1
A#= 1.031
Змінні символьного типу (STRING)
DEFSTR; явно $; DIM Deter As STRING
Рядок фіксованої довжини (STRING* тип). Присвоїти тип можна за допомогою оператора описання змінної DIM LANGUAGE AS STRING*10.
LANGUAGE = "QuickBASIC - назавжди !"
PRINT ">" ; LANGUAGE ; "<"
Результат
>Quick BASIC<
Змінні користувацького типу (самостійно)
Оператор DEF перевизначає тип уже присвоєних зміних
I = 35567.999
DEFINT I > то I = 35567
Масиви.
Масивом називаються групи символьних або числових змінних об?єднаних одними іменами. Окремі значення, які складають масив, називаються елементами масиву або змінними з індексами. Змінна з індексом може використовуватись в операторі або виразі, де потрібно використовувати відповідні значення символьної або числової змінної. Їй можна присвоювати значення оператором присвоєння. На початку роботи кожному елементу присвоюється нульове значення, а кожному елементу символьного масиву - пустий рядок.
Кількість елементів в масиві називається розміром масиву. За умовчанням розмір будь-якого масиву = 10 елементам. Мірністю масиву називають число індексів, що визначають елемент масиву.
V (10)- одномірний (вектор).
Т$ (1,4)- двомірний (матриця).
Максимальний розмір масиву- 65535 байт.
Максимальне число розмірностей-8.
Максимальний номер індексу- 32768 байт.
Об?яву імені масиву його типу, кількості його елементів та їх організації здійснюють оператором DIM, якщо розмір масиву не буде змінюватися і REDIM, якщо розмір буде змінюватися.
DIM payments (55).
Масив з іменем payments, який складається із 56 елементів, що є числами з одинарною точністю пронумерованими від 0 до 55. Масив payments і змінна payments є різними даними.
Окремі елементи масивів вибираються за допомогою індексів- цілих виразів, взятих у дужки і розташованих направо від імені масиву: payments(3) і payments(44)
Даний оператор об?являє масив із 56 елементів
Якщо потрібно розпочати нумерацію елементів масиву з 1, то використовується операторOPTION BASE 1. Тоді оператор DIM payments (55) буде описувати масив із 55 елементів.
OPTION BASE 0 або 1 може виконуватися лише 1 раз в модулі до описання всіх масивів.
Так, якщо обявляють числовий масив звичайної точності, в якому кожний елемент займає 4 байти, то максимальний розмір може бути 65535/4=16383. При перебільшені видається помилка - " SUBscript out of range" (індекс поза діапазоном)
Наприклад DIM A% (10 TO 15)
Типи масивів такі як і типи змінних.
TYPETreeNode - користувальний тип
LeftPrt AS INTEGER
RightPrt AS INTEGER
Data Field AS STRING * 20
END TYPE
DIM TREE (500) AS TREE Node
обявляється константа
CONST MAX=500
TYPE Personal
Nomer AS INTEGER
Name AS STRING * 25
END TYPE
DIM FARMER (MAX) AS PERSONAL
PRINT FARMER(1). NOMER;" ";FARMER(I).NAME
Для визначення обєму памяті під масив потрібно помножити число елементів масиву на число байтів під кожним елементом.
DIM Array1(1 TO 100) AS INTEGER 100*2=200 байт
DIM Array2#(-5 TO 5) 11 елементів *8=88 байт
Іноді використовуються масиви, в яких розміри ніж 64 КБ. Такі масиви називають (huge) великими динамічними масивами.
DIM [ SHARED] змінна [(границі)] [As тип] [, змінна _ [(границі)] [As тип]]...
Змінна- ім?я змінної або масиву.
SHARED- атрибут SHARED вказує всім процедурам в даному модулі сумісно використовувати масиви і змінні указані в операторі DIM. Це не оператор SHARED, що впливає на змінні в середині однієї процедури SUB або FUNCTION.
Границі- верхня та нижня границя індексів.
AS тип- визначає тип змінної звичайний або користувальний.
[менша ТО] більша [,[менша ТО]більша].
Запис DIM A(8,3) еквівалентний DIM A( 0 TO 8, 0 TO 3) або DIM A( 0 TO 3): DIM A( -4 TO 10 )
Якщо визначати масив оператором DIM після того, як уже звертались до його елементів, то буде помилка " Array already Dimen sioned".
Оператор DIM може застосовуватися для описання типів змінних.
DIM NUMBER0Bytes AS INTEGER
DIM також дає можливість описання змінних як записів.
REM знаходження max. і min значення масивів
CONST MAX DIM = 20
DIM A ( 1 TO MAX DIM)
Використовуємо DIM для описання двох змінних цього типу. Всі решту змінних будуть дійсного типу звичайної точності.
DIM NumValues AS INTEGER, I AS INTEGER
NumVal = 0
PRINT " Введіть числа. END - кінець вводу."
DO
INPUT A$
IF NCASE $(A$) = " END " OR NumVal > = Max DIM THEN EXIT DO
NumVal = NamValues + 1
A ( NumVal ) = Val ( A$ )
LOOP
IF NumVal > 0 THEN
PRINT " Max. ="; Max; "Min. = "; Min.
ELSE
PRINT " Недостатньо чисел "
END IF
Результат :
Введіть числа. END - кінець вводу
? 23.2
? 11.3
? 1.6
? END
Максимум = 23.2 Мінімум = 1.6
REDIM - змінює обєм памяті виділений масивом динамічним ($ DYNAMIC)
REDIM [SHARED] масив (границі)[AS тип] [,масив (границі [AS тип]]....
$ DINAMIC
DIM A(50,50)
ERASE A
Масив A має дві розмірності
REDIM A (20,15)
але не можна так
$ DYNAMIC
DIM A (50,50)
ERASE A
REDIM A (5,5,5) . Розмірностей стало 3
Помилка " Wrong number of DIMERSION" - "Невірне число розмірностей".
LBOUND (масив,[розмірність]імя)- дає нижню границю індексів.
DIM A (1 TO 100, 0 TO 50, -3 TO 4)
Значення
LBOUND (A,1)=1
LBOUND (A,2)=0
LBOUND (A,3)=-3
Або
OPTION BASE 1
DIM A(50)
LBOUND(A)=1
UBOUND (масив,[розмірність]) верхня границя дає верхню границю індексів
DIM A (15,20), B (12 TO 40; 15 TO 60)
S= UBOUND (B,2) S=60
R=LBOUND(A,2)R=0
T=LBOUND (B) T=12
Відповідність граничним умовам
DIM A(50),
A(51)=30 Не буде відкомпільована бо max елемент -50
Але якщо
DIM A(50)
N=51
A(n)=33 буде працювати
Память під масивом розподіляється динамічно. Це значить, що при знищенні масиву звільнену память можна використати для інших цілей.
Спочатку DEF а потім DIM
В памяті масиви розташовуються так, що першим змінюється останній індекс (рядками в 2-х мірному).
ERASE масив [,масив]... занулює числові елементи масивів $STATIC або знищує $DYNAMIC - масиви.
В QB якщо діапазон зміни індексу задається константами, то масив статичний, якщо змінними, то динамічний.
DIM B (-15 TO 5) AS INTEGER статичний
В QB можна також задати мета командами( інструкціями для обробки тексту компілятором)
REM $STATIC або REM $DYNAMIC
$ STATIC $DYNAMIC
Вирази та операції
Послідовність операцій, які необхідно виконати над даними, щоб отримати результат називається виразом.
В мові BASIC є 5-ть категорій операцій:
- арифметичні операції
- операції відношень
- логічні операції
- функціональні операції
- рядкові операції.
Арифметичні вирази
Арифметичні вирази - скінчена послідовність операндів (або змінних, констант, функцій) зєднаних знаками арифметичних операцій та дужками. Результат арифметичного виразу - число одного із типів. Є такі арифметичні операції в порядку зменшення їх пріоритету : ^, + - (присвоєння знаку числа); * / ; \ (ділення націло); MOD- залишок після цілочисельного ділення + - (додавання, відніманя).
У виразі виконуються спочатку функції ( ) , а потім операції за пріоритетом
А=3+6/12*3-2 1-6/12=0.5
АВ=EXP(B* LOG(A)) 2-0.5*3=1.5
3-3+1.5=4.5
4-4.5-2=2.5
INPUT "Введіть число"; NUMBER% Якщо написати " , " , то не буде "?"
INPUT "Введіть степінь" ;B%
PRINT "Степінь числа дор.";
PRINT NUMBER% ^ B%
; - дозволяє вивести результат в один рядок
На екрані буде:
Введіть число? і Ви вводите число -2
Введіть степінь? 5 і ENTER
Степінь числа дорівнює 32
Функціональні операції:
Є два види функцій: вбудовані (sin, cos ) і визначені користувачем (FUNCTION; DEF FN).
a) Символьні вирази
Символьні вирази складаються із символьних констант, символьних змінних і символьних функцій зєднаних за допомогою операції конкатенації або порівняння
Конкатенація - це додавання двох символьних рядків
A$="FILE": B$="NAME" результат
PRINT A$+B$; FILENAME
PRINT "NEW_"+A$+B$ NEW FILENAME
Порівняння рядків відбувається у відповідності з ASCII- кодами кожного символу в порівнюваних рядках. Якщо ASCII - коди рівні то і рядки рівні. Порівняння рядків можна використовувати для оцінки їх вмісту, якщо ці рядки містять числа.
Логічні вирази.
Це - довільні скінчені послідовності логічних констант, логічних змінних і логічних відношень, зєднаних знаками логічних операцій AND,OR, NOT, XOR, IMP, EQV і дужками. Логічними виразами є також логічні константи і логічні змінні без знака чи зі знаком логічної операції NOT, а також відношення.
Логічних констант є дві: TRUE (істинно, 1) і FALSE (хибно, 0).
Результати виконання логічних операцій |
||||||||
Значення логічних змінних |
Результати логічних операцій |
|||||||
A |
B |
NOT A |
A AND B |
A OR B |
A XOR B |
A IMPB |
A EQV B |
|
FALSE |
FALSE |
TRUE |
FALSE |
FALSE |
FALSE |
T |
T |
|
FALSE |
TRUE |
TRUE |
FALSE |
TRUE |
TRUE |
T |
F |
|
TRUE |
FALSE |
FALSE |
FALSE |
TRUE |
TRUE |
F |
F |
|
TRUE |
TRUE |
FALSE |
TRUE |
TRUE |
FALSE |
T |
T |
Відношення - це два арифметичних вирази, зєднані між собою одним із знаків логічних відношень < >, <=, >=, <, >.
Результатом будь-якого відношення є значення TRUE, якщо воно виконується, і значення FALSE в іншому випадку.
При записі логічних виразів необхідно дотримуватись наступних правил:
1. Два знаки логічних операцій можуть стояти поруч, якщо другий із них NOT. При інших комбінаціях вони повинні відділятися один від одного дужками.
TRUE - в QB= -1
FALSE= 0
I=10: J=15
X=TRUE(-1); Y= TRUE(-1)
X= (I=10) : Y=(J=15)
X= TRUE(-1) ; Y=FALSE(0)
X=(I>9) : Y=(J>15
2. Порядок обчислення логічного виразу визначається дужками, а без них, або в середені них, операції виконуються зліва на право в такій послідовності:
а) обчислення арифметичних виразів;
б) операції відношення;
в) операція "не" - NOT;
г) операція "і" - AND;
д) операція "або" - OR; XOR, EQV, IMP
Наприклад: Логічним виразом є запис
FALSE; | A2+B2 < 1|;
L AND (L OR M OR NOT L)
L-TRUE
M-FALSE
1) NOT L - FALSE
2) L OR M - TRUE
3) результат 2) OR результат 1) - TRUE
4) L AND результат (3) - TRUE
Де A і B - числові змінні цілого або дійсного типу, а L і M - логічні змінні. Другий вираз відповідає математичному запису A2+B2<1, а третє - логічному запису.
L(LML), значення якого буде TRUE, тільки при L=TRUE
- AND - множення - конюнкція
- OR - додавання - дизюнкція
- NOT - заперечення, інверсія
Булева алгебра оперує із змінною, яка може приймати одно із двох значень 0 або 1.
Постулати:
1. =0, якщо 1; - FALSE
2. =1, якщо 0; - TRUE
3. 00=0;
4. 1+1=1;
5. 11=1
6. 0+0=0
7. 10=01=0;
8. 0+1=1+0=1;
9. 0=1;
10.1= 0;
11. ++++…….=;
12. ……..=;
Запис програми на мові QuickBasic. Мова GW і Quick Basic створена фірмою Microsoft, а Turbo Basic фірмою Borland International. Програма Quick Basic (QB) складається із одного або більшої кількості рядків початкового тексту, кожний із яких має такий вигляд:
[номер рядка] оператор [: оператор]...[ коментар]
або
<мітка оператора>:
або
$ metastatement (метаоператор)
Номер рядка - це ціле число від 1 до 65535, яке ідентифікує номер відповідного рядка (необовязковий). Номера рядків можна замінити іменами, використовуючи тільки в деяких частинах програми. Фактично номери необовязково повинні йти в певній числовій послідовності, але не повинні повторюватися. Номера рядків, в дійсності, є мітками.
Оператори - це початкові блоки, які складають програму. Оператори - це одиниці дії мови BASIC - самостійні синтаксичні елементи, які складаються із основних символів QВ. QB має 127 операторів. В рядку може не бути ні одного оператора, один або декілька, відділених один від одного символом " : ". Наприклад:
Start: тільки імя
10 тільки номер
$ INCLUDE "CONST . TBS" метаоператор
20 а = а + 1 номер рядка і оператор
а = а + 1: b = b + 1: c = a + b три оператори
30 а = а + 1: b = b + 1: c = a + b номер рядка і три оператори
В Квік Бейсику довжина рядка необмежена, але практично бажано розміщувати один оператор в рядку. QВ не витрачає часу на пропуски і коментарі та пусті рядки. І вони ігноруються під час компіляції.
Всі школи програмування притримуються думки, що рядок не повинен займати більше 80 символів, щоб рядок повністю розміщувався на екрані.
Якщо синтаксис вимагає рядка з більшою ніж 80 кількістю символів (мета-оператор $Field), то знаком перенесення є нижня риска ( _ ) в кінці рядка.
Коментар - будь-який текст, що добавляється в кінці рядка і відділяється від програми одинарними лапками (), а також REM, тільки не з оператором DATA (DATA розглядає коментар як частину рядка).
Area = radius ^2*3.14159 обчислення змінної Area
Area = radius ^2*3.14159: REM обчислення змінної Area
Мітка оператора повинна розташовуватися одна в рядку. Використовується вона для ідентифікації операторів розташованих за ним. Наприклад,
SQRTSUBROUTINE:
GOSUB SQRTSUBROUTINE `зіслатися на ім`я
EXTRAPOINT: a=a+1 `недопустимо, бо імя повинно бути одне в рядку
Метаоператори ($metastatement) - це оператори, які функціонують на іншому рівні ніж звичайні оператори. Директиви, що викликаються компілятором, завжди розпочинаються $. Звичайні оператори керують компютером під час виконання програм; метаоператори керують компіляцією програми(аналогічно меню Options).
Наприклад, $INCLUDE - вказує компілятору вставити вміст іншого файлу на місце, вказане в даному файлі.
Метаоператор - записується один в рядку без REM.
3)
(b) Структури та виконання пр-ми
Схема, що визначає порядок виконання операторів пр-ми, називається структурою пр-ми. Вся різноманітність структур пр-м може бути отримана комбінуванням 4-х базових структур - лінійної, розгалуженої, циклічної та модульної.
Лінійна структура передбачає послідовне виконання операторів, так що кожний із них виконується один раз.
При розгалуженій структурі є один або декілька операторів, які виконуються або не виконуються в залежності від істинності заданої умови.
Циклічна структура забезпечує повторне виконання групи операторів задану кількість разів.
В модульній структурі пр-ма складається із окремих модулів (процедур), кожен із яких виконується при передаванні йому управління. Виділяють головний модуль MAIN або модуль з основною пр-мою, з якого розпочинається виконання пр-ми в цілому. Особливістю модульної побудови пр-ми є те, що після виконання операторів, що входять в модуль, управління передається тому модулю і в те місце, із якого здійснювався виклик. В Квік-Бейсіку допускаються рекурсивні процедури. Рекурсивні процедури SUB і FUNCTION викликають самі себе. (Складні алгоритми розбиваються на більш прості і розвязуються). Вони відповідають такій модульній організації пр-ми, коли передавання управління модуля може здійснюватися до закінчення виконання операторів цього ж модуля. Крім того можливі взаємні виклики модулів.
Виконання пр-ми завершується після виконання останнього оператора пр-ми. При модульній структурі пр-ми в Q-B головний модуль повинен завершуватися оператором END, якщо після нього розташовуються рядки, що відносяться до іншого модуля (підпр-ми). Завершення пр-ми викликає також оператор STOP.
В Q-B опер. STOP відіграє роль точки контролю. При її досягненні розрахунок пр-ми призупиняється. Натиснення клавіші F5 викликає продовження рахування. Якщо пр-ма від-трансльована, то при її виконанні оператор STOP зупиняє рахунок пр-ми без можливості його продовження і видає на екран адресу точки зупинки в оперативній памяті.
У всіх версіях Б. в текст пр-ми можна включати коментарі. (REM, ).
Примітка: Рекурсивні ф-ції:
Наприклад fact(n) = n*fact(n-1)
n! = 1*2*…..*(n-1)*n
f(4) = 4*f(3) = 4*3*f(2) = 4*3*2*f(1)
Лінійна структура
Оператори присвоєння
[LET] <імя змінної> = <вираз> Ключове слово LET можна опустити.
Спочатку виконується вираз праворуч від знаку =, а потім отримане значення присвоюється змінній. Тип виразу повинен співпадати з типом змінної. При неспівпаданні видається помилка.
Оператори присвоєння можуть бути арифметичними, логічними і символьними.
Арифметичний оператор присвоєння має вигляд
|b=A|,
де b- арифметична змінна;
А- арифметичний вираз.
Логічний оператор присвоєння має вигляд
|l=M|,
де l- логічна змінна;
М- логічний вираз.
Робота кожного із операторів зводиться до того, що знайдені значення виразів (А і М) присвоюються змінній, яка знаходиться в лівій частині оператора (b і l).
Правила запису арифметичного оператора присвоєння:
1. Ліва частина АОП повинна бути іменем змінної простої або із індексом одного із дозволених в мові числових типів, або іменем зовнішньої ф-ції в тілі процедури цієї ф-ції і не може бути іменем масиву, константою, покажчиком ф-ції, або зарезервованим словом.
A+B=2.*SIN(x)**3 i
3,14=4.*(1.-1./3.-1./5.-………) -беззмістовні.
2. Тип змінних, що записуються в лівій частині, може відрізнятися від типа, що визначається виразом, який знаходиться в правій частині. Тоді результат перетворюється до типу лівої частини.
L%=5
X!=5*L%-4> 21, то буде 21.o
X=1.7
M%=5.o*X+1.4>9,9 , то 9
3. QB допускає будь-які комбінації типів і розмірів лівої і правої частин.
4. Одним оператором присвоєння можна присвоїти деякі значення тільки одній змінній. Якщо потрібно присвоїти значення декільком змінних
U=C*EXP(A*x)
Y=U
Z=Y
5. Для скорочення часу виконання програм, можна вводити проміжні змінні:
6. Якщо говоримо: значення змінної, то маємо на увазі останнє значення, яке було їй присвоєне перед початком дії даного оператора.
М=3
М=2*М+14 > М=20
7. Якщо імя змінної зустрічається в лівій і правій частині оператора присвоєння, то до моменту виконання даного оператора цій змінній повинно бути присвоєне деяке "старе" значення.
Перетворення даних в операторах присвоєння підлягає таким правилам:
1. Значення що присвоюється змінній перетворюється до типу цієї змінної;
2. В ході обчислень при виконанні кожної операції над операндами, представленими в компютері з різною точністю, значення операнду з меншою точністю перетворюється до значення з більшою точністю. Більшу точність має і результат операції;
3. При виконанні логічних операцій операнди завжди перетворюються до цілочисельного типу. Результатом операції також буде ціле число;
4. Перетворення значення з більшою точністю до значення з меншою точністю виконується шляхом заокруглення;
5. Не можна присвоювати числове значення символьній змінній і символьне значення числовій змінній.
Спочатку всім змінним компютер присвоює нулі.
Якщо потрібно зробити обмін значеннями між різними змінними, то замість операторів присвоєння можна використати функцію
SWAP Var1, Var2 це еквівалентно
r = Var1: Var1 = Var2: Var2 = r
Для збільшення чи зменшення значення змінної числового типу на ціле число замість оператора присвоєння користуються
DECR <змінна> [,x]
INCR < змінна >[,x]
змінна - числового типу; х - арифметичний вираз; якщо х немає, то зміна буде на 1.
Наприклад
DECR A% зменшення на 1
DECR B%, 6 зменшення B% на 6
INCR C збільшення С на 1
INCR Q, 10 збільшення Q на 10
Ввід даних в компютер.
Є три способи введення даних.
1. Присвоєння значень.
V=E
Спочатку всім змінним компютер присвоює = нулі.
REM V- змінна, Е - вираз.
N% = 51
S$ = "DIAMOND"
X = 3.14
Повинна бути сумісність за типом.
Числові змінні: А! = 1.23456789 звичайної точності (1.234568)
А% = 1.2345 цілий тип заокруглюється до (1)
V1, V2, VN = E (не правильно)
V1 = V2 = VN = E (не правильно)
2. DATA <список констант> - невиконуваний оператор, що розташовується в будь-якому місці програми
READ <список змінних> `змінним присвоюються значення із списку констант в операторі DATA
Наприклад,
10 DATA 5, 7.35, BASIC, " PROGRAM", 1E - 2
20 DATA 701.5, 46, 3.14
Ці значення констант із блоку даних присвоюються скалярним змінним і елементам масиву за допомогою READ.
30 READ N%, A, X$, Y$
40 READ B, C, M%, D#
Після виконання цих операторів буде:
N% = 5
A = 7.35
S$ = "BASIC"
Y$ = " PROGRAM"
B = 1E - 2
C = 701.5
M% = 46
D# = 3.14
Типи повинні бути сумісними в DATA i READ
Управління зміною покажчика здійснюється оператором відновлення. Якщо далі в програмі буде
50 RESTORE
60 READ L% , то L% = 5 (вибирання із блоку повторюється спочатку)
або
RESTORE <номер рядка>
70 RESTORE 20
READ X
X = 701.5
3. Ввід даних з клавіатури по мірі їх запиту самою програмою.
INPUT <список змінних>
350 INPUT A, N%, X$, D#, Y$
REM D# - подвійна точність
Виконуючи INPUT, компютер виводить на екран "?".
Після нього користувач повинен ввести з клавіатури значення змінних, відділяючи їх комами (,) або пропусками. Після останнього набраного значення потрібно натиснути клавішу ENTER. Повинна бути відповідність по кількості елементів та по типу.
При 350 після ? потрібно набрати 7.35, 5, BASIC, 3.14, "PROGRAM " і натиснути
ENTER.
Наприклад,
36 INPUT "Швидкість корабля"; V
На екрані появиться - Швидкість корабля?
або
INPUT "Швидкість корабля", V
Тоді на екрані появиться - Швидкість корабля без "?"
INPUT ; "Швидкість корабля", V
Курсор залишиться на місці після вводу
LINE INPUT <символьна змінна>
Вивід даних на екран дисплея в текстовому режимі.
Вивід даних на екран дисплея та управління виводом здійснюється за допомогою таких функцій: CSRLIN, POS, SCREEN, SPC, TAB; та таких операторів: CLS, COLOR, LOCATE, PRINT, PRINT_USING, SCREEN, WIDTH, WRITE.
В текстовому режимі на екран можуть зображатись тільки символи із знакогенератора ПЕОМ. Екран розбивається на 25 рядків, які нумеруються зверху вниз.
В кожному рядку може розміщуватися 40 або 80 символів в залежності від задання в програмі довжини рядка.
При заповненні 24 рядків і переході на наступний рядок проходить зсув всього тексту на один рядок вверх, тобто 1-ий рядок зникає з поля зору! Найнижчий рядок - 25-й - використовується для відображення значень клавіш управління.
Зображення кожного символу формується із двох елементів: обрисів самого символу (що наз. ще переднім планом) і фону (тла) - прямокутника певного кольору, на площі якого розміщується символ. Колір переднього плану та фону можна установлювати незалежно один від одного за допомогою оператора COLOR. Область по краях екрану, яка не використовується для формування зображень символів, називається окантовкою екрану. Її кольором теж можна управляти.
Розглянемо функції, за допомогою яких здійснюється вивід.
CSRLIN - визначення номеру рядка, в якому знаходиться курсор. Аргументу не має. Вона дає ціле число від 1 до 25.
Y = CSRLIN
PRINT "Курсор знаходиться в"; Y; "рядку"
POS(x) - Визначення номеру колонки в якій знаходиться курсор. Х - фіктивний. Результатом може бути ціле число від 1 до 40 або 80 в залежності від довжини рядка, яке задається оператором WIDTH.
Функія SCREEN визначає код ASCII символу або атрибути кольору в заданій позиції екрану.
SCREEN (<рядок>, <колонка> [,<прапор>])
<рядок> - цілочисельний вираз зі значенням від 1 до 25
<колонка> - цілочисельний вираз зі значенням від 1 до 40 або 80
<прапор> - числовий вираз, що визначає атрибути заданої позиції екрану. За замовчуванням значення прапору = 0 і тоді дана функція дає код символу; що знаходиться у вказаній позиції.
При іншому значенні прапору функція дає числове значення, що містить інформацію про атрибути кольору в указаній позиції. Значення функції А формується із значень, що відповідають кольору переднього плану [С] та фону [F], за такою формулою
A = F * 16 + C якщо зображення символу не мигає
і A = F * 16 +C + 128 якщо мигає,
і зворотна операція
C = A MOD 16
F = ((A MOD 128) - C)/16
Якщо А > 127, то зображення мигає
Наприклад:
LOCATE 4,8
PRINT "M"
A = SCREEN (4,8) А = 77, тобто код букви М
SPC(n) - пропускання n-прогалин при виводі значень на екран оператором PRINT, або на папір LPRINT
n може змінюватися від 0 до 255. Якщо n > 255, то кількість прогалин буде визначатися так:
n MOD < довжина рядка екрану >
PRINT "імя" SPC(20) "прізвище"
TAB (n) - перехід до указаної позиції в рядку виводу.
0 n 255. Якщо n менше за значення номеру колонки, що виводиться, то відбувається перехід в цю колонку, але в наступному рядку
PRINT "імя" TAB (20) "прізвище"
Оператори виводу
CLS [o|1|2]- очищення екрану. В результаті вся інформація з екрану стирається, екран зафарбовується в колір фону, а курсор повертається в верхній лівий кут екрану. Стирання викликають також оператори SCREEN i WIDTH. 0 - все зображення, 1 - графіка, 2 - текст.
WIDTH - установка ширини рядка екрану. Є ще варіант для задання довжини рядка для файлів і пристроїв.
WIDTH <довжина рядка>
<довжина рядка> - арифметичний вираз з цілочисельним значенням 40 або 80.
WIDTH 40
При написанні програми спочатку записується оператор SCREEN, а потім оператор WIDTH.
SCREEN - установка атрибутів екрану дисплея. Розглянемо цей оператор для текстового режиму (графічний пізніше).
SCREEN [<режим>],[<колір>],[<активна сторінка>],[<сторінка зображення>]
За замовчуванням всі параметри мають 0-е значення. Всі вони можуть опускатися. Якщо параметр <колір> = 0, то зображення буде чорно-біле.
Наприклад, SCREEN 0,1
SCREEN,, 1,3
Якщо параметр <режим> = 0, то це є текстовий режим
COLOR - керування кольором на екрані
COLOR [<передній план>][,[<фон>][,<кант>]]
N1 <передній план> - числовий вираз, значення якого знаходиться в діапазоні 0 - 31 і задає колір символу;
N2 <фон> - 0 - 7 (колір тла);
N3 <кант> - 0 - 15 колір обрамлення (канту) екрану.
В EGA i VGA - канту немає.
Мерехтіння знаку можна задати, якщо встановити значення для переднього плану на 16 більше за бажаний колір.
Слід бути обережними при виборі кольорів тла та переднього плану, тому що при їх співпаданні символів не буде видно.
Номера кольорів від 0 до 7 допустимі для переднього плану, канту і фону. 8 - 15 тільки для переднього плану і канту. Будь-яке із значень N1, N2, N3 можна опустити.
COLOR 3, 4, 14
PRINT "КОЛЬОРОВА ГРАФІКА"
COLOR N1COLOR, N2COLOR,, N3
COLOR 2,4,7COLOR 2COLOR ,4COLOR , , 7
Оператор COLOR впливає тільки на колір символів, що будуть виводитись після його виконання.
N1 - визначає ще відтінок кольору переднього плану, світлий чи темний.
0 - 7 - темне забарвлення фону та переднього плану
8 - 15 - світле
16 - 23 - темний відтінок фону і світлий передній план для кольорів, що мають номера від 0 до 7.
COLOR 18, 1, 2
Зелений (18 - 15 =3) фон темний, а відтінок переднього плану світлий.
LOCATE - управління курсором.
LOCATE [<рядок>] [,<колонка>] [,<курсор>] [,[<початок>] [,<кінець>]]
Рядок - числовий вираз від 1 до 25, що задає номер рядка екрану, куди буде розміщений курсор.
Колонка - числовий вираз, значення якого задає номер колонки на екрані, де буде установлений курсор. Від 1 до 40 або від 1 до 80.
Курсор- ціле число 0 чи 1. Значення 1 вказує, що під час виконання програми буде видно на екрані, а знчення 0 - що курсору не буде видно. По замовченню цей параметр рівний 0.
Початок і кінець - цілочисельні арифметичні вирази, значення яких задають розмір курсору. При використанні адаптера (відеоконтролера) CGA для генерації символу використовується 8 ліній, а монохроматичному - 14 ліній. Нумерація ведеться зверху вниз. Отже в залежності від адаптера дисплея ці параметри можуть мати значення або від 0 до 7, або від 0 до 13.
Початок - задає лінію, з якої буде розпочинатися малюнок курсора, а кінець - лінію, на якій він закінчується. Якщо значення <початку> більше за значення <кінця>, то малюнок буде складатися з 2-ох частин.
В результаті виконання оператора LOCATE курсор переміщується в указану позицію і приймає заданий вигляд. Керувати малюнком курсора можна тільки в текстовому режимі роботи. Якщо якісь параметри не задані, то використовуються поточні значення.
Для виконання оператора вивід значень на екран буде виконуватись починаючи з позиції, в яку установлений курсор.
LOCATE 5,7 - перевід курсора в 7 позицію 5-го рядка.
WRITE [<список виводу>]
Елементи списку виводу відділяються , або ;
Оператор має такі відмінності від PRINT :
· при виводі дані відділяються комами;
· символьні значення беруться в лапки;
· перед додатніми числами не робиться пропуск;
· після чилових значень не робиться пропуск.
WRITE A%, B, C$, якщо A%=100 : B=500 : C$="СТОП", біде 100, 500, "CТОП"
Розгалужена структура
Зміну природного порядку виконання операторів можна організувати за допомогою :
- оператору безумовної передачі управління
- оператора передачі управління за обчисленням
- умовних операторів
- операторів передачі управління в звязку з настанням заданого стану апаратних засобів.
1. Безумовна передача управління здійснюється оператором GOTO N
Наприклад
10 DATA 5,7,12
READ R
PRINT "R=" ; R ; в одному рядку R , S
S=3.1416 * R^2
PRINT "S=" ; S
GOTO 10
Після виконання програми буде на екрані результат в такому вигляді
R=5 S=78.5
R=7 S=153.86
R=12 S=452.16
2. Передавання управління за обчисленням.
ON E GOTO список ; ON GOSUB
70 INPUT E E - ціле додатне , якщо дробове , то заокруглюється до цілого.
ON E GOTO 100 , 110
PRINT "номер не визначений" : GOTO 70
100 PRINT "завдання 1" : GOTO 700
110 PRINT "завдання 2" : GOTO 800
REM якщо Е = 1 то на 100 , якщо Е = 2 - 110 , при інших Е - 70 "номер не визначений"
Але оператор GOTO старий і не структурований .
Програми з GOTO важко читати , відлагоджувати , модифікувати .
Приклади як обійтися без GOTO
Код натиснутої клавіші
m1 : A$ = INKEY$ : IF A$ = "" GOTO m1 або
DO
A$=INKEY$
LOOP WHILE A$=" "
Вихід із циклу за умовою:
FOR i=1 TO 100
IF FLAG%=TRUE THEN GOTO m999
NEXT I
m999
або
FOR i=1 TO 100
IF FLAG%=TRUE THEN EXIT FOR
Подобные документы
Розробка, налагоджування, тестування і документування програми на мові високого рівня С++ при рішенні на комп'ютері прикладної інженерної задачі. Використання принципів модульного і структурного програмування, зображення алгоритму у вигляді блок-схеми.
курсовая работа [1,1 M], добавлен 07.08.2013Загальна характеристика застосування верстатів з числовим програмним управлінням. Разгляд етапів та особливостей складання керуючої програми. Вимоги до алгоритму розв’язку задачі. Побудова блок-схеми алгоритму. Опис програмного забезпечення, вибір мови.
курсовая работа [1,4 M], добавлен 24.05.2015Визначення і розв’язання задачі Коші для звичайних диференціальних рівнянь першого порядку методом Ейлера, алгоритм розв’язання, похибка при вирішенні. Складання блок-схеми. Реалізація алгоритму у середовищі Borland Pascal. Результат роботи програми.
курсовая работа [264,0 K], добавлен 20.08.2010Розв’язання нелінійних алгебраїчних рівнянь методом дихотомії. Вирішення задачі знаходження коренів рівняння. Розробка алгоритму розв’язання задачі і тестового прикладу. Блок-схеми алгоритмів основних функцій. Інструкція користувача програмою мовою С++.
курсовая работа [2,0 M], добавлен 24.09.2010Метод розв’язків рівнянь більш високих порядків. Вибір методу розв'язання задачі Коші. Методи розв'язання крайових задач розглядаються на прикладі звичайного диференціального рівняння другого порядку. Вибір методу інструментальних засобів вирішення задач.
курсовая работа [132,0 K], добавлен 03.12.2009Розробка програми для вирішення графічної задачі. При вирішенні задачі необхідно cтворювати програму у середовищі програмування Turbo Pascal. Розробка алгоритму функціонування програми і надання блок-схеми алгоритму. Демонстрація роботи програми.
курсовая работа [1,3 M], добавлен 23.06.2010Алгоритми розв’язання задач у вигляді блок–схем. Використання мови програмування MS VisualBasic for Application для написання програм у ході вирішення задач на одномірний, двовимірний масив, порядок розв’язання задачі на використання символьних величин.
контрольная работа [742,9 K], добавлен 27.04.2010Побудова блок-схеми алгоритму проста вставка. Програмна реалізація алгоритму, опис результатів. Особливості обліку ітерації масивів. Відсортування даних за допомогою програми Turbo Pascal. Аналітична оцінка трудомісткості, графічне представлення.
контрольная работа [570,1 K], добавлен 21.05.2014Постановка та описання алгоритму розв’язання задачі про оптимальне призначення, формулювання вимог. Обґрунтування вибору засобів програмування. Розробка структури програми та системи її візуалізації, тестування та верифікація, оцінка ефективності.
курсовая работа [1,1 M], добавлен 12.05.2013Використання мови програмуванння Java при виконанні "задачі лінійного програмування": її лексична структура і типи даних. Методи розв’язання задачі. Особливості логічної структури програми, побудова її зручного інтерфейсу за допомогою симплекс методу.
курсовая работа [437,9 K], добавлен 24.01.2011