Основы алгоритмизации задач. Алгоритмы. Алгоритмические структуры. Алгоритмические языки

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

Рубрика Программирование, компьютеры и кибернетика
Вид лекция
Язык русский
Дата добавления 20.01.2015
Размер файла 56,8 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Основы алгоритмизации задач. Алгоритмы. Алгоритмические структуры. Алгоритмические языки

Понятие алгоритма

Алгоритм относится к фундаментальным понятиям информатики. На понятии алгоритма построены все основные принципы программирования - составления программ для компьютеров.

Само слово «алгоритм» происходит от имени средневекового математика Абу Джафара ибн Муссы аль-Хорезми, который еще в IX веке (825 г.) сформулировал правила выполнения арифметических действий. Редакция последней части имени ученого в европейских языках привело к образованию термина «алгорифм» или «алгоритм». Первоначально под алгоритмами и понимали только правила выполнения четырех арифметических действий над многозначными числами.

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

Основные свойства алгоритма:

дискретность - представление процесса в виде отдельных элементарных шагов, логическая взаимосвязь выполнения которых исполнителем (человеком или машиной) не вызывает сомнения;

детерминированность (определенность) - все действия, которое необходимо произвести на каждом шаге алгоритма, должны быть строго и однозначно определены.

массовость - один и тот же алгоритм применим для целого класса задач (возможность выполнения с различными исходными данными);

конечность - любой алгоритм должен заканчиваться после конечного числа шагов.

результативность - обязательное получение конечного результата, пусть даже не совпадающего с ожиданиями и предположениями (отрицательный результат - это тоже результат).

Особенности алгоритма:

ввод - наличие некоторых исходных данных, известных до начала работы;

эффективность - все выполняемые действия должны быть реализуемыми в приемлемый отрезок времени;

вывод - алгоритм обязан выдавать определенную информацию по его завершении.

Чтобы та или иная последовательность действий считалась алгоритмом, она должна удовлетворять всем названным требованиям

Словесная запись алгоритмов.

Самой распространенной формой представления алгоритмов, адресуемых человеку, является обычная словесная запись. Форму словесной записи имеют многие так называемые «бытовые» алгоритмы, часто используемые в повседневной практике: как выкрасить изделие, как позвонить по междугородному телефону-автомату, как пользоваться стиральной машиной и т.п. Особенность словесных представлений алгоритмов в том, что таким путем при желании могут быть описаны любые алгоритмы, в том числе и вычислительные.

Например. Пусть требуется записать последовательность элементарных действий для вычислений по формуле:

При составлении требуемой алгоритмической записи предположим, что правило выполнения арифметических операций сложения, умножения и деления, а также действия извлечения квадратного корня понятны вычислителю, т.е. являются для него элементарными. При этом предположении искомый алгоритм в обычной словесной записи может иметь вид:

1. Прочитать заданное значение х.

2. Умножить х на 8.

3. Из результата второго действия извлечь квадратный корень.

4. К результату третьего действия прибавить 1.

5. Умножить х на 3.

6. Результат пятого действия разделить на результат четвертого действия.

7. Записать значение результата у.

Получили словесную запись линейного вычислительного алгоритма.

Следует особое внимание обратить на первое и последнее предписания в этой записи, обеспечивающие задание значения исходного данного и выдачу полученного ответа. При всей кажущейся излишней педантичности этих предписаний они имеют первостепенное значение в алгоритмах, адресуемых исполнителям-автоматам. Формулируя эти предписания, автор алгоритма должен четко определить для себя, что в этой задаче «дано», а что «требуется получить». Или, говоря иными словами, какие величины являются носителями исходных значений (входные величины, или аргументы), а какие - носителями значений результатов (выходные величины или результаты). В приведенной выше записи вычислительного алгоритма входной величиной является х, а выходной - y.

Графическое представление алгоритмов

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

Введем для нее некоторые обозначения.

Обработка - действие, которое необходимо выполнить. обозначается прямоугольником с одним входом и одним выходом (рис. а).

Проверка - проверяет выполнение некоторого условия Р, имеет один вход и два выхода (рис. б).

Слияние - это соединение путей управления, имеет два входа и выход (рис. в).

Начало и конец - обозначают начало и конец вычислительного процесса (рис. г).

Ввод и вывод данных, не привязанный к конкретному устройству, обозначается параллелограммом. Внутри него пишется слово «Ввод» или «Вывод» и перечисляются вводимые или выводимые переменные.

Условные графические изображения структурных элементов алгоритма

Из данных элементарных блок-схем можно построить четыре блок-схемы, имеющих особое значение для практики алгоритмизации.

