9791

Основные этапы решения задачи с помощью ПК

Реферат

Информатика, кибернетика и программирование

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

Русский

2013-03-17

84.5 KB

62 чел.

Основные этапы решения задачи с помощью ПК

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

Перечислим этапы решения задачи на ПК:

1) Математическая постановка задачи

2) Разработка методики решения поставленной задачи

3) Получение алгоритма решения

4) Программирование (8%)

5) Отладка программы (25%)

6) Решение задачи в автоматическом режиме

Остановимся на каждом этапе более подробно.

(1) Математическая постановка задачи

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

(2) Разработка методики решения поставленной задачи

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

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

Алгоритм должен обладать следующими свойствами:

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

2) Результативность.

3) Массовость.

(1) Определенность (детерминированность). однозначность понимания для исполнителя и точность не оставляющая места для произвола действий.

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

(3) Массовость. Свойство пригодности для решения любой задачи из некоторого класса задач.

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

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

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

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

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

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

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

Элементарной структурной единицей любого алгоритма является простая команда, обозначающая ОДИН элементарный шаг переработки или отображения информации. Например, присвоить переменной Х значение 100 (X=100) или вычислить Y=(X2+5)/10. Объектами действий в алгоритмах являются числа, простые переменные (A, y, x, alpha, r2) и переменные с индексами (X15, M24).

4. Программирование

На этом этапе определяется язык программирования на котором будет реализовываться наш алгоритм.

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

5. Отладка

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

Суть отладки состоит в следующем:

1) Подготовка контрольных тестов которые должны содержать набор исходных данных для которых известен конечный результат.

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

6. Решение задачи в автоматическом режиме

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

2. Общая характеристика языков программирования высокого уровня

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

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

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

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

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

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

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

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

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

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

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

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

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

1. Положить А = n, В = m.

2. Если А = В то перейти к п. 5, иначе — к п. 3.

3. Если А > В, то в качестве нового значения А принять А – В, а значение В оставить без изменения; в противном случае в качестве нового значения В принять В – А, оставив без изменения значение А.

4. Перейти к п. 2.

5. Принять НОД =А и прекратить вычисления.

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

1. Принять А = n, В = m.

2. Пока А   не равно В выполнять:

если А > В то положить А = А — В иначе положить В = В — А.

3. Принять значение А в качестве НОД и прекратить вычисления.

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

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

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

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

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

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

Алфавит — это фиксированный для данного языка набор основных символов, т.е. «букв алфавита», из которых должен состоять любой текст на этом языке — никакие другие символы в тексте не допускаются.

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

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

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

3. Запись алгоритма с помощью блок-схем

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

Опр. Переменная – изменяемый объект обозначенный некоторым именем.

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

1) Следование (пример 1)

Найти корни уравнения Ax2+Bx+C=0

Будем считать, что уравнение имеет два вещественных корня.

x1,2 = – (B/2A) ± SQRT(B2 – 4AC) / (2A)

2) Альтернатива (пример 2)

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

  •  а=0. Уравнение перестает быть квадратным. Используемые формулы неприменимы. x = – C / B.
  •  (B2 – 4AC) < 0. Выводим: уравнение имеет комплексные корни.

A = B = 0. Решений нет.

3) Цикл (пример 3)

Рассмотрим следующую задачу: Пусть требуется вычислить несколько значений функции y=2∙x3-5 для значений x, начиная с x=1  до значения x=10 с шагом 0,5. [Решение представлено на рис. 2.1-2.3.]

ГОСТ 19.701-90 (ISO 5807-85) Действует с 01.01.92.

Данные. (ввод-вывод данных) (угол 65º)
Символ отображает данные, носитель данных не определен

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

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

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

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

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

Примеры:

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

Терминатор. Начало или конец схемы программы.

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

Пример.

––– ··· –––

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

–––––––––

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

- - - - - - - -

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

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

Пример.

Примечание. Процессы C,D и E не могут начаться до тех пор, пока не завершится процесс A; аналогично процесс F должен ожидать завершения процессов B,C и D, однако процесс C может начаться и (или) завершиться прежде, чем соответственно начнется и (или) завершится процесс D.

