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

Алгоритмизация как обязательный этап разработки программы.

Содержание:

ВВЕДЕНИЕ

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

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

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

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

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

1.Алгоритмизация

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

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

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

1.1.Понятие алгоритма и его свойства.

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

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

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

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

Алгоритм решения задачи должен обладать рядом свойств:

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

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

Результативность или конечность – алгоритм должен приводить к решению задачи за конечное число шагов.

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

Формализoванность – предписания алгоритма должны быть записаны на некотором формальном (искусственном) языке.

Виды алгоритмов

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

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

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

Гибкие алгоритмы: например вероятностный или стoхастический – дает программу решения задачи несколькими путями или способами, приводящими к вероятному достижению результата; эвристический алгоритм (в переводе с греческого слова «эврика») – это такой алгоритм, в котором достижение конечного результата программы действий однозначно не предопределено, так же как не обозначена вся последовательность действий, не выявлены все действия исполнителя. К эвристическим алгоритмам относят, например, инструкции и предписания. В этих алгоритмах используются универсальные логические процедуры и способы принятия решений.

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

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

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

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

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

Если внимательно изучить основы алгоритмизации, можно найти подробное описание всех типов последовательностей действий. Разберем их детальнее. Линейная предполагает наличие четкой последовательности по шагам: есть первая операция, вторая и так далее. Отклонения от схемы не допускаются, вариантов корректировки не предусмотрено. Ветвление – возможность несколько корректировать последовательность. Для этого формулируются условия, решаемые в ходе предыдущих операций (одной или нескольких). Ветвление – это не переход к уже прошедшей ранее операции, а лишь выбор одного из путей продолжения последовательности. Цикл практически идентичен ветвлению, но позволяет возвращаться к операции, уже пройденной в ходе исполнения алгоритма. Наконец, в основах информатики рассматривается смешанный вариант последовательности алгоритмизованных действий. В таком будут участки линейные, циклические, ветвления – все возможные формы. Если программа, алгоритм являются сложными, можно с уверенностью говорить, что они принадлежат именно к такой форме, ее просто невозможно избежать. Причем сложность – понятие очень и очень растяжимое. То, что для обычного человека кажется элементарной задачей, при формулировании ее в виде алгоритма может превратиться длительную последовательность действий разного плана и характера. Задача алгоритмиста – учитывать все возможные состояния всех включенных в систему объектов.

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

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

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

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

Блок-схема – описание структуры алгоритма с помощью геометрических фигур с линиями-связями, показывающими порядок выполнения отдельных инструкций. Этот способ имеет ряд преимуществ. Благодаря наглядности, он обеспечивает «читаемость» алгоритма и явно отображает порядок выполнения отдельных команд. В блок-схеме каждой формальной конструкции соответствует определенная геометрическая фигура или связанная линиями совокупность фигур. На этом описание структуры алгоритма остановимся и подробнее рассмотрим некоторые основные конструкции, использующиеся для построения блок-схем алгоритмов программ, регламентированные ГОСТ 1.701-90.

начало

Рис. 1. Терминатор начала и конца работы функции

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

Ввод (str)

Рис. 2. Операции ввода и вывода данных

В ГОСТ определено множество символов ввода/вывода, например вывод на магнитные ленты, дисплеи и т.п. Если источник данных не принципиален, обычно используется символ параллелограмма. Подробности ввода/вывода могут быть указаны в комментариях.

str : = “helloo world”

Рис. 3. Выполнение операций над данными

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

a < b * c

Рис. 4. Блок, иллюстрирующий ветвление алгоритма

Блок в виде ромба имеет один вход и несколько подписанных выходов. В случае, если блок имеет 2 выхода (соответствует оператору ветвления), на них подписывается результат сравнения — «да/нет». Если из блока выходит большее число линий (оператор выбора), внутри него записывается имя переменной, а на выходящих дугах — значения этой переменной.

buff : = foo(1, tmp)

Рис. 5. Вызов внешней процедуры

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

LoopName

a < b

LoopName

a < b

Рис. 6. Начало и конец цикла

