Студопедия
Новини освіти і науки:
МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах


РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання


ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ"


ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ


Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків


Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні


Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах


Гендерна антидискримінаційна експертиза може зробити нас моральними рабами


ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ


ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів



Парадигми програмування

Лекція 4.1.

Звiд відомостей, які становлять державну таємницю

Звід відомостей, які становлять державну таємницю, фор­мує і публікує в офіційних виданнях СБ України на підставі рішень державних експертів з питань таємниць.

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

Розгорнуті переліки відомостей, які становлять дер­жавну таємницю, не можуть суперечити Зводу відомостей, що станов­лять державну таємницю.

У разі включення до Зводу відомостей, які становлять державну таємницю, або до розгорнутих переліків цих відо­мос­тей інформації, що не відповідає категоріям і вимогам, перед­бачених ст. 8 Закону України ″Про дер­жав­ну таємницю″, або порушення встановленого по­ряд­ку від­не­сення інформації до державної таємниці заці­кавлені гро­мадяни та юридичні особи мають право оскар­жити від­по­відні рішення у суді. З метою недопущення розголошення державної таємниці судовий розг­ляд скарг може здійс­ню­ватися на закритих засіданнях відпо­від­но до Закону України ″Про державну таємницю″.

Усі мови і системи програмування за типом їхньої парадигми розподіляють на чотири різновиди:

§ директивні (directive), процедурні (procedural) або імперативні (imperative),

§ структурні,

§ декларативні (declarative),

§ об'єктно-орієнтовані (object-oriented).

Визначення 1. Парадигма:

§ згідно з Томасом Куном — це система ідеалів і норм постановки й вирішення проблем;

§ у програмуванні— це сукупність ідей і понять, що визначають стиль написання програм, тобто сукупність правил, що лежать в основі синтаксису й семантики мови програмування.

 

Імперати́вне програмування — описує процес обчислення у вигляді інструкцій, що змінюють стан програми. Засноване на абстракції машини Тьюринга-Поста як альтернативного визначення поняття алгоритму.

Це – мови Асемблер, Фортран, Алгол, Бейсик, Кобол, Паскаль, Си й багато інших.

1. Вирішуючи задачу, імперативний програміст спочатку створює модель у деякій формальній системі, а потім переписує рішення на імперативну мову в термінах комп'ютера. Але, по-перше, для людини міркувати в термінах комп'ютера досить неприродно. По-друге, переписування рішення на мову програмування, по-суті, не має відношення до розв'язку вихідного завдання. Часто імперативні програмісти навіть розділяють роботу відповідно до двох вказаних етапів: постановники задач формулюють розв'язок задачі у мові специфікації, а інші – кодують його у мові програмування.

2. Неструктурне програмування допускає використання в явному виді команди безумовного переходу (типу GOTO). Імперативна програма схожа на природно мовні накази, команди, які повинен виконати комп’ютер. В усіх мовах директивного програмування команди зводяться або до присвоювання змінній деякого значення, або до вибору наступної команди. Присвоюванню може передувати ряд арифметичних і інших операцій, а команди вибору реалізуються у вигляді умовних операторів і операторів повторення (циклів).

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

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

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

§ програма перетворюється в “спагетті” з нескінченними переходами нагору-униз, її дуже важко супроводжувати й модифікувати;

§ фактично неструктурний стиль програмування не дозволяє розробляти великі проекти;

§ первісне навчання програмуванню на базі неструктурної мови приводить до величезних труднощів при переході на більш сучасні стилі. Як зазначав відомий голандський учений Е. Дейкстра, “програмісти, початково орієнтовані на Бейсик, розумово неповноцінні без надії на зцілення”.

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

 

СтруктУрне програмУВАННЯ — методологія розробки програмного забезпечення, в основі якої лежить подання програми у вигляді ієрархічної структури блоків. Запропонована в 70-х роках XX століття Е. Дейкстрой, розроблена й доповнена Н. Віртом.

Відповідно до даної методології

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

§ Будь-який алгоритм можна реалізувати, використовуючи лише три керуючі конструкції:

o послідовне виконання — однократне виконання операцій у тому порядку, у якому вони записані в тексті програми;

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

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

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

 

§ Логічно цілісні обчислювальні блоки (повторювані або не повторювані) можуть оформлятися у вигляді процедур або функцій. Тоді в тексті основної програми, замість поміщеного в підпрограму фрагмента, вставляється інструкція виклику підпрограми. При виконанні такої інструкції виконується викликана підпрограма, після чого виконується інструкція, наступна за командою виклику підпрограми.

В 1966 році італійськими математиками К. Бомом і Дж. Якопини була сформульована теорема, як можна уникнути використання оператора переходу GOTO.

Теорема про структурне програмування:

Будь-яку схему алгоритму можна представити у вигляді композиції вкладених блоків begin і end, умовних операторів if, then, else, циклів із предумовою (while) і можливо додаткових логічних змінних (прапорів).

Принципи структурного програмування були реалізовані в мові Алгол, але найбільшу популярність завоювала мова Паскаль, створена в 1970 році швейцарським ученим Н. Віртом. Вона може вважатись зразковою мовою програмування, найбільш популярною і зараз (наприклад, у версії Delphi фірми Imprise).

