Алгоритм і його структура

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

Зміст

Введення

Глава 1. Алгоритм і його властивості. Способи запису алгоритму

Глава 2. Класифікація алгоритмів

2.1 Лінійна алгоритмічна структура. Типові приклади

2.2 розгалужуються алгоритмічна структура. Основні оператори циклів. Типові приклади

2.3 Циклічні алгоритмічні структури. Основні оператори розгалуження. Типові приклади

Глава 3. Мови програмування

3.1 Інтерпретатори

3.2 Компілятори

3.3 Еволюція і класифікація мов програмування

Висновок

Список літератури

Введення

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

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

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

Глава 1. Алгоритм і його властивості. Способи запису алгоритму

Саме слово «алгоритм» виникло з назви латинського перекладу книги арабського математика IX століття Аль-Хорезмі «Algoritmi de numero Indoru», що можна перекласти як «Трактат Аль-Хорезмі про арифметичний мистецтві індусів». Складання алгоритмів та питання їх існування є предметом серйозних математичних досліджень.

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

Розглянемо приклад алгоритму для знаходження середини відрізка за допомогою циркуля і лінійки.

Алгоритм розподілу відрізка АВ навпіл:

1) поставити ніжку циркуля в точку А;

2) встановити розчин циркуля рівним довжині відрізка АВ;

3) провести коло;

4) поставити ніжку циркуля в точку В;

5) провести коло;

6) через точки перетину кіл провести пряму;

7) відзначити точку перетину цієї прямої з відрізком АВ.

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

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

Властивості алгоритму:

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

  • Кінцівка алгоритму - обов'язковість завершення кожної дії, що становлять алгоритм, і завершімость виконання алгоритму в цілому.

  • Результативність алгоритму, що передбачає, що виконання алгоритму має завершитися отриманням певних результатів.

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

  • Правильність алгоритму, під якою розуміється здатність алгоритму давати правильні результати вирішення поставлених завдань.

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

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

Алгоритм може бути представлений різними способами:

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

Наведемо приклад запису алгоритму на природній мові, тобто на мові людського спілкування. Потрібно обчислити суму двох чисел. Позначимо ці числа a і b. Тоді алгоритм можна записати наступним чином:

1. Вважати число a.

2. Вважати число b.

3. Виконати підсумовування c: = a + b.

4. Вивести число c.

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

Основними об'єктами програмування є змінні. Змінні в програмі відрізняються від змінних, що використовуються в запису математичних формул. Незважаючи на схожість термінів, правила використання змінних у програмах для комп'ютера відрізняються від правил роботи з математичними змінними. Це відмінність необхідно усвідомити. У програмуванні змінну можна трактувати як одну або декілька комірок оперативної пам'яті комп'ютера, яким присвоєно певне ім'я. Вміст цих осередків може змінюватися, але ім'я змінної залишається незмінним. У математиці значення змінної в рамках певного завдання незмінно, але змінюється в інших завданнях з даного класу. Саме тому конструкція а: = а + 1 сприймається програмістом цілком природно, а рівняння a = a + 1 математик вважатиме невірним. У першому випадку мається на увазі обчислення суми вмісту комірки а і числової константи 1 і занесення отриманого результату в ту ж клітинку а. Другий випадок рівносильний невірному тотожність 0 = 1.

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

Псевдокод:

Алгоритм <назва>

Початок

<Послідовність дій>

Кінець

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

В якості базових операцій використовуються:

  • операція присвоювання виду

<Мінлива>: = <вираз>

  • операція вводу / виводу

ввід (список введення)

висновок (список виведення).

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

D: = 5

D: = D +1

Min: = C

При виконанні операції введення введення (A, B, C) ​​змінною зі списку введення A, B і C присвоюються конкретні значення, що вводяться з клавіатури, наприклад:

-5 Липня 1920 {Enter}

У результаті в пам'яті отримаємо:

A = -5, B = 7, C = 20.

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

висновок (A, B, C, 10)

На екрані отримаємо:

- 5 20 липня 1910

Опис алгоритмів за допомогою блок-схем.

Для розробки структури програми зручніше користуватися записом алгоритму у вигляді блок-схеми (в англомовній літературі використовується термін flow-chart). Для зображення основних алгоритмічних структур і блоків на блок-схемах використовують спеціальні графічні символи.

Складемо алгоритм обчислення квадратного кореня з довільного позитивного дійсного числа х у вигляді блок-схеми.

Блок-схема для вирішення даного роду завдань буде виглядати наступним чином:

