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

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

Содержание:

ВВЕДЕНИЕ

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

1. АЛГОРИТМИЗАЦИЯ

В современном мире человеку приходится решать задачи с использованием компьютера. Решение любой задачи предполагает наличие алгоритма, т.е. точного предписания последовательности действий, приводящих к получению результата. На основе алгоритма составляется программа, т.е. запись алгоритма решения задачи в виде, пригoдном для исполнения его на компьютере. Отсюда следует, что сущность процесса решения задачи с помощью компьютера — это разработка алгоритма. Процесс составления алгоритмических предписаний называется алгоритмизацией. Роль алгоритмизации в жизни современного общества определяется не только техническими аспектами ее использования. Алгоритмический подход невозможно отделить от повседневной жизни людей, от их обычной работы. В подавляющем большинстве случаев результат деятельности человека зависит от того, насколько четко он знает алгоритмическую сущность своих действий: что делать в каждый момент, в какой последовательности, каким должен быть итог действий. Это в определенной степени зависит от его умения составлять и использовать алгоритмы. Алгоритмизация учебного процесса, разработка и реализация алгоритмов для учащихся и алгоритмов для обучающих лиц (или обучающих машин). Алгоритм — одно из важнейших понятий информатики. Алгоритм — точное, однозначно понимаемое предписание о выполнении в указанной последовательности операций (действий), приводящих к решению любой из задач, принадлежащих к некоторому классу (или типу). Предписываемые операции (действия) должны быть доступны адресату. Они могут быть как элементарными (простейшими), так и сложными, основанными на элементарных. К алгоритмам предъявляются требования определённости (конструктивности), т.е. однозначности предписываемых действий и операций; результативности, предполагающей, что при выполнении конечного числа операций будет получен искомый результат; массовости, означающей, что алгоритм применим к решению целого класса задач. В процессе решения задачи по алгоритму должны присутствовать: само предписание, состоящее из указаний (команд) о выполнении действий или операций над определёнными объектами и обычно фиксированное на тех или иных материальных носителях; некоторая система-исполнитель (человек или машина), к которой эти указания адресованы и которая их выполняет; объекты, на которые направлены действия или операции и которые под их воздействием преобразуются. Примером алгоритма может служить известный арифметический способ сложения двух положит, чисел «столбиком». Этот алгоритм можно представить в виде след. системы указаний: выделить в слагаемых разряды единиц и сложить единицы, если полученная сумма меньше 10, записать её в разряде единиц под нижним числом, если сумма больше или равна 10, записать в разряде единиц только кол-во единиц; выделить в слагаемых разряд десятков и записать полученный при сложении единиц десяток над разрядом десятков 1-го (верхнего) слагаемого; сложить десятки и т. д. Аналогичные указания даются для сложения единиц др. разрядов числа. Системой-исполнителем данного алгоритма может быть, как ЭВМ, так и человек. В теорию и практику обучения понятие алгоритма вошло в кон. 50-х гг. в связи с развитием программированного обучения и применением обучающих машин. Участие человека в учебном процессе накладывает ряд ограничений на использование алгоритмов. При создании алгоритма для ЭВМ составителю алгоритма точно известен набор доступных ей операций. Возможности человека определяются его предыдущим приобретённым учебным опытом, творческими данными и др. индивидуальными факторами, которые полностью учесть практически невозможно. Поэтому при разработке алгоритмов для человека требования конструктивности и результативности алгоритмов выполняются с известным приближением. Алгоритмы, предназначенные для использования их человеком, иногда называют предписаниями алгоритмического типа, а чаще — просто предписаниями. Возможность решения задач с помощью таких предписаний носит вероятностный характер и зависит от целого ряда индивидуальных особенностей исполнителя (его интеллектуального уровня, внимания, эмоционального состояния и др.). В математике для решения типовых задач мы используем определенные

