Руководства, Инструкции, Бланки

инструкции языка программирования для описания алгоритмов img-1

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

Рейтинг: 4.0/5.0 (1883 проголосовавших)

Категория: Инструкции

Описание

Способы описания алгоритмов

Понятие алгоритма является одним из основных в информатике. Слово “алгоритм” происходит от имени узбекского математика аль-Хорезми, что означает “из Хорезма”. Длительное время алгоритмом пользовались только математики, понимая под алгоритмом описание решения задачи. Начиная с 30-годов 20 века понятие алгоритма становится объектом математического изучения. Возникла новая математическая дисциплина - теория алгоритмов. Несколько позже развитие ЭВМ и их широкое применение сделали понятие алгоритма одним из базовых понятий информатики и ВТ.

АЛГОРИТМ - это конечная последовательность чётко сформулированы правил и команд, предназначенных для решения конкретной задачи.

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

- вычислительных. - правило возведения числа в степень;

- извлечение корня из n-степени;

- сложение, умножение, деление дробей;

- решение линейных, квадратных, биквадратных;

- нахождение S и V фигур;

- невычислительных ( бытовых ). - рецепт приготовления блюд;

- правило пользования лифтом,

- инструкция по использованию электро приборов;

2. СПОСОБЫ ОПИСАНИЯ АЛГОРИТМОВ.

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

Алгоритмы записываются в виде. - словесных правил;

2.1. СЛОВЕСНОЕ ОПИСАНИЕ АЛГОРИТМА.

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

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

ПРИМЕР. Найти наибольшего из трёх заданных чисел a, b, c.

• 1. Сравнить a и b. Если a>b,то в качестве максимума t принять a, иначе (a<=b) в качестве максимума принять b (t=b).

• 2. Сравнить t и c. Если t>c, то перейти к шагу 3. Иначе (t<c) принять в качестве максимума c (t=c).

• 3. Принять t в качестве результата.

НЕДОСТАТКИ СЛОВЕСНОГО СПОСОБА :

ДОСТОИНСТВА. С его помощью можно описать любые алгоритмы, в том числе и вычислительные.

СПЕЦИАЛЬНЫЕ СОГЛАШЕНИЯ ДЛЯ СЛОВЕСНОЙ ЗАПИСИ АЛГОРИТМОВ:

• 1. Знак присваивания, слева от которого записывают ту переменную, которой присваивается значение, записанное справа от знака присваивания. Например, х:=х+1

• 2. Для задания значения исходных данных используют указания: ВВЕСТИ

• 3. Для запоминая промежуточных результата используют вспомогательные переменные.

• 4. Для указания начала и конца алгоритма используют указания: НАЧАЛО и КОНЕЦ.

• 5. Все шаги нумеруют.

Пример алгоритма построения треугольника по трём сторонам:

• 2. На произвольной прямой выбрать точку А. Раствором циркуля, равным а, отложить отрезок АВ=а.

• 3. Из точки А провести окружность радиуса в.

• 4. Из точки В провести окружность радиуса с.

2.2. ГРАФИЧЕСКИЙ СПОСОБ ОПИСАНИЯ АЛГОРИТМА.

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

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

Внутри блока записывается описание команд или условий.

Для указания последовательности выполнения блоков используют линии связи ( линии соединения ).

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

ПРАВИЛА ИЗОБРАЖЕНИЯ БЛОК- СХЕМ АЛГОРИТМА.

1. В блок-схеме можно использовать строго определённые типы блоков.

2. Стрелки на линиях связи можно не ставить при направлении сверху вниз и слева направо; противоположные направления обязательно указывают стрелкой на линии.

3. Для удобства блоки могут помечаться метками(буквами или цифрами).

4. Внутри блока ввода/вывода пишется ВВОД или ВЫВОД и перечисляются имена данных, подлежащих вводу/выводу.

5. Внутри блока действия для присваивания переменных значений используется знак присваивания.

Пример нахождения максимума трех чисел.

2.3. ОПИСАНИЕ АЛГОРИТМОВ С ПОМОЩЬЮ ПРОГРАММ.

Алгоритм, записанный на языке программирования называется программой.

Словесная и графическая форма записи алгоритма предназначены для человека. Алгоритм, предназначенный для исполнителя на компьютере записывается на языке программирования (языке, понятном ЭВМ). Сейчас известно несколько сот языков программирования. Наиболее популярные: Бейсик, Си, Паскаль, Пролог, ПЛ, Ада и т.д.