Початок

Введення дійсного числа х

Обчислення кореня за формулою

Висновок результату

Кінець

Глава 2. Класифікація алгоритмів

Розрізняють три типи базових структур:

  • Проходження

  • Розвилка

  • Цикл

Структура Наслідування - одна з найважливіших структур. Вона означає, що дві дії повинні бути виконані один за одним.

Структура Розвилка забезпечує вибір однієї з двох альтернатив: якщо <умова 1> то

<Дію 1>

інакше

<Дію 2>

всі

Існує скорочена форма структури Розвилка, яка дозволяє виконати дію або пропустити його:

якщо <умова> то <дію>

всі

Узагальненням структури Розвилка є Множинний вибір:

якщо Var = Const 1 то <дію 1>

якщо Var = Const 2 то <дію 2>

якщо Var = ConstN то <дію N>

всі

У залежності від значення змінної Var виконується одна із зазначених дій, наприклад, якщо Var = Const 3, то виконується <дію 3>.

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

  • цикл «від до»

  • цикл «поки»

  • цикл «до»

Цикл «від до» управляє повторенням виконання дії за допомогою змінної циклу:

цикл від I: = N 1 до N 2

<Дію>

КЦ

Тут I - мінлива циклу, N 1, N 2 - початкове і кінцеве значення змінної циклу, обчислюються один раз при вході в цикл. Змінна циклу пробігає всі наступні один за одним в порядку зростання значення від початкового до кінцевого. Зміна значення змінної циклу відбувається автоматично після кожного виконання дії, зазначеного всередині циклу. У залежності від співвідношення N 1 та N 2 цикл може не виконатися жодного разу (N 1> N 2) або виконатися (N 2 - N 1 +1) разів.

У циклі «поки» управління всередині циклу здійснюється за допомогою логічного умови:

цикл поки <умова>

<Дію>

КЦ

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

Третій тип структури цикл «до» має вигляд:

цикл

<Дію> до <умова>

КЦ

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

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

Залежно від застосовуваних базових структур розрізняють такі типи алгоритмів:

  • лінійні

  • розгалужуються

  • циклічні.

2.1 Лінійна алгоритмічна структура. Типові приклади

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

Покажемо загальну структуру лінійного алгоритму у вигляді блок-схеми.


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

Для реалізації процесу обробки даних використовується оператор присвоювання.

Результат обчислень поміщається в область S оперативної пам'яті. Щоб вивести результат з пам'яті на екран монітора необхідно використовувати оператор виводу.