правила, описывающие последовательности действий.  Например, правила сложения дробных чисел, решения квадратных уравнений  и т. д. Обычно любые инструкции и правила представляют собой последовательность действий, которые необходимо выполнить в определенном порядке. Для решения задачи надо знать,что дано, что следует получить и какиедействия и в каком порядке следует для этого выполнить. Предписание, определяющее порядок выполнения действий над данными с целью получения  искомых результатов, и есть алгоритм.  Алгоритм ­ заранее заданное понятное и точное предписание возможному  исполнителю совершить определенную последовательность действий для  получения решения задачи за конечное число шагов. Это ­ не определение в  математическом смысле слова, а, скорее, описание интуитивного понятия  алгоритма, раскрывающее его сущность. Название "алгоритм" произошло от  латинской формы имени величайшего среднеазиатского математика  Мухаммеда ибн Муса ал-Хорезми (Alhorithmi), жившего в 783­850 гг. В своей  книге "Об индийском счете" он изложил правила записи натуральных чисел с  помощью арабских цифр и правила действий над ними "столбиком", знакомые теперь каждому школьнику. В XII веке эта книга была переведена на латынь и получила широкое распространение в Европе.  Понятие алгоритма является не только одним из главных понятий математики, но одним из главных понятий современной науки. Более того, с наступлением  эры информатики алгоритмы становятся одним из важнейших факторов  цивилизации. Исполнитель алгоритма ­ это некоторая абстрактная или реальная(техническая, биологическая или биотехническая) система, способная выполнить действия, предписываемые алгоритмом.  Исполнителя характеризуют: • среда; • элементарные действия; • система команд; • отказы.  Среда (или обстановка) ­ это "место обитания" исполнителя.  Например, для исполнителя Робота из школьного учебника среда — это бесконечное клеточное поле. Стены и закрашенные клетки тоже часть  среды. А их расположение и положение самого Робота задают конкретное  состояние среды.  Система команд. Каждый исполнитель может выполнять команды только из  некоторого строго заданного списка ­ системы команд исполнителя. Для  каждой команды должны быть заданы условия применимости (в каких  состояниях среды может быть выполнена команда) и описаны результаты  выполнения команды. Например, команда Робота "вверх" может быть  выполнена, если выше Робота нет стены. Ее результат ­ смещение Робота на  одну клетку вверх.  После вызова команды исполнитель совершает соответствующее элементарное действие. Отказы исполнителя возникают, если команда вызывается при недопустимом  для нее состоянии среды. Обычно исполнитель ничего не знает о цели  алгоритма. Он выполняет все полученные команды, не задавая вопросов  "почему» и "зачем".  В информатике универсальным исполнителем алгоритмов является компьютер. 

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

Оснoвным в процессе программирования является разработка алгоритма. Это один из наиболее сложных этапов решения задачи с использованием ЭВМ. Алгоритм — описанная на некотором языке точная конечная система правил, определяющая содержание и порядок действий над некоторыми объектами, строгое выполнение которых дает решение поставленной задачи. Слово «Алгоритм» происходит от algorithmi - латинского написания имени аль-Хорезми, под которым в средневековой Европе знали величайшего математика из Хорезма (город в современном Узбекистане) Мухаммеда бен Мусу, жившего в 783-850 гг. В своей книге «Об индийском счете» он сформулировал правила записи натуральных чисел с помощью арабских цифр и правила действий над ними столбиком. В дальнейшем алгоритмом стали называть точное предписание, определяющее последовательность действий, обеспечивающую получение требуемого результата из исходных данных. Алгоритм может быть предназначен для выполнения его человеком или автоматическим устройством. Сoздание алгоритма, пусть даже самого простого, - процесс творческий. Он доступен исключительно живым существам, а долгое время считалось, что только человеку. Другое дело - реализация уже имеющегося алгоритма. Ее можно поручить субъекту или объекту, который не обязан вникать в существо дела, а возможно, и не способен его понять. Такой субъект или объект принято называть формальным исполнителем. Примером формального исполнителя может служить стиральная машина-автомат, либо мультиварка, которая неукоснительно исполняет предписанные ей действия, даже если вы забыли положить в нее необходимые компоненты. Человек тоже может выступать в роли формального исполнителя, но в первую очередь формальными исполнителями являются различные автоматические устройства, и компьютер в тoм числе. Каждый алгоритм создается в расчете на вполне конкретного исполнителя. Те действия, которые может совершать исполнитель, называются его допустимыми действиями. Совокупность допустимых действий образует систему команд исполнителя. Алгоритм должен содержать только те действия, которые допустимы для данного исполнителя. Данное выше определение алгоритма нельзя считать строгим - не вполне ясно, что такое «точное предписание» или «последовательность действий, обеспечивающая получение требуемого результата». Поэтому обычно формулируют несколько общих свойств алгоритмов, позволяющих отличать алгоритмы от других инструкций.

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

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

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

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

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