Часто в программировании используется операция i:=i+1. Такая операция означает, что сначала должна быть выполнена операция сложения (i+1), а затем полученная сумма присвоена переменной i в качестве её нового значения. При этом старое значение i пропадает, «стирается». После этой операции переменная i, будет иметь значение на 1 больше, чем перед её выполнением.

Рис.2.1 Нерационально

Рис.2.2
Бесконечно

Рис.2.3
Неплохо


 

А также другие работы, которые могут Вас заинтересовать

45146. Думская монархия 15.57 KB
  Всего было 4 созыва Государственной думы. Новой основой законодательной компетенции Государственной думы стал п. установивший как незыблемое правило чтобы никакой закон не мог восприять силу без одобрения Государственной думы. 86 Основных законов Российской империи в редакции 23 апреля 1906: Никакой новый закон не может последовать без одобрения Государственного совета и Государственной думы и восприять силу без утверждения Государя Императора.
45147. Кризисы государственного управления периода правления Николая II 12.86 KB
  Первая русская революция ставшая ярким показателем необходимости реформ так и не стала для императора той ступенью которая могла бы направить страну на путь преобразования и развития. Вступление императора на должность главнокомандующего в условиях войны было бесполезным шагом так как Николай не обладал даром командования войсками и этот шаг был простой формальностью которая тем не менее не принесла никаких положительных результатов. Ситуация внутри страны продолжает накаляться и вместе с тяжелым положением во внешней политике ставит...
45148. Формирование партийно-государственной системы большевиков 1917-1921 гг 26.46 KB
  Съезд принял постановление О федеральных учреждениях Российской Республики и оформил создание Российской Социалистической Федеративной Советской Республики РСФСР. РСФСР учреждалась на основе свободного союза народов как федерация советских национальных республик. Весной 1918 года начался процесс оформления государственности народов населявших РСФСР. Советская Россия неофициальное наименование[7] самостоятельного социалистического российского государства в период после Октябрьской революции 1917 года и до образования СССР в 1922 году с...
45150. Учреди́тельное собра́ние 14.65 KB
  Отказалось рассматривать Декларацию прав трудящегося и эксплуатируемого народа которая наделяла советы рабочих и крестьянских депутатов государственной властью. Распущено Всероссийским Центральным Исполнительным Комитетом советов рабочих и крестьянских депутатов роспуск подтверждён III Всероссийским Съездом Советов рабочих и крестьянских депутатов. Из 715 депутатов присутствовало около 410. Большевистских депутатов было около 120.
45151. Образование СССР 8.3 KB
  В то время на долю РСФСР приходилось 92 площади страны население которой в дальнейшем составило 70 новообразованного СССР. Причины образования СССР Образование СССР произошло не только благодаря инициативе руководства коммунистической партии. Год образования СССР Официально дата образования СССР это 30 декабря 1922 года.
45152. Государственный аппарат в годы Великой Отечественной войны (1941—1945) 16.84 KB
  В 65 городах СССР в период 1941 1942 гг. эти органы реорганизовали в Управление по делам эвакуации при СНК СССР. В соответствии с обстановкой изменилось положение Госплана СССР эвакуированного в Куйбышев. Проблема обеспечения народного хозяйства кадрами потребовала создания при СНК СССР Комитета по учету и распределению рабочей силы июнь 1941.
45153. Хрущевская государственная реорганизация 19.23 KB
  Хрущевская государственная реорганизация Период правления Хрущёва иногда называют оттепелью: были выпущены на свободу многие политические заключённые активность репрессий значительно снизилась по сравнению с периодом правления Сталина. Борьба с культом личности Сталина: массовая десталинизация вынос тела Сталина из Мавзолея в 1961 году переименование названных в честь Сталина городов снесение памятников Сталину остался только памятник в Гори демонтирован только в 2010 году[18]. Силовой разгон митингов в Тбилиси против осуждения...