Загальний вигляд алгоритму: алг назва алгоритму (аргументи і результати) дано умови застосовності алгоритму треба мета виконання алгоритму поч опис проміжних величин | послідовність команд (тіло алгоритму) кін
Частина алгоритму від слова алг до слова поч називається заголовком, а частина, яка знаходиться між словами поч і кін - тілом алгоритму.
У реченні алг після назви алгоритму в круглих дужках вказуються характеристики (арг, рез) і тип значення (цілий, вещ, сім, лит або лог) всіх вхідних (аргументи) і вихідних (результати) змінних. При описі масивів (таблиць) використовується службове слово таб, доповнене граничними парами по кожному індексу елементів масиву.
Приклади пропозицій алг:
o алг Обсяг і площа циліндра (арг вещ R, H, рез вещ V, S)
o алг Коріння КвУр (арг вещ а, b, c, рез вещ x1, x2, рез літ t)
o алг Виключити елемент (арг цілий N, арг рез вещ таб А [1: N])
o алг Діагональ (арг цілий N, арг цілий таб A [1: N, 1: N], рез літ Otvet)
Пропозиції дано і треба не обов'язкові. У них рекомендується записувати твердження, що описують стан середовища виконавця алгоритму, наприклад:
1. алг Заміна (арг літ Str1, Str2, арг рез літ Text) 2. дано | довжини подстрок Str1 і Str2 совпадают3. треба | всюди в рядку Text подстрока Str1 замінена на Str2
5. алг Число максимумів (арг цілий N, арг вещ таб A [1: N], рез цілий K) 6. дано | N> 07. треба | К - кількість максимальних елементів в таблиці А
9. алг Опір (арг вещ R1, R2, арг цілий N, рез вещ R) 10. дано | N> 5, R1> 0, R2> 011. треба | R - опір схеми
Оператор присвоювання. Служить для обчислення виразів і присвоювання їх значень змінним. Загальний вигляд: А: = В, де знак ": =" означає команду замінити колишнє значення змінної, що стоїть в лівій частині, на обчислене значення виразу, що стоїть в правій частині.
Для введення і виведення даних використовують команди
· Введення імена змінних
· Висновок імена змінних, вирази, тексти.
Для розгалуження застосовують команди якщо і вибір, для організації циклів - команди для і поки, описані в розділі 7.9.
алг Сума квадратів (арг цілий n, рез цілий S) дано | n> 0надо | S = 1 * 1 + 2 * 2 + 3 * 3 +. + N * Nнач цілий i введення n; S: = 0 нц для i від 1 до n S: = S + i * i КЦ висновок "S =", Sкон
7.9. Що таке базові алгоритмічні структури?
Алгоритми можна представляти як деякі структури, що складаються з окремих базових (тобто основних) елементів. Природно, що при такому підході до алгоритмам вивчення основних принципів їх конструювання має починатися з вивчення цих базових елементів. Для їх опису будемо використовувати мову схем алгоритмів і шкільний алгоритмічний мову.
Логічна структура будь-якого алгоритму може бути представлена комбінацією трьох базових структур: слідування, розгалуження, цикл.
Характерною особливістю базових структур є наявність в них одного входу і одного виходу.
1. Базова структура проходження. Утворюється з послідовності дій, йдуть одне за одним:
Шкільний алгоритмічний мову
7.10. Які цикли називають ітераційним?
Особливістю итерационного циклу є те, що число повторень операторів тіла циклу заздалегідь невідомо. Для його організації використовується цикл типу поки. Вихід з ітераційного циклу здійснюється в разі виконання заданої умови.
На кожному кроці обчислень відбувається послідовне наближення і перевірка умови досягнення бажаного результату.
Приклад. Скласти алгоритм обчислення суми ряду
із заданою точністю (для даного Знакозмінні статечного ряду необхідна точність буде досягнута, коли чергове доданок стане по абсолютній величині менше).
Обчислення сум - типова циклічна завдання. Особливістю ж нашої конкретного завдання є те, що число доданків (а, отже, і число повторень тіла циклу) заздалегідь невідомо. Тому виконання циклу має завершитися в момент досягнення необхідної точності.
При складанні алгоритму потрібно врахувати, що знаки доданків чергуються і ступінь числа х в чисельнику доданків зростає.
Вирішуючи цю задачу "в лоб" шляхом обчислення на кожному i-му кроці часткової суми
ми отримаємо дуже неефективний алгоритм, що вимагає виконання великого числа операцій. Набагато краще організувати обчислення наступним чином: якщо позначити чисельник якого-небудь доданка буквою р, то у наступного доданка чисельник дорівнюватиме -р * х (знак мінус забезпечує чергування знаків доданків), а саме доданок m дорівнюватиме p / i, де i - номер доданка.
Порівняйте ці два підходи по числу операцій.
Алгоритм на шкільному АЯ
алг Сума (арг вещ x, Eps, рез вещ S) дано | 0
Алгоритм, до складу якого входить ітераційний цикл, називається ітеpаціонним алгоpитмами. Ітераційні алгоритми використовуються при реалізації ітераційних чисельних методів.
В ітераційних алгоритмах необхідно забезпечити обов'язкове досягнення умови виходу з циклу (збіжність ітераційного процесу). В іншому випадку відбудеться зациклення алгоритму, тобто не виконуватиметься основне властивість алгоритму - результативність.
7.11. Що таке вкладені цикли?
Можливі випадки, коли всередині тіла циклу необхідно повторювати деяку послідовність операторів, т. Е. Організувати внутрішній цикл. Така структура отримала назву циклу в циклі або вкладених циклів. Глибина вкладення циклів (тобто кількість вкладених один в одного циклів) може бути різною.
При використанні такої структури для економії машинного часу необхідно виносити з внутрішнього циклу в зовнішній всі оператори, що не залежать від параметра внутрішнього циклу.
Приклад вкладених циклів для
Обчислити суму елементів заданої матриці А (5,3).
нц для i від 1 до 5 нц для j від 1 до 3 S: = S + A [i, j] кц кц
Приклад вкладених циклів поки
Обчислити твір тих елементів заданої матриці A (10,10), які розташовані на перетині парних рядків і парних стовпців.
i: = 2; P: = 1 нц поки i <= 10 j:=2 нц пока j <= 10 P:=P*A[i,j] j:=j+2 кц i:=i+2 кц
7.12. Чим відрізняється програмний спосіб запису алгоритмів від інших?
При записи алгоритму в словесній формі, у вигляді блок-схеми або на псевдокоді допускається певний свавілля при зображенні команд. Разом з тим такий запис точна настільки, що дозволяє людині зрозуміти суть справи і виконати алгоритм.
Однак на практиці в якості виконавців алгоритмів використовуються спеціальні автомати - комп'ютери. Тому алгоритм, призначений для виконання на комп'ютері, повинен бути записаний на "зрозумілій" йому мовою. І тут на перший план висувається необхідність точного запису команд, яка не залишає місця для довільного тлумачення їх виконавцем.
Отже, мова для запису алгоритмів повинен бути формалізований. Така мова прийнято називати мовою програмування, а запис алгоритму на цій мові - програмою для комп'ютера.
7.13.Что таке рівень мови програмування?
В даний час в світі існує кілька сотень реально використовуваних мов програмування. Для кожного є своя область застосування.
Будь алгоритм, як ми знаємо, є послідовність приписів, виконавши які можна за кінцеве число кроків перейти від вихідних даних до результату. Залежно від ступеня деталізації приписів зазвичай визначається рівень мови програмування - чим менше деталізація, тим вище рівень мови.
За цим критерієм можна виділити такі рівні мов програмування:
· Машинно-незалежні (мови високого рівня).
Машинні мови і машинно-орієнтовані мови - це мови низького рівня, що вимагають вказівки дрібних деталей процесу обробки даних.
Мови ж високого рівня імітують природні мови, використовуючи деякі слова розмовної мови і загальноприйняті математичні символи. Ці мови більш зручні для людини.
Мови високого рівня діляться на:
· Алгоритмічні (Basic, Pascal, C та ін.), Які призначені для однозначного опису алгоритмів;
· Логічні (Prolog, Lisp і ін.), Які орієнтовані не на розробку алгоритму рішення задачі, а на систематичне і формалізований опис задачі з тим, щоб рішення випливало з складеного опису.
· Об'єктно-орієнтовані (Object Pascal, C ++, Java і ін.), В основі яких лежить поняття об'єкта, що поєднує в собі дані і дії над нами. Програма на об'єктно-орієнтованої мови, вирішуючи деяку задачу, по суті описує частину світу, що відноситься до цього завдання. Опис дійсності в формі системи взаємодіючих об'єктів природніше, ніж в формі взаємодіючих процедур.
7.14. Які у машинних мов переваги і недоліки?
При програмуванні на машинному мові програміст може тримати під своїм контролем кожну команду і кожну клітинку пам'яті, використовувати всі можливості наявних машинних операцій.
Але процес написання програми на машинній мові дуже трудомісткий і виснажливий. Програма виходить громіздкою, труднообозримой, її важко налагоджувати, змінювати і розвивати.
Тому в разі, коли потрібно мати ефективну програму, в максимальному ступені враховує специфіку конкретного комп'ютера, замість машинних мов використовують близькі до них машинно-орієнтовані мови (асемблери).
7.15. Що таке мова асемблера?
Мова асемблера - це система позначень, яка використовується для подання в зрозумілій формі програм, записаних в машинному коді.
Переклад програми з мови асемблера на машинну мову здійснюється спеціальною програмою, яка також називається асемблером і є, по суті, найпростішим транслятором.
7.16. У чому переваги алгоритмічних мов перед машинними?
Основні переваги такі:
· Алфавіт алгоритмічної мови значно ширше алфавіту машинного мови, що істотно підвищена шает наочність тексту програми;
· Набір операцій, допустимих для використання, не залежить від набору машинних операцій, а вибирається з міркувань зручності формулювання алгоритмів розв'язання задач певного класу;
· Формат пропозицій досить гнучкий і зручний для використання, що дозволяє за допомогою одного перед розкладання задати досить змістовний етап обра лення даних;
· Необхідні операції задаються за допомогою загальноприйнятих математичних позначень;
· Даними в алгоритмічних мовах присвоюються індивідуальні імена, обрані програмістом;
· В мові може бути передбачений значно ширший набір типів даних в порівнянні з набором машинних типів даних.
Таким чином, алгоритмічні мови в значній мірі є машинно-незалежними. Вони полегшують роботу програміста і підвищують надійність створюваних програм.
7.17. Які компоненти утворюють алгоритмічний мову?
Алгоритмічна мова (як і будь-який інший мову) утворюють три його складові: алфавіт, синтаксис і семантика.
Алфавіт - це фіксований для даного мови набір основних символів, тобто "Букв алфавіту", з яких повинен складатися будь-який текст на цій мові - ніякі інші символи в тексті не допускаються.
Синтаксис - це правила побудови фраз, що дозволяють визначити, правильно чи неправильно написана та чи інша фраза. Точніше кажучи, синтаксис мови являє собою набір правил, що встановлюють, які комбінації символів є осмисленими пропозиціями на цій мові.
Семантика визначає смислове значення пропозицій мови. Будучи системою правил тлумачення окремих мовних конструкцій, семантика встановлює, які послідовності дій описуються тими чи іншими фразами мови і, в кінцевому підсумку, який алгоритм визначений за цим текстом на алгоритмічній мові.
7.18. Які поняття використовують алгоритмічні мови?
Кожне поняття алгоритмічного мови має на увазі деяку синтаксичну одиницю (конструкцію) і обумовлені нею властивості програмних об'єктів або процесу обробки даних.
Поняття мови визначається у взаємодії синтаксичних і семантичних правил. Синтаксичні правила показують, як утворюється дане поняття з інших понять і букв алфавіту, а семантичні правила визначають властивості даного поняття
Основними поняттями в алгоритмічних мовах зазвичай є наступні.
Імена (ідентифікатори) - употpебляются для позначення об'єктів програмі (змінні, масивів, функцій тa ін.).
Опеpации. Типи операцій:
· Аpіфметіческіе опеpации +. -. *. / Тa ін. ;
· Логічні опеpации і, або, не;
· Опеpации відносини <.>. <=,>=. =. <> ;
· Опеpаций зчіпки (інакше, "приєднання", "конкатенації") символьних значень друг з одним з утворенням однієї довжини рядка; зображується знаком "+".
Дані - величини, оброблятися пpогpаммой. Є тpи основні види даних: константи, змінні і масиви.
· Константи - це дані, які зафіксовані в тексті програми і не змінюються в процесі її виконання.
o числові 7.5, 12;
o логічні та (істина), немає (брехня);
o символьні "А", "+";
o літеpние "abcde", "інформатика", "" (порожній рядок).
· Змінні позначаються іменами і можуть змінювати свої значення в ході виконання програмі. Змінні бувають цілі, речові, логічні, символьні і літерні.
· Масиви - послідовності однотипних елементів, число яких фіксоване і яким присвоєно одне ім'я. Положення елемента в масиві однозначно визначається його індексами (одним, в разі одновимірного масиву, або декількома, якщо масив багатомірний). Іноді масиви називають таблицями.
Вираженню - пpедназначавшейся для виконання необхідних обчислень, складаються з констант, змінні, покажчиків функцій (напpимеp, exp (x)), об'єднаних знаками опеpаций.
Вирази записуються у вигляді лінійних послідовностей символів (без підрядкових і надрядкових символів, "багатоповерхових" дробів і т.д.), що дозволяє вводити їх в комп'ютер, послідовно натискаючи на відповідні клавіші клавіатури.
Розрізняють вираження арифметичні, логічні та рядкові.
· Арифметичні вирази служать для визначення одного числового значення. Наприклад, (1 + sin (x)) / 2. Значення цього виразу при x = 0 дорівнює 0.5, а при x = p / 2 - одиниці.
· Логічні вирази описують деякі умови, які можуть задовольнятися або не задовольняє. Таким чином, логічне вираз може приймати тільки два значення - "істина" або "брехня" (так чи ні). Розглянемо як приклад логічне вираз x * x + y * y · Значення строкових (літерних) виразів - текcт. У них можуть входити літерні константи, літерні змінні і літерні функції, розділені знаком операції зчіпки. Наприклад, А + В означає приєднання рядки В до кінця рядка А. Якщо А = "кущ". а В = "зелений". то значення виразу А + В є "кущ зелений". Оператори (команди). Оператор - це найбільш велике і змістовне поняття мови: кожен оператор є закінченою фразу мови і означає якийсь цілком закінчений етап обробки даних. До складу опеpатоpов входять: Оператори подpазделяются на виконувані і невиконувані. Невиконувані опеpатоpа пpедназначено для опису даних і стpуктуp програмі, а виконувані - для виконання різноманітним дій (напpимеp, опеpатоp пpісваіванія, опеpатоpа введення і виведення, умовний оператор, оператори циклу, оператор процедури тa ін.). 7.19. Що таке стандартна функція? При вирішенні різних завдань за допомогою комп'ютера буває необхідно обчислити логарифм або модуль числа, синус кута і т.д. Обчислення часто вживаних функцій здійснюються за допомогою підпрограм, званих стандартними функціями, які заздалегідь запрограмовані і вбудовані в транслятор мови.Схожі статті