5. Формализoванность – предписания алгоритма должны быть записаны на некотором формальном (искусственном) языке. В алгоритме отражаются логика и способ формирования результатов решения с указанием необходимых расчетных формул, логических условий, соотношений для контроля достоверности выходных результатов. В алгоритме обязательно должны быть предусмотрены все ситуации, которые могут возникнуть в процессе решения комплекса задач. Алгоритм решения комплекса задач и его программная реализация тесно взаимосвязаны. Специфика применяемых методов проектирования алгоритмов и используемых при этом инструментальных средств разработки программ может повлиять на форму представления и содержание алгоритма обработки данных. Алгоритм применительно к вычислительной машине – точное предписание, т.е. набор операций и правил их чередования, при помощи которого, начиная с некоторых исходных данных, можно решить любую задачу фиксированного типа. Виды алгоритмов как логико-математических средств отражают указанные компоненты человеческой деятельности и тенденции, а сами алгоритмы в зависимости от цели, начальных условий задачи, путей ее решения, определения действий исполнителя подразделяются следующим образом: 1) Механические алгоритмы, или иначе детерминированные, жесткие (например алгоритм работы машины, двигателя и т.п.); 2) Гибкие алгоритмы, например стохастические, т.е. вероятностные и эвристические. Механический алгоритм задает определенные действия, обозначая их в единственной и достоверной последовательности, обеспечивая тем самым однозначный требуемый или искомый результат, если выполняются те условия процесса, задачи, для которых разработан алгоритм. 3) Вероятностный или стoхастический алгоритм дает программу решения задачи несколькими путями или способами, приводящими к вероятному достижению результата. 4) Эвристический алгoритм (в переводе с греческого слова «эврика») – это такой алгоритм, в котором достижение конечного результата программы действий однозначно не предопределено, так же как не обозначена вся последовательность действий, не выявлены все действия исполнителя. К эвристическим алгоритмам относят, например, инструкции и предписания. В этих алгоритмах используются универсальные логические процедуры и способы принятия решений. 5) Линейный алгоритм – набор команд или указаний, выполняемых последовательно во времени друг за другом. 6) Разветвляющийся алгоритм – алгоритм, содержащий хотя бы одно условие, в результате проверки которого ЭВМ обеспечивает переход на один из двух возможных шагов. 7) Циклический алгоритм – алгоритм, предусматривающий многократное повторение одного и того же действия либо одних и тех же операций над новыми исходными данными. К циклическим алгоритмам сводится большинство методов вычислений, перебора вариантов. Цикл программы – последовательность команд (серия, тело цикла), которая может выполняться неоднократно (для новых исходных данных) до выполнения некоторого условия. Вспомогательный (подчиненный) алгоритм (процедура) – алгоритм, ранее разработанный и целиком используемый при алгоритмизации конкретной задачи. В некоторых случаях при наличии подобных последовательностей указаний или команд для различных данных с целью сокращения записи также выделяют вспомогательный алгоритм. Словесный способ записи алгоритмов представляет собой описание последовательных этапов обработки данных. Алгоритм задается в произвольном изложении на естественном языке.  Например, записать алгоритм нахождения наибольшего общего делителя  (НОД) двух натуральных чисел (алгоритм Эвклида).  Алгоритм может быть следующим:

1) задать два числа; 2) если числа равны, то взять любое из них в качестве ответа и остановиться, в противном случае продолжить выполнение алгоритма; 3) определить большее из чисел; 4) заменить большее из чисел разностью большего и меньшего из чисел; 5) повторить алгоритм с шага 2.  Описанный алгоритм применим к любым натуральным числам и должен  приводить к решению поставленной задачи. Убедитесь в этом самостоятельно, определив с помощью этого алгоритма наибольший общий делитель чисел 125 и 75.  Словесный способ не имеет широкого распространения, так как такие  описания: • строго не формализуемы; • страдают многословностью записей; • допускают неоднозначность толкования отдельных предписаний.  графическая (изображения из графических символов); Графический способ представления алгоритмов является более компактным и  наглядным по сравнению со словесным.  При графическом представлении алгоритм изображается в виде  последовательности связанных между собой функциональных блоков, каждый из которых соответствует выполнению одного или нескольких действий. Такое графическое представление называется схемой алгоритма или блок­схемой. В  блок­схеме каждому типу действий (вводу исходных данных, вычислению  значений выражений, проверке условий, управлению повторением действий,  окончанию обработки ит. п.) соответствует геометрическая фигура, представленная в виде блочного символа. 

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

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