Оператори введення даних:

  1. INPUT - оператор вводу даних з клавіатури. Дані задаються у вигляді змінних. Змінна - це величина, значення якої може змінюватися в процесі виконання програми. Для позначення змінної використовуються їх імена (ідентифікатори) - послідовність до 40 латинських букв і цифр, що починається з букви. Дані можуть бути наступних основних типів:

  • цілі INTEGER (Y%) - 2 байти в пам'яті (від -32768 до 32767),

  • довгі цілі LONG (Y &) - 4 байти (від -2 31 до 31 лютий -1),

  • речові SINGLE (Y) - 6 знаків після, -4 байта (від-3.4Е +38 до 3.4Е +38),

  • речові подвоєною точності DOUBLE (Y #) -16 знаків після, - 8 байт (від-Е +308 до Е +308),

  • символьні STRING (Y $) - послідовність символів до 32767 символів довжиною.

Наприклад: INPUT a, b або INPUT "Введіть два числа"; a, b

  1. DATA, READ - оператори введення даних з блоку пам'яті. Наприклад: DATA 3,4: READ a, b

Оператор присвоювання може бути використаний як для введення даних (Наприклад: a = 3: b = 4), так для обчислення виразів. (Наприклад: S = a * b). Оператор присвоювання обчислює вираз, розташоване праворуч від символу присвоювання (=) і результат присвоюється змінної, розташованої ліворуч від символу присвоювання. При записі арифметичного вираження використовуються арифметичні операції і функції. Пріоритет виконання арифметичних операцій зберігається. Функції можна використовувати стандартні (вбудовані) COS (X), SQR (X) ... і задаються самим користувачем. (Наприклад: Y = 3 * SQR (X) ^ 2)

Для виведення даних використовується оператор PRINT.

Наприклад: PRINT S або PRINT "Майдан"; S або PRINT a, b, S

Для закінчення програми використовується оператор END. На початку програми можна використовувати оператор очищення екрана - CLS.

Приклад лінійної програми обчислення площі прямокутника та її алгоритм у вигляді блок-схеми:

CLS

INPUT "Введіть дві сторони прямокутника"; a, b

S = a * b

PRINT "Майдан"; S

END

2.2 розгалужуються алгоритмічна структура. Основні оператори циклів. Типові приклади

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

Приклад разветвляющегося алгоритму - алгоритм вирішення квадратного рівняння. Поява умови при вирішенні цього завдання пов'язане з відсутністю коренів при негативному дискримінант. Розглянемо блок-схему цього алгоритму:


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

Для опису разветвляющегося алгоритму існують оператори:

  1. умовний

блокової структури:

IF умова THEN

блок дій 1

ELSE

блок дій 2

ENDIF

лінійної структури:

IF умова THEN блок 1 ELSE блок 2

Обидві структури можуть бути використані як у повній формі так і в усіченою - без блоку ELSE.

При роботі умовного оператора спочатку перевіряється виконання умови. Якщо умова виконується (істинне), то реалізується блок 1, у противному випадку - блок 2. Умова - це логічний вираз, що використовує операції порівняння (=, <,> <=,> =, <>) і логічні операції (AND, OR).

Програма вирішення квадратного рівняння з використанням умовного оператора має вигляд:

CLS: INPUT A, B, C: D = B ^ 2-4 * A * C

IF D> 0 THEN

X1 = (-b + SQR (d)) / (2 * a): X2 = (-b-SQR (d)) / (2 * a): PRINT X1, X2

ELSE

PRINT "Рішення немає"

ENDIF

  1. вибору (виразом може бути список через кому 1,3,4 діапазон значень 1 TO 9; операція порівняння IS> =).

SELECT CASE вираз

CASE умова 1

блок операторів 1

CASE умова 2

блок операторів 2

CASE ELSE

блок операторів n

END SELECT

CLS: INPUT A, B, C: D = B ^ 4 * A * C

SELECT CASE D

CASE IS> 0

X1 = (-b + SQR (d)) / (2 * a)

X2 = (-b-SQR (d)) / (2 * a): PRINT X1, X2

CASE ELSE

PRINT "Рішення немає "

END SELECT

END

2.3 Циклічні алгоритмічні структури. Основні оператори розгалуження. Типові приклади

Алгоритм називається циклічним, якщо містить ділянку, що повторюється один або багато разів.

Цикли бувають з певною кількістю, невизначеним числом обчислень.

Оператор циклу з параметром:

FOR I = I Н TO I K STEP h

тіло циклу

NEXT I

Оператор циклу з передумовою:

DO WHILE умова продовження обчислень (UNTIL умова припинення обчислень)

тіло циклу

LOOP

Оператор циклу з постусловіем:

DO

тіло циклу

LOOP WHILE умова продовження обчислень (UNTIL умова припинення обчислень)

Глава 3. Мови програмування

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

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

Зв'язок між мовою, на якому ми думаємо / програмуємо, і завданнями та рішеннями, які ми можемо представляти в своїй уяві, дуже близька. З цієї причини обмежувати властивості мови тільки цілями виключення помилок програміста в кращому випадку небезпечно. Як і у випадку з природними мовами, є величезна користь бути, принаймні, двомовним. Мова надає програмісту набір концептуальних інструментів, якщо вони не відповідають завданню, то їх просто ігнорують. Наприклад, серйозні обмеження концепції покажчика змушують програміста застосовувати вектора і цілу арифметику, щоб реалізувати структури, покажчики і т.п. Гарне проектування і відсутність помилок не може гарантуватися чисто за рахунок мовних засобів.

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

Персональні комп'ютери IBM використовують машинний мова мікропроцесорів сімейства 8086, тому що їх апаратна частина грунтується саме на даних мікропроцесорах.

Можна писати програми безпосередньо на машинній мові, хоча це й складно. На зорі комп'ютеризації (на початку 1950-х р.р.), машинний мова була єдиною мовою, більшого людина до того часу не придумав. Для порятунку програмістів від суворого машинної мови програмування, були створені мови високого рівня (тобто немашінние мови), які стали своєрідним сполучним мостом між людиною і машинним мовою комп'ютера. Мови високого рівня працюють через трансляційні програми, які вводять "вихідний код" (гібрид англійських слів і математичних виразів, який зчитує машина), і в кінцевому підсумку змушує комп'ютер виконувати відповідні команди, які даються на машинній мові. Існує два основних види трансляторів:

  • інтерпретатори, які сканують і перевіряють вихідний код в один крок,

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

3.1 Інтерпретатори

Одне, часто згадується перевагу интерпретаторной реалізації полягає в тому, що вона допускає "безпосередній режим". Безпосередній режим дозволяє вам задавати комп'ютеру завдання на зразок PRINT 3.14159 * 3/2.1 і повертає вам відповідь, як тільки ви натиснете клавішу ENTER (це дозволяє використовувати комп'ютер вартістю 3000 доларів в якості калькулятора вартістю 10 доларів). Крім того, інтерпретатори мають спеціальні атрибути, які спрощують налагодження. Можна, наприклад, перервати обробку интерпретаторной програми, відобразити вміст певних змінних, побіжно переглянути програму, а потім продовжити виконання.

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

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

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

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

