На каком этапе решения на эвм выявляются синтаксические ошибки

Машинно-ориентированные языки относятся к машинно-зависимым языкам программирования. Основные конструктивные средства таких языков позволяют учитывать особенности архитектуры и принципов работы определенной ЭВМ, т. е. они имеют те же возможности и требования к программистам, что и машинные языки. Однако в отличие от последних они требуют предварительной трансляции на машинный язык составленных с их помощью программ.
Данными видами языков программирования могут быть: автокоды, языки символического кодирования и ассемблеры.
Для машинно-независимых языков не требуется полного знания специфики компьютеров. С их помощью можно записывать программу в виде, допускающем ее реализацию на ЭВМ с различными типами машинных операций, привязка к которым возлагается на соответствующий транслятор.
Причина бурного развития и применения высокоуровневых языков программирования заключается в быстром росте производительности ЭВМ и хронической нехватке программистских кадров.
Промежуточное место между машинно-независимыми и машинно-зависимыми языками отводится языку Си. Он создавался при попытке объединения достоинств, присущих языкам обоих классов. Данный язык обладает рядом особенностей:
• максимально использует возможности конкретной вычислительной архитектуры; из-за этого программы на языке Си компактны и работают эффективно;
• позволяет налучшим образом использовать огромные выразительные средства современных языков высокого уровня.
Языки разделяют на процедурно-ориентированные и проблемно-ориентированные.
Процедурно-ориентированные языки, например Фортран, Кобол, Бейсик, Паскаль, наиболее часто используются для описания алгоритмов решения широкого класса задач.
Проблемно-ориентированные языки, в частности РПГ, Лисп, АПЛ, GPSS, применяются для описания процессов обработки информации в более узкой, специфической области.
Объектно-ориентированные языки программирования позволяют разрабатывать программные приложения для большого круга разнообразных задач, имеющих общность в реализуемых компонентах.
Рассмотрим методы использования языков программирования.
Интерпретация представляет собой пооператорную трансляцию и последующее выполнение оттранслированного оператора исходной программы. Существует два основных недостатка метода интерпретации:
1) интерпретирующая программа должна располагаться в памяти ЭВМ на протяжении всего процесса выполнения исходной программы. Другими словами, она должна занимать некоторый установленный объем памяти;
2) процесс трансляции одного и того же оператора повторяется такое число раз, которое должна исполнять эта команда в программе. Это приводит к резкому снижению производительности работы программы.
Трансляторы-интерпретаторы являются достаточно распространенными, так как они поддерживают диалоговый режим.
Процессы трансляции и выполнения при компиляции разделяются во времени: сначала исходная программа в полном объеме переводится на машинный язык, после чего оттранслированная программа может многократно исполняться. Для трансляции методом компиляции необходим неоднократный «просмотр» транслируемой программы, т. е. трансляторы-компиляторы являются многопроходными. Трансляция методом компиляции носит название объектного модуля, который представляет собой эквивалентную программу в машинных кодах. Необходимо, чтобы перед исполнением объектный модуль обрабатывался специальной программой ОС и преобразовывался в загрузочный модуль.
Применяют также трансляторы интерпретаторы-компиляторы, объединяющие в себе достоинства обоих принципов трансляции.

Высокоуровневые языки используются в машинно-независимых системах программирования. Такие системы программирования в сравнении с машинно-ориентированными системами предстают более простыми в использовании.
Языки программирования высокого уровня подразделяют на процедурно-ориентированные, проблемно-ориентированные и объектно-ориентированные.
Процедурно-ориентированные языки применяются для записи процедур или алгоритмов обработки информации на каждом определенном круге задач. К ним относятся:
а) язык Фортран (Fortran), название которого происходит от слов Formulae Translation – «преобразование формул». Фортран представляет собой один из старейших языков программирования высокого уровня. Длительность его существования и применения можно объяснить простотой структуры данного языка;
б) язык Бейсик (Basic), который расшифровывается как Beginner’s All-purpose Symbolic Instruction Code, что в переводе означает – «многоцелевой символический обучающий код для начинающих», разработан в 1964 г. как язык для обучения программированию;
в) язык Си (С), применяемый с 1970-х гг. как язык системного программирования специально для написания ОС UNIX. В 1980-е гг. на основе языка С был разработан язык C++, практически включающий в себя язык С и дополненный средствами объектно-ориентированного программирования;
г) язык Паскаль (Pascal), который назван в честь французского ученого Б. Паскаля, начал применяться с 1968–1971 гг. Н. Виртом. При создании Паскаль использовался для обучения программированию, но со временем стал широко применяться для разработки программных средств в профессиональном программировании.
Проблемно-ориентированные языки используются для решения целых классов новых задач, возникших в связи с постоянным расширением области применения вычислительной техники:
а) язык Лисп (Lisp – List Information Symbol Processing), который был изобретен в 1962 г. Дж. Маккарти. Первоначально он применялся как средство для работы со строками символов. Лисп употребляется в экспертных системах, системах аналитических вычислений и т. п.;
б) язык Пролог (Prolog – Programming in Logic), используемый для логического программирования в системах искусственного интеллекта.
Объектно-ориентированные языки развиваются и в настоящий момент. Большинство из этих языков являются версиями процедурных и проблемных языков, но программирование с помощью языков этой группы является более наглядным и простым. К наиболее часто употребляемым языкам относятся:
а) Visual Basic (~ Basic);
б) Delphi (~ Pascal);
в) Visual Fortran (~ Fortran);
r) C++ (~ C);
д) Prolog++ (~ Prolog).