Словесное описание представляет структуру алгоритма на естественном языке. Например, любой прибор бытовой техники (чайник, электродрель, фен и т.п.) имеет инструкцию по эксплуатации, т.е. словесное описания алгоритма, в соответствии с которым данный электроприбор должен использоваться. Никаких правил составления словесного описания не существует. Запись алгоритма осуществляется в произвольной форме на естественном, например, русском языке. Этот способ описания не имеет широкого распространения, так как строго не формализуем (под «формальным» понимается то, что описание абсолютно полное и учитывает все возможные ситуации, которые могут возникнуть в ходе решения); допускает неоднозначность толкования при описании некоторых действий; страдает многословностью. Псевдокод — описание структуры алгоритма на естественном, частично формализованном языке, позволяющее выявить основные этапы решения задачи, перед точной его записью на языке программирования. В псевдокоде используются некоторые формальные конструкции и общепринятая математическая символика. Строгих синтаксических правил для записи псевдокода не существует. Это облегчает запись алгоритма при проектировании и позволяет описать алгоритм, используя любой набор команд. Однако в псевдокоде обычно используются некоторые конструкции, присущие формальным языкам, что облегчает переход от псевдокода к записи алгоритма на языке программирования. Единого или стандартного определения псевдокода не существует, поэтому возможны различные псевдокоды, отличающиеся набором используемых слов и конструкций. Блок-схема – oписание структуры алгоритма с помощью геометрических фигур с линиями-связями, показывающими порядок выполнения отдельных инструкций. Этот способ имеет ряд преимуществ. Благодаря наглядности, он обеспечивает «читаемость» алгоритма и явно отображает порядок выполнения отдельных команд. В блок-схеме каждой формальной конструкции соответствует определенная геометрическая фигура пли связанная линиями совокупность фигур. Рассмотрим некоторые oсновные конструкции, использующиеся для построения блок-схем алгоритмов программ, регламентированные ГОСТ 19.701-90.

Блок, характеризующий начало/конец алгоритма (для подпрограмм — вызов/возврат)

Блок — прoцесс, предназначенный для описания отдельных действий

Блок — Предопределенный процесс, предназначенный для обращения к вспомогательным алгоритмам (подпрограммам)

Блок — ввода/вывода с неопределенного носителя или описания исходных данных

Блок — решение (проверка условия или условный блок)

Блок — границы цикла, описывающий циклические процессы типа: «цикл с предусловием», «цикл с постусловием»

Соединительные блоки

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

4. ОСНОВНЫЕ СТРУКТУРНЫЕ АЛГОРИТМИЧЕСКИЕ КОНСТРУКЦИИ

Начальные шаги алгоритма можно объединить в следующие алгоритмические конструкции: линейные (последовательные), разветвляющиеся, циклические с предусловием и циклические с постусловием. Любой алгоритм можно сoставить, используя эти четыре алгоритмические конструкции. Линейной называют алгоритмическую конструкцию, выполненную в виде последовательности действий (шагов), в которой каждое действие (шаг) алгоритма выполняется ровно один раз, причем после каждого i-го действия (шага) выполняется (i+1) -е действие (шаг), если i-е действие — не конец алгоритма. Разветвляющейся (или ветвящейся) называется алгоритмическая конструкция, обеспечивающая выбор между двумя альтернативами в зависимости от значения входных данных. При каждом конкретном наборе входных данных разветвляющийся алгоритм сводится к линейному. Различают неполное (если – то) и полное (если – то – иначе) ветвления. Полное ветвление позволяет организовать две ветви в алгoритме (то или иначе), каждая из которых ведет к общей точке их слияния, так что выполнение алгоритма продолжается независимо от того, какой путь был выбран (рис. 1). Неполное ветвление предполагает наличие некоторых действий алгоритма только на одной ветви (то), вторая ветвь отсутствует, т.е. для одного из результатов проверки никаких действий выполнять не надо, управление сразу переходит к точке слияния.

Рис. 1. Полное ветвление

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

Цикл с предусловием

В данной циклической структуре сначала проверяется значение условного выражения (условие) перед выполнением очередного шага цикла. Если значение условного выражения истинно, исполняется тело цикла. После чего управление вновь передается проверке условия и т.д. Эти действия повторяются до тех пoр, пока условное выражение не примет значение ЛОЖЬ. При первом же несоблюдении условия цикл завершается. Количество шагов цикла заранее не определено и зависит от входных данных задачи. Особенностью цикла с предусловием является то, что если изначально условное выражение ложно, то тело цикла не выполнится ни разу.

а)

б)

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

Цикл с постусловием

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

Рис. 3. Блок-схема цикла с постусловием

Проанализируем три типа циклических алгоритмов: цикл с параметром (который называют арифметическим циклом), цикл с предусловием и цикл с постусловием (их называют итерационными). Существует разновидность цикла с предусловием, называемая арифметический цикл. В арифметическом цикле число его шагов (повторений) однозначно определяется правилом изменения параметра, которое задается с помощью начального (N) и конечного (К) значений параметра и шагом (h) его изменения. Т.е., на первом шаге цикла значение параметра равно N, на втором – N + h, на третьем – N + 2h и т.д. На последнем шаге цикла значение параметра не больше К, но такое, что дальнейшее его изменение приведет к значению, большему; чем К., например, вывести 10 раз слово «Привет!». Его блок-схема использует специальный блoк начала арифметического цикла с указанием, что переменная i в нем будет изменяться от 1 до 10 с шагом 1.