Пример программы на языке программирования Паскаль:

VAR A,B,C, max: INTEGER;

WRITE(‘ ВВЕДИТЕ A, B, C');

IF A>B THEN max:=A

IF C>max THEN max:=C;

Другие статьи

Инструкции языка программирования для описания алгоритмов

4. Алгоритмы и языки программирования

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

Понятие алгоритма относится к основным понятиям информатики. Рассмотрим основные понятия, связанные с понятием алгоритма.

Когда речь идет об алгоритме, всегда подразумевается существование некоторого исполнителя, для которого предназначен алгоритм.

Исполнитель – человек или автомат (например, компьютер), который умеет выполнять определенный конечный набор действий.

Предписание – приказ на выполнение действий из указанного конечного набора.

Система предписаний – совокупность допустимых приказов.

Программа – конечная последовательность предписаний с указанием порядка их выполнения.

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

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

Составлению программы предшествует разработка алгоритма.

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

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

  1. Дискретность. Выполнение алгоритма разбивается на последовательность элементарных действий – шагов. Каждое действие должно быть закончено исполнителем прежде, чем он перейдет к выполнению следующего действия. Произвести каждое отдельное действие исполнителю предписывает специальное указание в записи алгоритма, называемое командой.
  2. Точность или детерминированность. Запись алгоритма должна быть такой, чтобы, выполнив очередную команду, исполнитель точно знал, какую команду надо выполнять следующей.
  3. Понятность. Каждый алгоритм строится в расчете на конкретного исполнителя, который должен быть в состоянии выполнить каждую команду алгоритма в строгом соответствии с ее назначением.
  4. Результативность. При точном исполнении всех предписаний алгоритма процесс должен завершится за конечное число шагов и при этом должен быть получен какой-либо ответ на поставленную задачу. В качестве одного из возможных решений может быть установление того факта, что задача не имеет решения
  5. Массовость. помощью одного и того же алгоритма можно решать однотипные задачи и делать это неоднократно. Свойство массовости значительно увеличивает практическую ценность алгоритмов.

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

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

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

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

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

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

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

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

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

Следование . Представляет собой последовательное выполнение действий (рис. 12).

Рис. 12. Следование.

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

Рис. 13. Развилка.

Действия 1 и 2 могут, в свою очередь, включать в себя другие алгоритмические структуры.

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

Цикл До. Применяется, когда некоторые операции надо повторять до тех пор, пока некоторое условие не станет ложным (рис. 14).

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

Цикл Пока. Применяется, когда некоторые операции надо повторять до тех пор, пока некоторое условие не станет истинным (рис. 15).

Естественный язык – социальное средство хранения и передачи информации, одно из самых эффективных средств управления поведением человека. Он неразрывно связан с мышлением и существует в виде речи.

Кроме естественного языка существуют искусственные языки, целенаправленно сконструированные для:

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

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

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

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

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

  • зависимость синтаксиса от семантики;
  • многозначность смысла предложений;
  • расплывчатость смысла предложений и возможность парадоксальных предложений.

Зависимость синтаксиса от семантики заключается в том, что способ построения предложения зависит от его смысла. Например, правильность предложения

зависит от того, является ли Кравченко мужчиной или женщиной.

Зависимость синтаксиса от семантики означает, что для распознавания правильности предложения нужно знать его смысл.

Приведем пример многозначности естественного языка:

Здесь слово «коса» может означать сельскохозяйственное орудие, сплетение волос на голове или длинную узкую отмель, идущую вдоль берега.

Пример парадоксального предложения:

Если у состава отцепить последний вагон, то у состава не будет последнего вагона.

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

Искусственные языки, предназначенные для записи программ, называются языками программирования или алгоритмическими языками. Все языки программирования делятся машинно-зависимые и машинно-независимые .

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

Программирование на машинном языке сложно и практически не используется. Для упрощения программирования используются машинно-ориентированные языки. Различают два уровня машинно-ориентированных языков:

  • языки символического кодирования (мнемокоды);
  • макроязыки.

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

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

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

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

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

При программировании на процедурно-ориентированных языках не требуется детального знания устройства компьютера. Наиболее широко используемыми языками высокого уровня являются БЭЙСИК, ПАСКАЛЬ, СИ.

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

4.4. Процесс выполнения программы на ЭВМ

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

Рис. 16. Распределение памяти при выполнении программы.

Процесс выполнения программы на ЭВМ разбивается на ряд этапов (рис. 17).

Рис.17. Процесс выполнения программы на ЭВМ.

Программа пишется программистом на одном из языков программирования. Процессор ЭВМ может реально выполнять только команды машинного языка. Преобразование исходного текста программы в машинные коды выполняется специальной программой – транслятором . Рассмотренный выше ассемблер является одной из разновидностей транслятора.

Трансляторы бывают двух видов: компиляторы и интерпретаторы .

Компилятор преобразует исходную программу на любом языке высокого уровня в некоторую стандартную форму на машинном языке, называемую объектным модулем .

Интерпретатор преобразует отдельные предложения исходного языка в машинный код и немедленно их исполняет. Интерпретатор не создает объектный модуль.

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

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

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

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

  • размер получаемого объектного модуля не может быть заранее известен, поэтому существует опасность наложения в памяти различных модулей или появления неиспользуемых участков памяти;
  • к моменту исполнения программы неизвестно, какие еще программы будут находиться в оперативной памяти.

Для решения этой проблемы транслятор формирует так называемые перемещаемые объектные модули . Начальный адрес перемещаемого объектного модуля в оперативной памяти компьютера определяется непосредственно при загрузке программы.

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

Средства и языки описания (представления) алгоритмов

Средства и языки описания (представления) алгоритмов LOOP WHILE условие продолжения вычислений (UNTIL условие прекращения вычислений) 3. Языки программирования Прогресс компьютерных технологий определил процесс появления новых разнообразных знаковых систем для записи алгоритмов - языков программирования. Смысл появления такого языка - оснащенный набор вычислительных формул дополнительной информации, превращает данный набор в алгоритм. Язык программирования служит двум связанным между собой целям: он дает программисту аппарат для задания действий, которые должны быть выполнены, и формирует концепции, которыми пользуется программист, размышляя о том, что делать. Первой цели идеально отвечает язык, который настолько "близок к машине", что всеми основными машинными аспектами можно легко и просто оперировать достаточно очевидным для программиста образом. Второй цели идеально отвечает язык, который настолько «близок к решаемой задаче», чтобы концепции ее решения можно было выражать прямо и коротко. Связь между языком, на котором мы думаем/программируем, и задачами и решениями, которые мы можем представлять в своем воображении, очень близка. По этой причине ограничивать свойства языка только целями исключения ошибок программиста в лучшем случае опасно. Как и в случае с естественными языками, есть огромная польза быть, по крайней мере, двуязычным. Язык предоставляет программисту набор концептуальных инструментов, если они не отвечают задаче, то их просто игнорируют. Например, серьезные ограничения концепции указателя заставляют программиста применять вектора и целую арифметику, чтобы реализовать структуры, указатели и т.п. Хорошее проектирование и отсутствие ошибок не может гарантироваться чисто за счет языковых средств. Может показаться удивительным, но конкретный компьютер способен работать с программами, написанными на его родном машинном языке. Существует почти столько же разных машинных языков, сколько и компьютеров, но все они суть разновидности одной идей простые операции производятся со скоростью молнии на двоичных числах. Персональные компьютеры IBM используют машинный язык микропроцессоров семейства 8086, т.к. их аппаратная часть основывается именно на данных микропроцессорах. Можно писать программы непосредственно на машинном языке, хотя это и сложно. На заре компьютеризации (в начале 1950-х г.г.), машинный язык был единственным языком, большего человек к тому времени не придумал. Для спасения программистов от сурового машинного языка программирования, были созданы языки высокого уровня (т.е. немашинные языки), которые стали своеобразным связующим мостом между человеком и машинным языком компьютера. Языки высокого уровня работают через трансляционные программы, которые вводят "исходный код" (гибрид английских слов и математических выражений, который считывает машина), и в конечном итоге заставляет компьютер выполнять соответствующие команды, которые даются на машинном языке. Существует два основных вида трансляторов: – интерпретаторы, которые сканируют и проверяют исходный код в один шаг, – компиляторы, которые сканируют исходный код для производства текста программы на машинном языке, которая затем выполняется отдельно. ИНТЕРПРЕТАТОРЫ. Одно, часто упоминаемое преимущество интерпретаторной реализации состоит в том, что она допускает "непосредственный режим". Непосредственный режим позволяет вам задавать компьютеру задачу вроде PRINT 3.14159*3/2.1 и возвращает вам ответ, как только вы нажмете клавишу ENTER (это позволяет использовать компьютер стоимостью 3000 долларов в качестве калькулятора стоимостью 10 долларов). Кроме того, интерпретаторы имеют специальные атрибуты, которые упрощают отладку. Можно, например, прервать обработку интерпретаторной программы, отобразить содержимое определенных переменных, бегло просмотреть программу, а затем продолжить исполнение. Больше всего программистам нравится в интерпретаторах возможность получения быстрого ответа. Здесь нет необходимости в компилировании, так как интерпретатор всегда готов для вмешательства в вашу программу. Введите RUN и результат вашего самого последнего изменения оказывается на экране. Однако интерпретаторные языки имеют недостатки. Необходимо, например, иметь копию интерпретатора в памяти все время, тогда как многие возможности интерпретатора, а, следовательно, и его возможности могут не быть необходимыми для исполнения конкретной программы. Слабо различимым недостатком интерпретаторов является то, что они имеют тенденцию отбивать охоту к хорошему стилю программирования. Поскольку комментарии и другие формализуемые детали занимают значительное место программной памяти, люди стремятся ими не пользоваться. Хуже всего то, что интерпретаторы тихоходны. Ими затрачивается слишком много времени на разгадывание того, что делать, вместо того чтобы заниматься действительно делом. При исполнении программных операторов, интерпретатор должен сначала сканировать каждый оператор с целью прочтения его содержимого (что этот человек просит меня сделать?), а затем выполнить запрошенную операцию. Операторы в циклах сканируются излишне много. КОМПИЛЯТОРЫ. Компилятор-это транслятор текста на машинный язык, который считывает исходный текст. Он оценивает его в соответствии с синтаксической конструкцией языка и переводит на машинный язык. Другими словами, компилятор не исполняет программы, он их строит. Интерпретаторы невозможно отделить от программ, которые ими прогоняются, компиляторы делают свое дело и уходят со сцены. При работе с компилирующим языком, таким как Турбо-Бейсик, вы придете к необходимости мыслить о ваших программах в признаках двух главных фаз их жизни: периода компилирования и периода прогона. Большинство программ будут прогоняться в четыре - десять раз быстрее их интерпретаторных эквивалентов. Если вы поработаете над улучшением, то сможете достичь 100-кратного повышения быстродействия. Оборотная сторона монеты состоит в том, что программы, расходующие большую часть времени на возню с файлами на дисках или ожидание ввода, не смогут продемонстрировать какое-то впечатляющее увеличение скорости. Заключение

Итак, мы дали понятие алгоритма, определили его свойства и способы записи, рассмотрели классификацию и языки описания алгоритмов.

На основании вышеизложенного сделаем краткие выводы.

Любой человек постоянно встречается с множеством задач: от самых простых и хорошо известных до очень сложных. Для множества из них существуют определенные правила (инструкции, предписания), объясняющие исполнителю, как решать данную задачу. Эти правила человек может изучить заранее или сформулировать сам в процессе решения. Чем более точно и однозначно будут описаны правила решения задач, тем быстрее человек овладеет ими и будет эффективнее их применять. Такие правила принято называть алгоритмами.

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

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

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

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

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

Список использованной литературы

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 г..

10. Ефимова О.А. Курс компьютерной технологии с основами информатики / О.А. Ефимова, В.Б. Морозов, Н.М. Угринович. - СПб: Питер, 2003.

11. Пархоменко Е.А. Алгоритм. Способы описания алгоритма. Учебно-методическое пособие для учителей информатики / Е.А.Пархоменко, Ю.В. Сюбаева - Коломна: Лицей, 2005. - 33 с.

12. Голицына О.Л. Основы алгоритмизации и программирования: Учеб. Пособие / О.Л. Голицына, И.И. Попов. - М. ИНФРА-М, 2004. - 432 с.

13. Кузнецов, А.А. Основы информатики. Учеб. для общеобразоват. учеб. заведений / А.А. Кузнецов, Н.В. Апатова. - М. Дрофа, 2000. - 176 с.

Алгоритмы и программирование

Алгоритмы и исполнители. Основы программирования. Понятие "алгоритм", свойства алгоритма, исполнители алгоритмов. Формы записи алгоритмов. Типовые алгоритмические структуры. Методы создания алгоритмов. Алгоритмы и процессы управления. Роль обратной связи в управлении.

Языки программирования. Понятия "язык программирования", "система программирования". Классификация языков программирования.

Справочник по Qbasic . Сильно упрощенное описание языка, в объеме достаточном для базового уровня обучения и решения задач ЕГЭ. Алфавит, величины, функции и операторы языка. Реализация алгоритмических структур средствами Qbasic. Описание массивов. Объявление процедур. Обращения к процедурам.

Visual Basic . Объектно-ориентированные системы программирования. Этапы создания программы в VB.

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

Алгоритм – понятная и точная последовательность действий, описывающая процесс преобразования объекта из начального состояния в конечное.

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

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

Для создания алгоритма (программы) необходимо знать:

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

  • Полученный алгоритм (программа) должен обладать следующим набором свойств:

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

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

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

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

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

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

    Линейная структура (следование)

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

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

    Вторая ветвь может быть пустой. Такая структура называется неполным ветвлением или обходом .

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

    Циклпозволяет организовать многократное повторение одной и той же последовательности команд - она называется телом цикла. В различных видах циклических алгоритмов количество повторений может зависеть от значения логического выражения (условия) или может быть жестко задано в самой структуре. Различают циклы. « до ». « пока ». циклы со счётчиком . В циклах « д о» и « п ока» логическое выражение (условие) может предшествовать телу цикла (цикл с предусловием ) или завершать цикл (цикл с послеусловием ).

    Ц иклы « до » - повторение тела цикла до выполнения условия :

    Ц иклы « пока » - повторение тела цикла пока условиевыполняется ( истинно ):

    Циклы со счётчиком ( с параметром ) – повторение тела цикла заданное число раз.

    Вспомогательный алгоритм (подпрограмма, процедура)

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

    Существует два метода разработки сложных алгоритмов:

    Метод последовательной детализации задачи («сверху-вниз») состоит в том, что исходная сложная задача разбивается на подзадачи. Каждая из подзадач рассматривается и решается отдельно. Если какие-либо из подзадач сложны, они также разбиваются на подзадачи. Процесс продолжается до тех пор, пока подзадачи не сведутся к элементарным. Решения отдельных подзадач затем собираются в единый алгоритм решения исходной задачи. Метод широко используется, так как позволяет вести разработку общего алгоритма одновременно нескольким программистам, решающим локальные подзадачи. Это необходимое условие быстрой разработки программных продуктов.

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

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

    В простейшем случае таких объектов два:

    С точки зрения информатики управляющие воздействия можно рассматривать как управляющую информацию. Информация может передаваться в форме команд. Последовательность команд по управлению объектом, приводящая к заранее поставленной цели, называется алгоритмом управления. Следовательно, объект управления можно назвать исполнителем управляющего алгоритма. В рассмотренном примере, управляющий объект работает "не глядя" на то, что происходит с управляющим объектом (управление без обратной связи ). Такая схема управления называется незамкнутой. Другая схема управления может учитывать информацию о процессах, происходящих в объекте управления:

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

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

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

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

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

    Массив- совокупность однотипных данных, имеющих общее имя. Массивы позволяют организовать циклы обработки данных в которых параметр цикла указывает на индекс элемента массива. Их классифицируют по типу данных (числовые, строковые, логические) и по размерности (одномерные, двухмерные, трехмерные и т.д.). Каждый элемент массива представляет собой переменную величину. Для указания на элемент массива в программе записывается имя массива и рядом в скобках набор индексов (для одномерных-1 индекс; для двухмерных -2 (строка, столбец) и т.д.), например A (17) - 17й по счету элемент одномерного массива А. Значение, хранящееся в нем, не связано с его номером.

    Встроенныефункции QBASIC Числовые функции

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

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

    Разработка программного кода (описываются изменения объектов и их взаимодействие; при этом создание программного кода базируется на использовании типовых алгоритмических структур). На рисунке ниже красным цветом выделено окно для ввода программного кода. Этот этап аналогичен разработке программы в процедурных языках.

    Основной единицей в объектно-ориентированном программировании является объект. который объединяет в себе как описывающие его данные (свойства ), так и средства обработки этих данных (методы ). Объекты могут реагировать на события (щелчки мыши, изменения размеров окна и т.д.). Объекты делятся на определённые классы. определяющие набор свойств, методов и событий. В Visual Basic основными являются классы объектов, реализующие графический интерфейс программы. Различные экземпляры классаобладают одинаковым набором свойств, но значения свойств могут быть различны. Для того чтобы объект выполнил какую-либо операцию, необходимо использовать один из методов объекта. Для каждого события можно запрограммировать отклик, то есть реакцию объекта на событие (событийную процедуру). В событийной процедуре может участвовать несколько объектов. Например, событие происходит с первым объектом, в результате второй изменяет значения своих свойств, третий реализует какой-либо метод и т.д.