Процесс разработки программы можно выразить следующей формулой: 

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

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

Отладка и тестирование — это два четко различимых и непохожих друг на друга этапа:

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

Тестирование устанавливает факт наличия ошибок, а отладка выясняет ее причину.

Английский термин debugging («отладка«) буквально означает «вылавливание жучков«. Термин появился в 1945 г., когда один из первых компьютеров — «Марк-1» прекратил работу из-за того, что в его электрические цепи попал мотылек и заблокировал своими останками одно из тысяч реле машины.

В современных программных системах (Turbo Basic, Turbo Pascal, Turbo C и др.) отладка осуществляется часто с использованием специальных программных средств, называемых отладчиками. Эти средства позволяют исследовать внутреннее поведение программы.
Программа-отладчик обычно обеспечивает следующие возможности:

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

При отладке программ важно помнить следующее:

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

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

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

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

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

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

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

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

Пример. Система тестов для задачи нахождения корней квадратного уравнения ax2 + bx + c = 0 : 

Номер теста Проверяемый случай Коэффициенты Результаты
a b c
1 d >0 1 1 -2 x1 = 1, x2 =  — 2
2 d=0 1 2 1 Корни равны:  x1 = — 1, x2 =  — 1
3 d < 0 2 1 2 Действительных корней нет
4 a=0,   b=0,   c=0 0 0 0 Все коэффициенты равны нулю.   х — любое число.
5 a=0,   b=0,   c<>0 0 0 2 Неправильное уравнение
6 a=0,   b<>0 0 2 1 Линейное уравнение.   Один корень:   x = — 0,5
7 a <> 0,   b <> 0,   с = 0 2 1 0 x1 = 0,   x2  =  — 0,5

Процесс тестирования можно разделить на три этапа.1. Проверка в нормальных условиях. Предполагает тестирование на основе данных, которые характерны для реальных условий функционирования программы.
2. Проверка в экстремальных условиях. Тестовые данные включают граничные  значения области изменения входных переменных, которые должны восприниматься программой как правильные данные. Типичными примерами таких значений являются очень маленькие или очень большие числа и отсутствие данных. Еще один тип экстремальных условий — это граничные объемы данных, когда массивы состоят из слишком малого или слишком большого числа элементов.
3. Проверка в исключительных ситуациях. Проводится с использованием данных, значения которых лежат за пределами допустимой области изменений. Известно, что все программы разрабатываются в расчете на обработку какого-то ограниченного набора данных. Поэтому важно получить ответ на следующие вопросы: 
       что произойдет, если программе, не расчитанной на обработку отрицательных и нулевых значений переменных, в результате какой-либо ошибки придется иметь дело как раз с такими данными? 
       как будет вести себя программа, работающая с массивами, если количество их элементов певысит величину, указанную в объявлении массива? 
       что произойдет, если числа будут слишком малыми или слишком большими?

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

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

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

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

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

Примеры синтаксических ошибок:

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

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

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

Ошибки в циклах:

  • неправильное указание начала цикла;
  • неправильное указание условий окончания цикла;
  • неправильное указание числа повторений цикла;
  • бесконечный цикл.

Ошибки ввода-вывода; ошибки при работе с данными:

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

Ошибки в использовании переменных:

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

Ошибки при работе с массивами:

  • массивы предварительно не обнулены;
  • массивы неправильно описаны;
  • индексы следуют в неправильном порядке.

Ошибки в арифметических операциях:

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

Все эти ошибки обнаруживаются с помощью тестирования.
 

  1. Этапы решения задачи на эвм.

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


постановка
задачи;

• математическое описание задачи;

• выбор и обоснование метода решения;

• алгоритмизация вычислительного
процесса;

• составление программы;

• отладка программы;

• решение задачи на ЭВМ и анализ
результатов.

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

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

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

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

Математическая
модель должна удовлетворять по крайней
мере двум требованиям:

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

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

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

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

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

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

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

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