5. ПОНЯТИЕ ПРОГРАММИРОВАНИЯ И КОМПЬЮТЕРНОЙ ПРОГРАММЫ

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

Программирование включает в себя:

· Анализ

· Проектирование - разработка комплекса алгоритмов

· Кодирование и компиляцию - написание исходного текста программы и преобразование его в исполнимый код с помощью компилятора

· Тестирование и отладку - выявление и устранение ошибок в программах

· Испытания и сдачу программ

· Сопровождение

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

Единственный язык, напрямую выполняемый процессором - это машинный язык (также называемый «машинным кодом»). Как уже было сказано, изначально, все программисты прорабатывали каждую мелочь в машинном коде, но сейчас эта трудная работа уже не делается. Вместо этого, программисты пишут исходный код, и компьютер (используя компилятор, интерпретатор или ассемблер, речь о которых пойдёт чуть позже) транслирует его, в один или несколько этапов, уточняя все детали, в машинный код, готовый к исполнению на целевом процессоре. Однако, в некоторых языках, вместо машинного кода генерируется интерпретируемый двоичный код «виртуальной машины», также называемый байт-кодом (byte-code). Такой подход применяется в Forth, Lisp, Java.

Теперь, когда мы знаем немного о понятии «программирование», можно переходить к материальной части процесса создания программ. Это, разумеется, технические (аппаратные) средства обеспечения программирования - совокупность электрических, электронных и механических компонентов автоматизированных систем составляет их техническое обеспечение (в отличие от программных средств, представляющих собой программное обеспечение автоматизированных систем). Например, электронная вычислительная машина (ЭВМ) или компьютер - комплекс технических и программных средств, основанных на использовании электроники и предназначенных для автоматической или автоматизированной обработки данных в процессе решения вычислительных и информационных задач. Понятие языка программирования. Процесс работы компьютера заключается в выполнении программы, то есть набора вполне определённых команд во вполне определённом порядке. Машинный вид команды, состоящий из нулей и единиц, указывает, какое именно действие должен выполнить центральный процессор. Значит, чтобы задать компьютеру последовательность действий, которые он должен выполнить, нужно задать последовательность двоичных кодов соответствующих команд. Программы в машинных кодах состоят из тысячи команд. Писать такие программы - занятие сложное и утомительное. Программист должен помнить комбинацию нулей и единиц двоичного кода каждой программы, а также двоичные коды адресов данных, используемых при её выполнении. Гораздо проще написать программу на каком-нибудь языке, более близком к естественному человеческому языку, а работу по переводу этой программы в машинные коды поручить компьютеру. Так возникли языки, предназначенные специально для написания программ, - языки программирования. Язык программирования - это специальный язык, на котором пишут команды для управления компьютером. Языки программирования созданы для того, чтобы людям было проще читать и писать для компьютера, но они затем должны транслироваться (транслятором или интерпретатором) в машинный код, который только и может исполняться компьютером. Языки программирования можно разделить на языки высокого уровня и языки низкого уровня. Язык низкого уровня - это язык программирования, предназначенный для определенного типа компьютера и отражающий его внутренний машинный код; языки низкого уровня часто называют машинно-ориентированными языками. Их сложно конвертировать для использования на компьютерах с разными центральными процессорами, а также довольно сложно изучать, поскольку для этого требуется хорошо знать принципы внутренней работы компьютера. Язык высокого уровня - это язык программирования, предназначенный для удовлетворения требований программиста; он не зависит от внутренних машинных кодов компьютера любого типа. Языки высокого уровня используют для решения проблем и поэтому их часто называют проблемно-ориентированными языками. Каждая команда языка высокого уровня эквивалентна нескольким командам в машинных кодах, поэтому программы, написанные на языках высокого уровня, более компактны, чем аналогичные программы в машинных кодах. Создатели языков по-разному толкуют понятие язык программирования. Среди общин мест, признаваемых большинством разработчиков, находятся следующие:

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

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

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

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

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

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

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

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

Классификация языков программирования

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

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

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

· возможность использования конкретных аппаратных ресурсов;

· предсказуемость объектного кода и заказов памяти;

· для составления эффективных программ необходимо знать систему команд и особенности функционирования данной ЭВМ;

· трудоемкость процесса составления программ (особенно на машинных языках и ЯСК), плохо защищенного от появления ошибок;