Деякі позитивні якості структурного програмування:

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

2. У структурованих програмах логічно зв'язані оператори перебувають візуально ближче, а слабко зв'язані — далі, що дозволяє обходитись без блок-схем і інших графічних форм зображення алгоритмів (по суті, сама програма є власною блок-схемою).

3. Сильно спрощується процес тестування і налагодження структурованих програм.

 

Як основний формалізм для представлення структур програм використовуються Бекусо-Наурови форми та розширені БНФ (РБНФ).

Опис структури в РБНФ є набір правил, що визначають відношення між терміналами і нетерміналами.

Термінали - елементи структури, що не мають власної структури. У РБНФ термінали - це або визначені поза РБНФ ідентифікатори (імена, що вважаються заданими для даного опису структури), або ланцюжки - послідовності символів у лапках або апострофах.

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

Правилов РБНФ має вигляд:

ідентифікатор = вираз.

де ідентифікатор - ім'я нетермінального символу, а вираз - комбінація терміналів і нетерміналів, об’єднаних спеціальними знаками синтаксису правил РБНФ. Крапка наприкінці - символ, що вказує на завершення правила.

Семантика правила РБНФ: нетермінал, заданий ідентифікатором ліворуч від знака "=", визначається деяким відношенням терміналів і нетерміналів.

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

Набір можливих конструкцій РБНФ: конкатенація, альтернативний вибір, умовне входження й ітерація.

Конкатенація визначається послідовним записом символів виразу, що розділяються одним або більше пробільними символами. Правило виду A = B C. позначає, що нетермінал A складається із двох символів - B і C. Наприклад,

Присвоювання = Змінна ":=" Вираз.

- тут нетермінал Присвоювання визначений як конкатенація термів Змінна, ":=" і Вираз.

Альтернативний вибір позначається вертикальною рискою. Правило A = B|C|D. позначає, що нетермінал A може складатись або з B, або з C, або з D.

Умовне входження. Квадратні дужки виділяють необов'язковий елемент виразу. Правило A = [B]. позначає, що нетермінал A або є порожнім, або складається із символу B.

Ітерація. Фігурні дужки позначають конкатенацію будь-якого числа (включаючи нуль) записаних у ній елементів. Правило виду A = {B}. позначає, що A - або порожній, або є конкатенація деякого числа символів B.

Крім основних операцій, у РБНФ можуть використатися звичайні круглі дужки для групування елементів при формуванні складних виразів. Наприклад, правило A = (B|C)(D|E). позначає, що A складається із двох символів, першим з яких є або B, або C, другим - або D, або E, тобто A може бути одним з ланцюжків BD, BE, CD, CE.

 

Вочевидь, окремим випадком структурного програмування є атрибутні граматики, запропоновані Д. Кнутом для формального опису семантики мов програмування. Атрибутні трансляційні граматики є узагальненням КС-граматики за рахунок приєднання до синтаксичних правил граматики функцій, що обчислюють, так звані, "атрибути" вузлів дерева виводу й, тим самим, "значення" твердження КС-мови. Для цієї ж мети, у свій час, були розроблені й застосовувались і інші формальні системи такі, як W-Граматики, Віденська метамова. Атрибутні трансляційні граматики, як формалізм опису систем, використовують і зараз.

 

Задачі ШІ вимагають роботи з даними й знаннями у вигляді символьних структур. В обробці символьної інформації важлива не лише форма розглянутих знань, але і їх зміст і значення.

Причиною виникнення наприкінці 1950-х років програмних засобів символьної обробки є нездатність процедурних мов у вигляді чисел і масивів відображати природно об'єкти і ситуації дійсності. Цей недолік, зокрема, утруднював реалізацію евристичних методів, застосовуваних у розв'язку задач ШІ.

В основі ДЕКЛАРАТИВНИХ мов лежить формалізована людська логіка:


Читайте також:

  1. Альтернативні парадигми організаційного процесу
  2. Безпосереднє програмування відеопам'яті
  3. Виконання програми - реалізація мови програмування
  4. Виникнення середньовічної парадигми західноєвропейської філософії
  5. Геометрична інтерпретація задачі лінійного програмування
  6. Геометрична інтерпретація задачі нелінійного програмування
  7. Геометрична інтерпретація розв’язків цілочислових задач лінійного програмування на площині
  8. Гіпонімічні парадигми
  9. Графічний метод розв’язування задач лінійного програмування
  10. Державне регулювання суспільного відтворення та його форми. Планування та програмування
  11. Динамічне програмування.
  12. Динамічного програмування




Переглядів: 2707

<== попередня сторінка | наступна сторінка ==>
Засекречування та розсекречування матеріальних носіїв інформації | Концепція функціонального програмування.

Не знайшли потрібну інформацію? Скористайтесь пошуком google:

  

© studopedia.com.ua При використанні або копіюванні матеріалів пряме посилання на сайт обов'язкове.


Генерація сторінки за: 0.02 сек.