3.2 Компілятори

Компілятор-це транслятор тексту на машинну мову, який зчитує вихідний текст. Він оцінює його відповідно до синтаксичною конструкцією мови та перекладає на машинний мова. Іншими словами, компілятор не виконує програми, він їх будує. Інтерпретатори неможливо відокремити від програм, які ними проганяються, компілятори роблять свою справу і йдуть зі сцени. При роботі з компілюються мовою, такою як Турбо-Бейсік, ви прийдете до необхідності мислити про ваших програмах в ознаках двох головних фаз їх життя: періоду компілювання і періоду прогону. Більшість програм будуть прогоняться в чотири - десять разів швидше їх интерпретаторной еквівалентів. Якщо ви попрацюєте над поліпшенням, то зможете досягти 100-кратного підвищення швидкодії. Зворотний бік монети полягає в тому, що програми, які витрачають велику частину часу на метушню з файлами на дисках або очікування введення, не зможуть продемонструвати якесь вражаюче збільшення швидкості.

3.3 Еволюція і класифікація мов програмування

Машинно - орієнтовані мови - це мови, набори операторів і образотворчі засоби яких істотно залежать від особливостей ЕОМ (внутрішнього мови, структури пам'яті і т.д.). Машинно-орієнтовані мови дозволяють використовувати всі можливості та особливості Машинно - залежних мов:

- Висока якість створюваних програм (компактність і швидкість виконання);

- Можливість використання конкретних апаратних ресурсів;

- Передбачуваність об'єктного коду та замовлень пам'яті;

- Для складання ефективних програм необхідно знати систему команд і особливості функціонування даної ЕОМ;

- Трудомісткість процесу складання програм (особливо на машинних мовах і ЯСК), погано захищеного від появи помилок;

- Низька швидкість програмування;

- Неможливість безпосереднього використання програм, складених на цих мовах, на ЕОМ інших типів.

Машинно-орієнтовані мови за ступенем автоматичного програмування поділяються на класи.

Машинну мову. Окремий комп'ютер має свій певний Машинний мова (далі МЯ), йому наказують виконання згаданих операцій над обумовленими ними операндами, тому МЯ є командним. Однак, деякі сімейства ЕОМ (наприклад, ЄС ЕОМ, IBM/370 / та ін) мають єдиний МЯ для ЕОМ різної потужності. У команді будь-якого з них повідомляється інформація про місцезнаходження операндів і типі виконуваної операції.

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

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

Використання символічних адрес - перший крок до створення ЯСК. Команди ЕОМ замість істинних (фізичних) адрес містять символічні адреси. За результатами складеної програми визначається необхідна кількість осередків для зберігання вихідних проміжних і результуючих значень. Призначення адрес, що виконується окремо від складання програми в символічних адресах, може проводитися менш кваліфікованим програмістом або спеціальною програмою, що в значній мірі полегшує працю програміста.

Автокоди. Є також мови, що включають в себе всі можливості ЯСК, за допомогою розширеного введення макрокоманд - вони називаються Автокод.

У різних програмах зустрічаються деякі досить часто використовуються командні послідовності, які відповідають певним процедурам перетворення інформації. Ефективна реалізація таких процедур забезпечується оформленням їх у вигляді спеціальних макрокоманд і включенням останніх у мову програмування, доступний програмістові. Дії переводяться в машинні команди двома шляхами - розстановкою і генеруванням. У постановочної системі містяться «кістяки» - серії команд, що реалізують необхідну функцію, позначену макрокоманд. Дії забезпечують передачу фактичних параметрів, які в процесі трансляції вставляються в «кістяк» програми, перетворюючи її в реальну машинну програму.

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

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

Розвинені автокоди отримали назву Асемблер. Сервісні програми тощо, як правило, складені на мовах типу Асемблер.

Макрос. Мова, що є засобом для заміни послідовності символів описують виконання необхідних дій ЕОМ на більш стислу форму - називається Макрос (засіб заміни).

В основному, Макрос призначений для того, щоб скоротити запис вихідної програми. Компонент програмного забезпечення, що забезпечує функціонування макросів, називається Макропорцесори. На макропроцесор надходить макроопределяющій і початковий текст. Реакція макропроцесора на виклик-видача вихідного тексту.

Макрос однаково може працювати, як із програмами, так і з даними.

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

Подібні мови отримали назву високорівневих мов програмування. Програми, що складаються на таких мовах, являють собою послідовності операторів, структуровані відповідно до правил розглядання мови (завдання, сегменти, блоки і т.д.). Оператори мови описують дії, які повинна виконувати система після трансляції програми на МЯ.

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

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

Проблемних мов дуже багато, наприклад:

Фортран, Алгол - мови, створені для вирішення математичних завдань;

Simula, сленг - для моделювання;

Лісп, Снобол - для роботи з обліковим структурами.

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

Програми в Пл / 1 компілюються за допомогою автоматичних процедур. Мова використовує багато властивостей Фортрану, Алгол, Кобола. Проте він допускає не тільки динамічне, але і кероване і статистичне розподілу пам'яті.

Діалогові мови. Поява нових технічних можливостей поставило завдання перед системними програмістами - створити програмні засоби, що забезпечують оперативну взаємодію людини з ЕОМ їх назвали діалоговими мовами.

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

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

Одним із прикладів діалогових мов є Бейсік. Бейсік використовує позначення подібні звичайним математичним виразами. Багато операторів є спрощеними варіантами операторів мови Фортран. Тому ця мова дозволяє вирішувати досить широке коло завдань.

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

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

Табличні методи легко освоюються фахівцями будь-яких професій.

Програми, складені на табличному мовою, зручно описують складні ситуації, що виникають при системному аналізі.

Висновок

Винахід мови програмування вищого рівня дозволило нам спілкуватися з машиною, розуміти її (якщо звичайно Вам знаком використовувана мова), як розуміє американець трохи знайомий з російською мовою стародавню азбуку Кирилиці. Простіше кажучи, ми в нашому розвитку науки програмування поки що з ЕОМ на ВИ. Але якщо ми звернемо увагу на темпи росту і розвитку новітніх технологій в області програмування, то можна припустити, що в найближчому майбутньому, людські пізнання в цій сфері, допоможуть зробити на світло мови, вміють приймати, обробляти і передавати інформації у вигляді думки, слова, звуку чи жесту. Так і хочеться назвати це дітище комп'ютеризованого майбутнього: «мови програмування" найвищого "рівня». Можливо, концепція вирішення цього питання проста, а найближче майбутнє цього проекту вже не за горами.

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

Єдиний спосіб вивчати нову мову програмування - писати на ньому програми.

Список літератури

  1. Коляда М. Г. Вікно у дивовижний світ інформатики. - Д.: Сталкер, 1997.

  2. Немнюгин С. А. Turbo Pascal: практикум. - СПб: Питер, 2003.

  3. Попов В. Б. Turbo Pascal для школярів: Учеб. посібник. - М.: Фінанси і статистика, 2000.

  4. Турбо Паскаль 7.0. Самовчитель. - СПб.: Пітер; К.: Видавнича група BHV, 2002.

  5. "Мови програмування високого рівня", Хротко Г., 2002 р.;

  6. "Мови програмування", Малютін Е.А., Малютіна Л.В., 2005 р.;

  7. "Нові мови програмування та тенденції їх розвитку", Ушкова В., 2007 р.;

  8. "Світ Ліспу" т.1, Хьювенен Е., Сеппенен Й., 1990 р.;

  9. "Алгоритмічні мови реального часу", Янг С., 2005 р..

Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Контрольна робота
104.3кб. | скачати


Схожі роботи:
Алгоритм і його властивості
Зворотний польський запис та алгоритм його побудови
Спосіб сталого рішення нестійких завдань і його алгоритм
Алгоритм обчислення виразу за його ЗПЗ Записи з варіантами
Природа злочину його визначення Поняття про склад злочину його структура
Місто та його структура
Рецепт та його структура
Доказ і його структура
Акціонерний капітал та його структура
© Усі права захищені
написати до нас