· низкая скорость программирования;

· невозможность непосредственного использования программ, составленных на этих языках, на ЭВМ других типов.

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

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

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

Компьютерный код — это специальный текст, состоящий из набора пошаговых инструкций. Он не всегда содержит в себе нули и единицы, также в нём есть определённые слова и дополнительные символы. Компьютер считывает код, который сообщает ему, какие операции следует выполнить с данными. Процесс создания компьютерных программ носит название «программирование», а людей, занимающихся этим видом деятельности, называют программистами. При разработке программ в них часто проникают ошибки. Программа содержит ошибки, если для некоторых данных она даёт сбои, отказы или неправильные результаты. Процесс поиска и исправления ошибок в программах называется отладкой. Количество ошибок в программах обычно заранее неизвестно. Поэтому заранее неизвестна продолжительность отладки программ. Программа (алгоритм) не содержит ошибок, если она даёт правильные результаты для всех допустимых данных. Запись исходных текстов программ при помощи языков программирования облегчает понимание и редактирование человеком. Этому, в частности, помогают комментарии, допустимые в синтаксисе большинства языков. Для выполнения на компьютере готовый текст программы преобразуется (компилируется) в машинный код. Программы с общедоступными исходными текстами называются открытыми. Компьютерные программы являются объектами авторского права. Авторы и правообладатели программ имеют право ограничивать доступ к исходным текстам программ, которые являются их интеллектуальной собственностью. Некоторые языки программирования позволяют обходиться без предварительной компиляции программы и переводят её в инструкции машинного кода непосредственно во время исполнения. Этот процесс называется динамической компиляцией, и он позволяет добиться большей переносимости программ между разными аппаратными и программными платформами при сохранении многих плюсов компиляции. Интерпретируемые программы, для которых как правило не применяется процесс компиляции и которые интерпретируются операционный системой или специальными программами-интерпретаторами, называются скриптами или «сценариями». Исходные тексты компьютерных программ в большинстве языков программирования состоят из списка инструкций, точно описывающих заложенный алгоритм. Подобный подход в программировании называется императивным. Однако применяются и другие методологии программирования. Например, описание исходных и требуемых характеристик, обрабатываемых данных и предоставление выбора подходящего алгоритма решения специализированной программе-интерпретатору - такой подход называется декларативным программированием. Также, применяются функциональное и логическое программирование. Большинство пользователей компьютеров используют программы, предназначенные для выполнения конкретных прикладных задач, таких как подготовка и оформление документов, математические вычисления, обработка изображений и т.п. Соответствующие программные средства называют прикладными программами или прикладным программным обеспечением. Управление компонентами вычислительной системы и формирование среды для функционирования прикладных программ берёт на себя системное программное обеспечение, наиболее важной составляющей которого является операционная система.

Для пользователя одним из основных отличий является характер программы:

Прикладные программы — это программы, с которыми может взаимодействовать непосредственно пользователь. К ним относятся «текстовые редакторы», «браузер», «web-сайты», «игры».

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

Синонимами слова программа являются: «приложение», «ПО», «программное обеспечение», «software». Таким образом, компьютер – это совокупность «программного» и «аппаратного» обеспечения.

Можно разделить программное обеспечение по следующим признакам:

Целевая «операционная система» — поскольку разными «операционными системами» создаются разные среды для прикладного программного обеспечения, то очень важно, для какой именно операционной системы была создана конкретная «программа». Самые известные операционные системы - SuSe Linux, Ubuntu Linux, NetBSD, FreeBSD, OpenBSD MacOS и Microsoft Windows.

Целевая платформа – это разнообразное «аппаратное обеспечение», поддерживающее набор различных инструкций, так что большинство программ создается под определенное «аппаратное обеспечение». Самые популярные платформы: «x64», «x86», «ARM», «IA64», «Itanium» и другие.