программирование алгоритм компьютерный

Основные алгоритмические структуры

Изображены следующие блок-схемы: а - композиция, или следование; б - альтернатива, или развилка, в и г - блок-схемы, каждую из которых называют итерацией, или циклом (с предусловием (в), с постусловием (г)). S1 и S2 представляют собой в общем случае некоторые серии команд для соответствующего исполнителя, В-это условие, в зависимости от истинности (Т) или ложности (F) которого управление передаётся по одной из двух ветвей. Можно доказать, что для составления любого алгоритма достаточно представленных выше четырех блок-схем, если пользоваться их последовательностями и / или суперпозициями.

Блок-схема «альтернатива» может иметь и сокращенную форму, в которой отсутствует ветвь S2. Развитием блок-схемы типа альтернатива является блок-схема «выбор».

 Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Развитие структуры типа «альтернатива»;

а) - неполная развилка; б) - структура «выбор»

Мы завершили рассмотрение основных структурных элементов алгоритмов: следования, развилки и цикла (повторения), являющихся базовыми элементами. Еще в 1966 году К. Бойм и Д. Якопини доказали, что алгоритм решения любой логической задачи можно составить из этих трех структур. С их помощью можно представлять любые линейные, разветвляющиеся и циклические алгоритмические процессы

Алгоритмические языки. Классификация

Алгоритмический язык формальный язык, предназначенный для записи алгоритмов. Он определяется заданием алфавита (словаря исходных символов), точным описанием его синтаксиса (грамматики) и семантики.

Правила преобразования информации в различных алгоритмах могут быть самыми различными. Однако все алгоритмы могут быть составлены из сравнительно небольшого числа элементарных команд.

Все многообразие существующих в настоящее время алгоритмических языков обычно классифицируют по степени их зависимости от типа машин, от ориентации на сферу применения, по специфике организационной структуры языковых конструкциий.

По первому признаку они делятся на две большие группы: машинно-зависимые и машинно-независимые языки. Машинно-зависимые языки классифицируют на машинные и машинно-ориентированные (автокоды). Различают два уровня машинно-ориентированных языков: символического кодирования (ассемблеры) и макроязыки (макроассемблеры).

В мнемокоде цифровой код операции заменен буквенным (мнемоническим), а цифровые адреса - буквенными именами.

В макроязыках, кроме кодов мнемоязыка, используются макрокоманды, которые не имеют в машинном языке непосредственных аналогов (они включают в себя несколько команд). Сокращая длину исходной программы, макроязыки позволяют несколько повысить производительность программистов.

Программист, работающий с машинно-зависимыми языками, должен хорошо знать конструктивные особенности ЭВМ, для которой он составляет программу. Это требование значительно уменьшается при использовании машинно-независимых языков.

Программы, записанные на машинно-независимых языках, почти не зависят от типа ЭВМ. Структура этих языков ближе к структуре естественных языков, например к структуре английского языка, чем к структуре машинно-ориентированных языков. Поэтому эти языки могут применять непрофессиональные программисты.

Машинно-независимые языки в последние годы обычно разделяют на: процедурно-ориентированные (Бейсик, Паскаль, Фортран, Кобол, ПЛ/1), проблемно-ориентированные (РПГ, Лисп, АПЛ), объектно-ориентированные (ADA, JAVA, Delpi, Visual Basic, Си++).

Каждая группа языков характеризуется некоторым уровнем. Считается, что уровень языка тем выше, чем более он абстрагирован от конкретного машинного языка. Иначе, говоря, язык принадлежит к более высокому уровню, если его операторы инициируют большее число машинных команд, чем операторы другого языка.

Структура алгоритмического языка

В основе любого языка (естественного или искусственного) лежит набор исходных букв (символов), называемый алфавитом языка.

Алфавиты алгоритмических языков состоят обычно из следующих наборов:

букв латинского алфавита и алфавита национального языка;

цифр (от 1 до 9);

знаков операций:

арифметических

логических

отношения

специальных знаков.

Знаки могут объединяться в слова, т.е. в элементарные конструкции языка, рассматриваемые в данном тексте как неделимые символы. Словарный состав языка, т.е. набор допустимых слов и символов, вместе с описанием способов их представления составляет лексику языка.

В алгоритмических языках есть два класса слов - данные и ключевые слова.

Любой набор знаков, рассматриваемый безотносительно к его смыслу, называют данными.

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

Слова объединяются в предложения языка - более сложные языковые конструкции, которые, как правило, определяют последовательность действий в ходе выполнения программы. Такие предложения включают операторы, выражения и описатели.

