Алгоритмы

Автор работы: Пользователь скрыл имя, 01 Ноября 2011 в 18:39, реферат

Описание

Программирование позволяет настроить компьютер или иное программируемое логическое устройство на те или иные действия. Обычно программа вводится в компьютер программистами, и первые программы создавались математиками и логиками, конструировавшими компьютеры. Когда еще не было средств вывода на экран, программа выдавала результат просто в печатном виде на принтере. Ввод в компьютер также производился несколько иначе. В любом случае, со временем стало понятно, что программировать компьютер каждый раз «с нуля» после каждой его перезагрузки — неразумно.

Работа состоит из  1 файл

срс по инф.doc

— 271.00 Кб (Скачать документ)

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

       Дискретность

       Процесс решения задачи должен быть разбит на последовательность отдельных шагов, каждый из которых называется командой. Примером команд могут служить пункты инструкции, нажатие на одну из кнопок пульта управления, рисование графического примитива (линии, дуги и т.п.), оператор языка программирования. Наиболее существенным здесь является тот факт, что алгоритм есть последовательность четко выделенных пунктов — такие “прерывные” объекты в науке принято называть дискретными.

       Понятность

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

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

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

       Определенность (детерминированность)

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

       Результативность (конечность)

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

       Массовость

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

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

       Из  возможности формального исполнения алгоритма следует очень важное следствие: поскольку осознавать содержание алгоритма не требуется, его исполнение вполне можно доверить автомату или ЭВМ. Таким образом, составление алгоритма является обязательным этапом автоматизации любого процесса. Как только разработан алгоритм, машина может исполнять его лучше человека — быстрее и, что очень важно, не ошибаясь.

       Основными способами записи алгоритмов являются:

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

       Примеры записи алгоритмов:

  1. словесно-формульный способ

       Для робота составлен следующий алгоритм:

       1. Покрасить доску.

       2. Переместиться к следующей доске.

       3. Перейти к действию 1. 

       
  1. на алгоритмическом  языке 

       алг Квадраты нечетных чисел

       арг i

       нач

        для i от 1 до 9 шаг 2

       нц

       вывод i2

       кц

       кон 

       
  1. графический (блок-схема)

 

        5. Язык программирования

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

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

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

  • Функция: язык программирования предназначен для написания компьютерных программ, которые применяются для передачи компьютеру инструкций по выполнению того или иного вычислительного процесса и организации управления отдельными устройствами.
  • Задача: язык программирования отличается от естественных языков тем, что предназначен для передачи команд и данных от человека к компьютеру, в то время как естественные языки используются для общения людей между собой. Можно обобщить определение «языков программирования» — это способ передачи команд, приказов, чёткого руководства к действию; тогда как человеческие языки служат также для обмена информацией.
  • Исполнение: язык программирования может использовать специальные конструкции для определения и манипулирования структурами данных и управления процессом вычислений

       Стандартизация языков программирования

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

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

       Типы данных

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

       Особая  система, по которой данные организуются в программе, — это система типов языка программирования; разработка и изучение систем типов известна под названием теория типов. Языки могут быть классифицированы как системы со статической типизацией и языки с динамической типизацией.

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

       Структуры данных

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

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

       Семантика языков программирования

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

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

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

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

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

       Несмотря  на то, что большинство языков ориентировано  на императивную модель вычислений, задаваемую фон-неймановской архитектурой ЭВМ, существуют и другие подходы. Можно упомянуть языки со стековой вычислительной моделью (Forth, Factor, Postscript и др.), а также функциональное (Лисп, Haskell, ML и др.) и логическое программирование (Пролог) и язык Рефал, основанный на модели вычислений, введённой советским математиком А. А. Марковым-младшим.

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

       Способы реализации языков

       Языки программирования могут быть реализованы  как компилируемые и интерпретируемые.

Информация о работе Алгоритмы