Обычно для создания программного обеспечения необходимо написание на определенном «языке программирования» исходных текстов программы, дальнейшая «компиляция» программы, а также «отладка», «тестирование» и последующее распространение программного обеспечения. В 30–50-е годы ХХ века все исходные тексты писались как «машинный код», но вскоре был создан первый язык программирования «ASSEMBLER», использование которого серьезно упрощало процесс создания программы. В дальнейшем появились языки более «высокого уровня», и создание программ перешло от технических специалистов, которые отвечают за функционирование конкретных аппаратных комплексов, к специалистам по созданию программного обеспечения, которых стали называть «программистами». Когда «персональные компьютеры» распространились достаточно широко, «программирование» превратилось в отдельную индустрию, в которой задействовано огромное число специалистов. Сегодня целые учебные заведения полностью направлены на подготовку специалистов для этой индустрии. В СНГ к «программистам» всегда относились как-то по-особенному. После развала СССР было уничтожено большинство предприятий, которые непосредственно занимались производством вычислительной техники. Это привело к тому, что все страны СНГ закупали такую технику за рубежом, в государствах, у которых были развиты технологии производства аппаратного обеспечения. Из-за того произошла задержка в поступлениях, а также образовалась нехватка вычислительной техники в странах СНГ, а значит программисты обходились меньшим количеством рабочих часов с техникой и меньшими аппаратными ресурсами (такими как скорость вычислений, память, скорость передачи информации и т.д.). Если прибавить к таким условиям прекрасную математическую подготовку российских специалистов (следствие качественного образования в СССР) и способности к изобретательству, мы получим образ отечественного «программиста», уважаемого, но при этом е всегда понимаемого, причем не только в России, но за рубежом. Набравший популярность интернет перевел индустрию создания программного обеспечения на другой уровень, так как продавать и распространять программы стало проще. Это произошло благодаря возникновению систем моментальной оплаты (СМС, электронных денег, кредитных карт, терминалов, и т.п.), немалую роль сыграло и появление нового вида программного обеспечения - «web-сайтов». Вначале они были похожи на электронный вариант печатных изданий (журналов, газет, книг), но впоследствии они превратились в полноценные приложения. Развитие интернета привело к тому, что программное обеспечение, как и большинство других индустрий, стало жертвой «пиратов» - компаний и лиц, которые незаконно распространяют программное обеспечение. Борьба «щита и меча» ведется не один год, и появились разные способы децентрализованного распространения нелегальных копий программного обеспечения. Благодаря этим технологиям ответственность за распространение незаконных программ ложиться сразу на миллионы пользователей, а это делает поиск и наказание участников процесса почти невозможным.

6. АЛГОРИТМИЗАЦИЯ КАК КЛЮЧЕВОЙ ЭТАП ПРОГРАММИРОВАНИЯ

Разработка программ включает в себя следующие этапы:

  1. Анализ и уточнение требований, предъявляемых к программе. Иногда этот этап называют постанoвкой задачи.
  2. Проектирование алгоритма и выбор структур данных (или алгоритмизация).
  3. Программирование и отладка.
  4. Тестирование программы.
  5. Документирование, подготовка инструкции для пользователя программы.

Первые два этапа являются основными и ключевыми этапами разрабoтки программного обеспечения. Этап анализа и уточнения требований, предъявляемых к программе – необходимый и весьма ответственный этап, который осуществляется совместно пользователем (заказчиком) программы и ее разработчиком. На этом этапе уточняются основные требования заказчика. Ключевым этапом разработки программы является этап разработки алгоритма и структур данных. Результат этого этапа – формализованное описание или представление алгоритма. Под формой представления алгоритма будет понимать некоторую систему соглашений или правил, позволяющую более точно передать логику решения задачи.

Известны следующие формы представления алгоритмов:

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

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

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

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

Основные звенья блок-схем программ показаны в табл. 3.1.

Табл. 3.1.

Обозначение

Назначение

Примеры

Символ Процесс

Блок вычислений и обработки данных

I=J+2

Символ Решение

Блок проверки условия

Символ Модификация

Блок организации и начала цикла

Обозначение

Назначение

Примеры

Символ Пуск

Блок начала алгоритма

Символ Останов

Блок конца алгоритма

Символ Ввод-вывод

Блок ввода-вывода информации

Символ Вызов

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

Символ Детализация

Блок, определяю-щий часть алгорит-ма, требующую

дальнейшей детализации

Обозначение

Назначение

Примеры

Символ Соединитель

Разрыв линии потока управления,

Перенос части блок-схемы на другую страницу

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

Алгоритм<название>

Входные данные:

< объявления >

Выходные данные:

< объявления >

Промежуточные данные:

< объявления >

Начало

<последовательность действий>

Конец

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

- операция присваивания значения переменной:

<переменная > := <выражение>,

где <выражение> - либо другая переменная, либо константа, либо формула, значение которой должно быть вычислено и присвоено переменной, указанной слева от знака := (присвоить). Например,

A:=5;

B:= C/sin(alfa);

D:=D+1.

- операция ввода/вывода:

ввод(<список ввода>)

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

вывод(<список выражений>)

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

ввод(A,B,C);

вывод(‘A= ‘,A).

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

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

ЗАКЛЮЧЕНИЕ