Символы начала и конца цикла содержат имя и условие. Условие может отсутствовать в одном из символов пары. Расположение условия, определяет тип оператора, соответствующего символам на языке высокого уровня — оператор с предусловием (while) или постусловием (do … while).

i : = 1 .. 100

Рис. 7. Подготовка данных

Символ «подготовка данных» в произвольной форме (в ГОСТ нет ни пояснений, ни примеров), задает входные значения. Используется обычно для задания циклов со счетчиком.

A

Рис. 8. Соединитель

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

foo ( i, str )

выделяет i-тый символ

строки str

Рис. 9. Комментарий

Комментарий может быть соединен как с одним блоком, так и группой. Группа блоков выделяется на схеме пунктирной линией.

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

2.1.Линейный алгоритм.

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

действие

действие

Рис. 10. Изображение блок-схемы линейного алгоритма

Многие из предписаний такого алгоритма могут потребовать детализации – представления в виде некоторой совокупности более мелких предписаний.

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

2.2.Ветвящийся алгоритм.

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

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

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

Алгоритмический язык

Блок-схема

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

Неполное условие

ЕСЛИ «условие»

ТО «действия»

действия

да

условие

нет

INPUT “1 или 2?”

IF=1 OR I=2 THEN

PRINT “Ок”

ELSE

PRINT “Вне диапазона”

END IF

Полное условие

ЕСЛИ «условие»

ТО «действия 1»

ИНАЧЕ «действия 2»

действия

да

условие

нет

действия

INPUT “1 или 2?”

IF=1 OR I=2 THEN

PRINT “Ок”

ELSE

PRINT “Вне диапазона”

END IF

Таб. 1. Ветвящиеся виды алгоритмов

2.3.Циклический алгоритм.

Повторяющееся выполнение действий (групп действий),зависящее от выполнения условия, называется циклом.

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

Базовая структура "цикл". Обеспечивает многократное выполнение некоторой совокупности действий, которая называется телом цикла. Основные разновидности циклов представлены в таблице:

Алгоритмический язык

Блок-схема

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

Цикл типа «ПОКА»

ДЕЛАТЬ «тело цикла» (последовательность действий)

ПОКА «условие»

КОНЕЦ ЦИКЛА

тело цикла

да

условие

нет

I=0

PRINT “Значение I в начале равно”; I

DO WHILE I<10

I=I+1

LOOP

PRINT “Значение I в конце цикла равно”; I

Цикл типа «ДО»

ДЛЯ I=I1 ДО I2

ШАГ S

«тело цикла» (последовательность действий)

СЛЕДУЮЩАЯ I

тело цикла

I = I1, I2

FOR I=1 TO 15

PRINT I

NEXT I

FOR I=7 TO –6 STEP –3

PRINT I

NEXT I

Таб. 2. Циклические виды алгоритмов

3.Понятие программирования и компьютерной программы

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

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

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

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

Синтаксис  – правила построения из символов алфавита языковых конструкций (переменных, констант, функций, процедур, операторов...).

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

Семантика определяет, что делает ЭВМ при выполнении данной языковой конструкции, а синтаксис определяет форму записи данной языковой конструкции.

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

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

Константа – это величина, которая при выполнении программы остаётся неизменной, на случай, если в программе требуется постоянно использовать какое-нибудь одно и тоже значение. Конечно можно описать переменную, затем присвоить ей значение и не изменять его в программе. Однако это не всегда удобно (можно нечаянно изменить), поэтому в языках программирования для хранения данных помимо переменных существуют константы. Главной особенностью констант является то, что их описывают в начале программы сразу присваивая им необходимые значения. При выполнении программы константы остаются неизменными. Значениями констант могут быть данные большинства типов.

Рассмотрим типы данных и их классификацию.

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

Классификация типов данных

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

Числовой тип данных разработан для хранения естественно чисел. Символьный - для хранения одного символа. Логический тип имеет два значения: истина и ложь. Перечислимый тип может хранить только те значения, которые прямо указаны в его описании. Для простых типов данных определяются границы диапазона и количество байт, занимаемых ими в памяти компьютера. В большинстве языков программирования, простые типы жестко связаны с их представлением в памяти компьютера. Компьютер хранит данные в виде последовательности битов, каждый из которых может иметь значение 0 и 1.

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

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

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

