Стиль надійного програмування за допомогою Bascom

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

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

а) всі оператори записані правильно і містять всі необхідні параметри

б) всі використовувані змінні визначені

в) знайдені всі мітки, на які є посилання

г) узгоджено застосовані парні оператори

У компільованою програмі можуть залишатися різні помилки програміста Перелічимо основні:

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

наявність тимчасових або апаратні конфліктів периферії тощо

б) механічні помилки – пропуск операторів або наявність зайвих операторів

б) невірна запис числового значення, імені (номера) лінії порту

в) неправильне визначення моделі процесора або інших параметрів настройки компілятора

г) неправильна ініціалізація системи переривання

д) незбалансованість стека

е) відсутність ініціалізації змінних при запуску програми, що забезпечує нормальне входження в стаціонарний режим роботи

ж) неправильне розуміння або застосування операторів Bascom

Можуть також мати місце помилки компілятора:

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

б) застосування оператора з параметрами (змінними), що не відповідають розмірності результату

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

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

Стиль програмування програми засобами Bascom практично повністю відповідає програмування на асемблері, тобто все виконується строго в порядку запису операторів Внутрішній зміст бібліотек Bascom також відповідає звичній організації програм, написаних на асемблері В результаті, одержуваний скомпільований код за змістом, практично, такий же, як при програмуванні на асемблері При ретельній оптимізації програми, отримані за допомогою Bascom, мають розмір і час виконання близьке до ассемблерной Наявна при цьому надмірність обумовлена ​​тим, що компілятор Bascom майже всі операції виконує в своїх внутрішніх регістрах і займає додаткові ресурси на їх завантаження і вивантаження

Щоб домогтися більш компактного коду, необхідно приймати ряд заходів, багато з яких застосовні і до програм, написаним на будь-якій мові програмування Перерахуємо ці заходи:

а) повторювані ділянки програми необхідно оформляти у вигляді підпрограм Подібні підпрограми також намагатися обєднувати, реалізуючи відмінності між ними створенням різних точок входу або виходу

б) скорочувати кількість використовуваних в програмі операторів і функцій Це зменшить розмір

бібліотеки (набору підпрограм), яка підключається до виконуваного коду

в) скорочувати кількість і довжину текстових повідомлень

г) намагатися не застосовувати операції порівняння текстових рядків Краще побудувати програму на інших принципах управління алгоритмом

д) застосовувати табличні методи зчитування і завантаження за допомогою операторів LOOKUP і LOOKUPSTR

е) застосовувати табличні методи передачі управління, що діють в залежності від значення параметра, за допомогою операторів вибору SELECT CASE x або ON x GOTO (GOSUB), і менше використовувати оператори перевірки умов (IF .. THEN ..)

ж) застосовувати асемблерні вставки там, де вони забезпечують очевидний виграш

і) використовувати у складних програмних конструкціях (циклах і перевірки умов) короткі змінні

(Одно-і двобайтні)

к) застосовувати можливо більш прості програмні конструкції Краще дві простих замість однієї складною

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

занадто багато, то, все одно, доводиться йти на ускладнення програми для економії простору оперативної памяті Дуже хороші результати дає прийом використання для зберігання проміжних

результатів спеціальних змінних (локальних) У всіх прикладах, показаних тут, цей прийом

використовується Bascom пропонує засоби визначення і стирання (оператором ERASE) тимчасових (локальних) змінних Однак цією можливістю краще не користуватися, тому ефективність її невисока Компілятор встановлює покажчик стека відразу на максимальне значення, звільняючи місце і тим змінним, які будуть визначені пізніше Після знищення тимчасових змінних покажчик стека НЕ повертається компілятором нижче (та й не має права цього робити) Таким чином, робити перевизначення змінних в програмі більше одного-двох разів практично не вдасться Єдина користь від такого перевизначення змінних полягає тільки в можливості зміни розподілу зарезервованого простору між змінними різного типу

Мінімальний час виконання програми і обсяг отриманого коду абсолютно мало залежить від стислості запису операцій Більшою мірою це функція розмірності використовуваних змінних і складності здійснюваних дій Bascom дозволяє досить широко варіювати операторами для досягнення одного і того ж результату Цим обовязково потрібно користуватися, оптимізуючи програму за часом виконання або розміром виконуваного коду

Структура програми повинна базуватися на функціонально закінчених блоках або модулях, неважливо як оформлених (процедурах, програмах та підпрограма) і містять не більше 50 операторів Кожен блок або функціональний модуль повинен виконувати одне складне дію, і бути, легко доступним для огляду,

швидко розуміє і добре відкоментований Функціональний блок повинен використовувати і передавати

для подальшої обробки мінімальна кількість даних, в якомога більш компактному і стандартному вигляді Власне кажучи, місце в програмі, де дані мають осмислений вигляд або найбільш зручні для передачі, і є природним місцем поділу на функціональні модулі Ще одна ознака функціонального блоку – один вхід і один вихід Для керування роботою програми (зміни природного ходу виконання операторів) досить і слід використовувати тільки сім конструкцій:

а) перехід до мітці (оператор GOTO)

б) виклик процедури або підпрограми (оператори CALL, GOSUB)

в) неповну альтернативу (конструкція IF .. THEN ..) з пропуском ділянки програма і повну – з вибором однієї з двох дій (IF .. THEN .. ELSE / IFELSE ..)

г) множинне розгалуження (за допомогою конструкцій SELECT CASE .. або ON .. GOTO або ON .. GOSUB)

д) цикл «ПОКИ» (конструкція WHILE .. WEND)

е) цикл «ДО» (конструкція DO .. LOOP UNTIL ..)

ж) цикл із змінним параметром (FOR .. TO / DOWNTO .. NEXT)

Функціонально структурованої програма виконується задля поліпшення її роботи або оптимізації продуктивності – це, більшою мірою, метод організації та оптимізації процесу програмування Адже очевидно, що якщо прибрати коментарі і зайві команди CALL і RET, структурована програма буде мало відрізнятися від неструктурованою Модулі структурованої програми згодом можуть використовуватися в інших програми неодноразово, в готовому вигляді або з невеликими доопрацюваннями Метод структурного програмування скорочує терміни отримання програмного продукту за рахунок накопичення програмного зачепила, забезпечує створення великих і дуже великих програм з поділом завдань між декількома виконавцями Таким чином, застосування методу структурного програмування позитивно позначається на якості і надійності створюваних програм, тк дає можливість швидше виявляти помилки і використовувати кращі готові рішення

Структурування програми це і метод програмування і спосіб форматування тексту програми При створенні функціонального програмного елемента домагаються його незалежності і закінченості, а при оформленні тексту програми використовують прийоми розділення функціональних елементів, наприклад, за допомогою відступів рядків від лівого краю аркуша Застосовуються й елементи вертикального поділу Незважаючи на те, що Бейсік допускає записувати кілька операторів в одному рядку, оператори різних функціональних елементів потрібно розташовувати в окремих рядках

Джерело: МЛКуліш, ДОВІДНИК З ПРОГРАМУВАННЯ BASCOM-8051, Краснодар 2001

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*