На основании вышеизложенного сделаем краткие выводы. Можно ожидать, что в перспективе на основе развития науки основные этапы алгоритмизации прикладных задач могут быть автоматизированы на основе формализации и компьютерной реализации. Степенью автоматизации, определяемая долей участия человека, занимающегося алгоритмизацией, может быть различной. Процесс алгоритмизации прикладных задач стал бы существенно проще, если бы специалист, занимающийся алгоритмизацией, мог без затруднений воспользоваться множеством математических и информационных моделей, уже разработанных в его предметной области. В принципе, такая возможность не исключена, но в наш век информатизации количество публикаций по любому вопросу настолько увеличилось, что часто гораздо легче самому построить модель, чем найти ее в существующей публикации. Выход из такого положения может быть найден только в рамках использования современных информационных технологий. Перспективным решением может стать создание методики разработки прикладных задач той или иной предметной области на базе интернет-технологий, реализующих принципы коллективного теледоступа, и создание специфической, по возможности, универсальной методики документирования разрабатываемых моделей, называемой в дальнейшем доопределяемой. Любой человек постоянно встречается с мнoжеством задач: от самых простых и хорошо известных до очень сложных. Для множества из них существуют определенные правила (инструкции, предписания), объясняющие исполнителю, как решать данную задачу. Эти правила человек может изучить заранее или сформулировать сам в процессе решения. Чем более точно и однозначно будут описаны правила решения задач, тем быстрее человек овладеет ими и будет эффективнее их применять. Такие правила принято называть алгоритмами. Процессор электронно-вычислительной машины, это чудо техники, умеет, тем не менее, выполнять лишь простейшие команды. Каким же образом компьютер решает сложнейшие задачи обработки информации? Для решения этих задач программист должен составить подробное описание последовательности действий, которые необходимо выполнить центральному процессору компьютера. Составление такого пошагового описания процесса решения задачи называется алгоритмизацией, это сложный процесс, носящий в значительной степени творческий характер. Формализация (постановка) задачи и ее алгоритмизация обычно составляют 20-30% общего времени на разработку программы. Слoжность и ответственность реализации данного этапа объясняется тем, что для решения одной и той же задачи, как правило, существует множество различных алгоритмов, что позволяет сделать вывод «алгоритмизация является обязательным этапом разработки программы».

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

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

2.Балафанов Е.Н. «30 уроков по информатике», Москва 2007 г.

3. Галин А.Б., Панов Ю.В. Информатика. Феникс - 2009 г.

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

5. Карпенков С.Х. Современные средства информационных технологий. КноРус - 2009 г.

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

7. Кушнеренко А.Г. Основы информатики и ВТ: Учеб. для 10-11 кл. — 4-е изд. / А.Г.Кушнеренко и др. — М: Просвещение, 1996. — 224 с.

8. Макарова Н.В. Информатика и ИТК. М:, 2006 г.

9. Островский В.А. Информатика. 2009 г.

10. Семакин И.Г. Основы программирования: Учебник для среднего профессионального образования / И.Г.Семакин, А.П.Шестаков. — М.: Издательский центр «Академия», 2003. – 432 с.

11. Макарова Н.В. Информатика и ИТК. М:, 2006 г.

12.Могилев А.В. «Практикум по информатике» Санкт-Петербург 2005 г.

13. Островский В.А. Информатика. 2009 г.

14. Таганов Л.С., Левин В.Г. Информатика. Учебное пособие. Кемерово, 2006 г.

15. Шауцукова Л.З. Информатика. Теория. М:, 2002 г.

16. Шафрин Ю.А. Информационные технологии. М - Лаборатория базовых знаний, 1998 г.

17.Шафрин Ю. А. «Основы компьютерной технологии», Москва 2005 г..

18.Блох А.Ш., Неверов Г.С. В помощь авторам алгоритмов. – Минск: Беларусь, 1971 г.

19.Голембо З.Б. Алгоритмизация и программирование электротехнических задач на ЭЦВМ. – М.: Высшая школа, 1974 г.

20.Измайлов А.Ф. Алгоритмизация и программирование. – Л.: ВМА, 1975 г.

21.Мельцер М.И. Разработка алгоритмов АСУП. – М.: Статистика, 1975 г.

22.Ланчук М.П. Алгоритмизация. Программирование/Пособие для учителя. М.: Просвещение, 1988 г.

23.Котов В.М. Методы алгоритмизации. – Минск, 1996 г.

24.Игошин В.И. Теория алгоритмов. – М.: Academia, 2013 г.

25.Макконнелл Дж. Основы современных алгоритмов. – М.: Техносфера, 2006 г.

26.Кириницкий Н.А. Алгоритмы вокруг нас. – М.: Наука, 1977 г.