Машинный код – команды, операнды и адреса, записанные с помощью двоичных чисел. ЭВМ «понимает» только машинный язык!

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

Языки программирования высокого уровня (C++, C#, Java и др.) –разработаны для быстроты и удобства использования программистом. Основная черта высокоуровневых языков – это абстракция, то есть введение смысловых конструкций, кратко описывающих такие структуры данных и операции над ними, описания которых на машинном коде (или другом низкоуровневом языке программирования) очень длинны и сложны для понимания.

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

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

Объектно-ориентированные – программа разрабатывается как совокупность взаимосвязанных объектов, каждый из которых может порождать множество конкретных реализаций. С точки зрения декомпозиции объекта разработки может быть удобнее; Данный подход подразумевает написание программы в виде системы объектов, каждый из которых отражает тот или иной объект реального мира. Объектам реального мира в соответствие ставятся классы. А от каждого класса, в свою очередь, может порождаться бесчисленное количество объектов класса. К примеру, если мы будем разрабатывать программу для автосервиса, классами будут: автомобиль, двигатель, подвеска, корпус, тормозная система и другие запчасти. А объекты класса — конкретные модели этих запчастей, которые используются в процессе

В настоящее время все языки программирования можно условно разделить на специализированные и универсальные:

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

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

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

Императивные языки программирования позволяют формулировать алгоритм в форме схемы отдельных операций (согласно приведенному выше определению алгоритма)

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

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

Алгоритмизация – как ключевой этап программирования

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

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

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

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

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

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

ЗАКЛЮЧЕНИЕ

На основе проведенного исследования можно сделать краткие выводы.

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

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

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

СПИСОК ЛИТЕРАТУРЫ

  1. Алгоритм. Способы описания алгоритма. Учебно-методическое пособие для учителей информатики /Сост. Е. А. Пархоменко, Ю. В. Сюбаева – Коломна: Лицей, 2005. – 33 с.
  2. Балафанов Е. Н. «30 уроков по информатике», Москва 2007 г.
  3. Введение в информатику. Лабораторные работы. / Авт.-сост. А. П. Шестаков; Перм. ун-т. — Пермь, 1999 г.
  4. Галин А.Б., Панов Ю.В. Информатика. Феникс – 2009 г.
  5. Голицына О.Л. Основы алгоритмизации и программирования: Учеб. Пособие / О. Л. Голицына, И. И. Попов. – М.: ИНФРА-М, 2004. – 432 с.
  6. Карпенков С. Х. Современные средства информационных технологий. КноРус - 2009 г.
  7. Кузнецов А. А. Основы информатики. Учеб. для общеобразоват. учеб. заведений / А. А. Кузнецов, Н. В. Апатова. – М.: Дрофа, 2000. – 176 с.
  8. Кушнеренко А. Г. Основы информатики и ВТ: Учеб. для 10-11 кл. 4-е изд. / А. Г. Кушнеренко и др. — М: Просвещение, 1996. — 224 с.
  9. Макарова Н. В. Информатика и ИТК. М:, 2006 г.
  10. Могилев А. В. «Практикум по информатике» Санкт-Петербург 2005 г.
  11. Макарова Н.В. Информатика и ИТК. М:, 2006 г.
  12. Островский В. А. Информатика. 2009 г.
  13. Семакин И. Г. Основы программирования: Учебник для среднего профессионального образования / И. Г. Семакин, А. П. Шестаков. – М.: Издательский центр «Академия», 2003. – 432 с.
  14. Таганов Л. С., Левин В.Г. Информатика. Учебное пособие. Кемерово, 2006 г.
  15. Шауцукова Л. З. Информатика. Теория. М:, 2002 г.
  16. Шафрин Ю. А. Информационные технологии. М - Лаборатория базовых знаний, 1998 г.
  17. Шафрин Ю. А. «Основы компьютерной технологии», Москва 2005 г.
  18. Шелест В. Программирование. 2002.
  19. Шауцукова Л. З., "Основы информатики в вопросах и ответах", Издательский центр "Эль-Фа", Нальчик, 1994