Тестирование и отладка программ

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

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

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

Учитывая разнообразие источников ошибок, при составлении плана тестирования классифицируют ошибки на два типа: 1 – синтаксические; 2 – семантические (смысловые).

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

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

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

В план тестирования обычно входят следующие этапы:

  1. Сравнение программы со схемой алгоритма.
  2. Визуальный контроль программы на экране дисплея или визуальное изучение распечатки программы и сравнение ее с оригиналом на программном бланке. Первые два этапа тестирования способны устранить больше количество ошибок, как синтаксических (что не так важно), так и семантических (что очень важно, так как позволяет исключить их трудоемкий поиск в процессе дальнейшей отладки).
  3. Трансляция программы на машинных язык. На этом этапе выявляются синтаксические ошибки. Компиляторы с языков Си, Паскаль выдают диагностическое сообщение о синтаксических ошибках в листинге программы (листингом называется выходной документ транслятора, сопровождающий оттранслированную программу на машинном языке – объектный модуль).
  4. Редактирование внешних связей и компоновка программы. На этапе редактирования внешних связей программных модуле программа-редактор внешних связей, или компоновщик задач, обнаруживает такие синтаксические ошибки, как несоответствие числа параметров в описании подпрограммы и обращении к ней, вызов несуществующей стандартной программы. например, 51 H вместо 51 N, различные длины общего блока памяти в вызывающем и вызываемом модуле и ряд других ошибок.
  5. Выполнение программы. После устранения обнаруженных транслятором и редактором внешних связей (компоновщиком задач) синтаксических ошибок переходят к следующему этапу – выполнению программы на ЭВМ на машинном языке: программа загружается в оперативную память, в соответствие с программой вводятся исходные данные и начинается счет. Проявление ошибки в процессе вода исходных данных или в процессе счета приводит к прерыванию счета и выдаче диагностического сообщения рабочей программы. Проявление ошибки дает повод для выполнения отладочных действий; отсутствие же сообщений об ошибках не означает их отсутствия в программе. План тестирования включает при этом проверку правильности полученных результатов для каких-либо допустимых значений исходных данных.
  6. Тестирование программы. Если программа выполняется успешно, желательно завершить ее испытания тестированием при задании исходных данных, принимающих предельные для программы значения. а также выходящие за допустимые пределы значения на входе.

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

Наиболее простые способы получения тестов:

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

Предложите, как улучшить StudyLib

(Для жалоб на нарушения авторских прав, используйте

другую форму
)

Ваш е-мэйл

Заполните, если хотите получить ответ

Оцените наш проект

1

2

3

4

5

ЭТАПЫ РЕШЕНИЯ ЗАДАЧ НА ЭВМ

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

Формализация или постановка задачи.

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

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

Построение математической модели. Частный случай информационной модели, который очень часто используют при решении задач на ЭВМ – математическая модель.

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

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

Разработка алгоритма.

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

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

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

Написание программы.

Компьютерная модель – модель, реализованная средствами программной среды.

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

Компьютерный эксперимент. (Запуск и отладка программы.)

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

Синтаксические ошибки – нарушения правил записи команд.

Семантические – нарушения параметров команд.

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

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

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

Анализ результатов.

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

Рассмотрим решение с помощью компьютера следующей простейшей задачи:

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

Выполним или выясним вид этапов для нее.

1. Что дано? Несущественно — деревянная, голубая.

Существенно — длина и ширина: А и В, которые являются действительными положительными числами.

Что найти? Площадь: S — действительное положительное число.

2. Отбрасывая несущественные отклонения формы стола от прямоугольника, запишем формулу: S=А*В.

3. Теперь следует продумать алгоритм. Можно записать его словесным способом:

Очистка экрана

Ввод исходных данных (А, В)

Если исходные данные не положительны, то вернуться к вводу

Вычисление результата (S)

Сообщение результата (S)

или начертить блок-схему:

t1639420643aa.gif

t1639420643ab.gif

4.Запишем программу, соответствующую выбранному алгоритму.

На этом этапе следует ввести программу в память ЭВМ.

5. Для пробного запуска программы нужно выполнить специальную команду. При этом на запрос «Введи две стороны?» вы будете набирать на клавиатуре какие-либо числа. Эти числа будут тестовым заданием. Увидев на экране монитора сообщение об ошибке, необходимо проверить строчку программы в памяти ЭВМ с указанным номером, исправить ошибку и еще раз запустить программу. Так поступают до выполнения программы без сообщений об ошибках.

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

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

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

  • На компьютере ошибка 0х80070490
  • На компьютере ошибка 0xc0000022
  • На компьютере код ошибки 300
  • На компе ошибка inaccessible boot device
  • На их территории ничего не происходило где ошибка