Описания - это особые операторы, не выполняющие активных действий над данными, но описывающие их свойства (атрибуты), т.е. тип, основание системы счисления, точность представления, форму и т.д.

Оператор - это минимальная конструкция языка, задающая описание некоторого действия, наиболее распространены в процедурно-ориентированных языках следующие операторы:

присваивания

безусловной передачи управления

условной передачи управления

цикла

ввода и вывода данных.

Кроме перечисленных, имеются и другие операторы, характерные для; конкретных языков, а иногда и для конкретной аппаратуры.

Из предложений (операторов и выражений) образуются программы. Для удобства составления, отладки и работы готовые программы обычно разбивают на части, которые называются программными единицами.

Выражения образуются из данных и знаков операций. Они обычно имеют тот же смысл, что и аналогичные математические выражения.

По своему характеру выражения могут быть арифметическими и логическими. В этих выражениях над операндами производятся операции соответственно арифметического и логического типов.

Программная единица - это основная программа или подпрограмма. Выполнение любой составной программы начинается с выполнения основной программы (главной).

Подпрограммы бывают двух типов собственно подпрограммы (процедуры) и подпрограммы-функции.

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

Подпрограммы-функции служат для вычисления значений, которые должны быть немедленно использованы. Результат выполнения подпрограммы-функции всегда является скалярной величиной и используется непосредственно в качестве операнда выражения, из которого был сделан вызов подпрограммы-функции.

Разбиение больших сложных программ на отдельные программные единицы позволяет распараллеливать программистскую работу и тем самым сокращать сроки создания больших программных комплексов.

Размещено на Allbest.ru


Подобные документы

  • Понятие алгоритма, его свойства. Дискретность, определенность, результативность, формальность как свойства алгоритма. Программа как описание структуры алгоритма на языке алгоритмического программирования. Основные структурные алгоритмические конструкции.

    реферат [1,3 M], добавлен 18.11.2010

  • Свойства алгоритма как определенного содержания и порядка действий над объектами. Базовые алгоритмические структуры: следование, ветвление, повторение. Структурированные типы данных. Реализация на языке программирования задач при помощи алгоритмов.

    контрольная работа [598,6 K], добавлен 06.12.2014

  • Виды и свойства информации. Основные понятия систем счисления. Форматы данных. Принципы построения компьютеров. Аппаратные средства мультимедиа. Базовые алгоритмические структуры. Языки программирования низкого уровня. Операционные системы Windows.

    шпаргалка [2,2 M], добавлен 19.06.2010

  • Основные свойства алгоритма. Формальный и неформальный исполнитель алгоритма, система его команд. Способы записи алгоритма. Словесное описание, построчная запись, опорный конспект. Характеристики алгоритмического языка. Выполнение алгоритма компьютером.

    презентация [2,0 M], добавлен 04.04.2014

  • Понятие алгоритма и его характеристики как основного элемента программирования. Формы представления алгоритмов, основные алгоритмические структуры. Структурное и событийно-ориентированное программирование. Объектно-ориентированное программирование.

    реферат [86,0 K], добавлен 17.07.2008

  • Цель информационного программирования; алгоритмический язык как система обозначений и правил для единообразной и точной записи алгоритмов и их исполнения. Языки программирования низкого и высокого уровня; классификация и использование структуры данных.

    реферат [383,1 K], добавлен 07.01.2012

  • Работа с массивами, их ввод и вывод, организация программ циклической структуры. Способы описания и использования массивов, алгоритмы их сортировки, сортировка выбором и вставками. Алгоритмы поиска элемента в неупорядоченном и упорядоченном массивах.

    лабораторная работа [14,2 K], добавлен 03.10.2010

  • Создание блок-схемы алгоритма и реализующей его программы, снабженных пояснениями, для решения задач. Реализация программы в среде Delphi как проекта консольного приложения. Основные алгоритмические структуры, соответствующие операторы для их реализации.

    контрольная работа [447,4 K], добавлен 08.10.2012

  • Классификация языков программирования. Использование циклических конструкций и выполнение итерационных процессов. Алгоритмические структуры циклов языков C, C++, Java, C#. Особенности современных языков программирования высокого уровня и их применение.

    курсовая работа [345,6 K], добавлен 13.11.2009

  • Основные алгоритмические структуры. Запись алгоритма в словесной форме, в виде блок-схемы. Система команд исполнителя. Язык высокого уровня. Создание программы и её отладка. Интегрированные среды разработки: Integrated Development Environment, IDE.

    лекция [61,7 K], добавлен 09.10.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.