Навигация
Главная
Поиск
Форум
FAQ's
Ссылки
Карта сайта
Чат программистов

Статьи
-Delphi
-C/C++
-Turbo Pascal
-Assembler
-Java/JS
-PHP
-Perl
-DHTML
-Prolog
-GPSS
-Сайтостроительство
-CMS: PHP Fusion
-Инвестирование

Файлы
-Для программистов
-Компонеты для Delphi
-Исходники на Delphi
-Исходники на C/C++
-Книги по Delphi
-Книги по С/С++
-Книги по JAVA/JS
-Книги по Basic/VB/.NET
-Книги по PHP/MySQL
-Книги по Assembler
-PHP Fusion MOD'ы
-by Kest
Professional Download System
Реклама
Услуги

Автоматическое добавление статей на сайты на Wordpress, Joomla, DLE
Заказать продвижение сайта
Программа для рисования блок-схем
Инженерный калькулятор онлайн
Таблица сложения онлайн
Популярные статьи
OpenGL и Delphi... 65535
Форум на вашем ... 65535
21 ошибка прогр... 65535
HACK F.A.Q 65535
Бип из системно... 65535
Гостевая книга ... 65535
Invision Power ... 65535
Пример работы с... 65535
Содержание сайт... 65535
ТЕХНОЛОГИИ ДОСТ... 65535
Организация зап... 65535
Вызов хранимых ... 65535
Создание отчето... 65535
Имитационное мо... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Реклама
Сейчас на сайте
Гостей: 19
На сайте нет зарегистрированных пользователей

Пользователей: 13,372
новичок: vausoz
Новости
Реклама
Выполняем курсовые и лабораторные по разным языкам программирования
Подробнее - курсовые и лабораторные на заказ
Delphi, Turbo Pascal, Assembler, C, C++, C#, Visual Basic, Java, GPSS, Prolog, 3D MAX, Компас 3D
Заказать программу для Windows Mobile, Symbian

Моделирование процесса обработки заданий пакетным режимом работы с квант...
База данных междугородних телефонных разговоров на Delphi
Метод половинного деления для нахождения корня уровнения на Turbo Pascal...

Этапы решения компьютерных задач


Решение задач с помощью компьютера включает в себя следующие основные этапы, часть из которых осуществляется без участия компьютера (рис.1).
 Этапы решения задач с использованием компьютера
Рис.1. Этапы решения задач с использованием компьютера
Как видно из рисунка, процесс решения любой задачи начинается с постановки за-дачи. От того насколько точно будет поставлена задача, будет зависеть и результат ее решения. На данном этапе выполняются следующие действия:
- формулировка условия задачи;
- определение конечных целей решения задачи;
- определение формы выдачи результатов;
- описание данных (их типов, диапазонов величин, структуры и т.п.).
Рассмотрим процесс решения задачи с помощью компьютера на примере изучения полета артиллерийского снаряда. Вначале необходимо определиться с условиями задачи. Предположим, необходимо рассмотреть движение снаряда в поле тяготения Земли. При этом будем рассматривать только те параметры, которые характеризуют движение снаряда (скорость и координаты), и отвлечемся от других параметров (температура снаряда, его цвет и т.д.). В качестве исходных данных в нашем случае будут выступать угол вылета снаряда A, его начальная скорость V и время полета t.
На шаге определения конечных результатов следует четко сформулировать требования к результатам решения. В нашем примере, эти требования можно описать следующим образом: получить траекторию движения снаряда в зависимости от времени его полета. Следующий шаг – определение формы выдачи результатов. Для нашего примера это мо-жет быть либо статическое графическое представление, либо табличная форма, либо ди-намическая картинка (видеоизображение полета). На последнем шаге постановки задачи описываются данные, которые будут обрабатываться для решения задачи. Для нашего примера, очевидно, все данные будут неотрицательными числами, скорость и координаты – дробными числами, а время полета – целым. Ускорение свободного падения примем постоянным и равным 9,8 м/с.
Следующим этапов процесса решения является анализ и исследование задачи, построение модели. На данном этапе следует, прежде всего, проанализировать существующие аналоги. В некоторых случаях можно избежать этапа построения алгоритма и соз-дания программы, благодаря использованию одной из многих ранее созданных программ. Такие библиотеки алгоритмов (программ) существуют практически по всем областям науки и техники.
Предположим, что для нашей задачи аналогов не нашлось. Тогда следует проанализировать собственные технические и программные средства. Когда техническая и информационная база достаточны для решения задачи, приступают к разработке математической модели, которая основана на некоторых упрощениях, и это делает этап построения математической модели весьма ответственным, ведь неправильно выбранная модель приведет к неверным результатам.
Конечно, результаты вычислительного эксперимента могут оказаться и не соответствующими действительности, если в модели не будут учтены какие-то важные стороны действительности.
Итак, создавая математическую модель для решения задачи, нужно:
1. выделить предположения, на которых будет основываться математическая модель;
2. определить, что считать исходными данными и результатами;
3. записать математические соотношения, связывающие результаты с исходными данными.
При построении математических моделей далеко не всегда удается найти формулы, явно выражающие искомые величины через данные. В таких случаях используются математические методы, позволяющие дать ответы той или иной степени точности.
Существует не только математическое моделирование какого-либо явления, но и визуальнонатурное моделирование, которое обеспечивается за счет отображения этих явлений средствами машинной графики, т.е. перед исследователем демонстрируется своеоб-разный "компьютерный мультфильм", снимаемый в реальном масштабе времени. Наглядность здесь очень высока.
Когда математическая модель получается достаточно сложной, может потребоваться разработать структуру данных.
В нашем примере существующая физическая система описывается с помощью уп-рощенной математической модели. Снаряд является материальной точкой, сопротивлением воздуха, скоростью ветра и размерами пушки пренебрегаем, ускорение свободного па-дения считаем постоянным g = 9,8 м/с. Снаряд вылетает из пушки со скоростью V под углом A к горизонту.
Математическая модель описывает объект моделирования с помощью уравнений. Получим формулы зависимости координат снаряда от времени, учитывая, что по оси X движение равномерное, а по оси Y - равноускоренное:
х = (V cos(a))t,
у= (V sin(a))t – gt2/2.



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

После того, как алгоритм описан, можно приступать к этапу программирования, на котором выполняется следующее:
- выбор языка программирования;
- уточнение способов организации данных;
- запись алгоритма на выбранном языке программирования.
Вот как будет выглядеть наш алгоритм на языке программирования Паскаль.
Блок схема
Program Traektoriya;
Uses crt;
Const g=9.8;
Var v,a,x,y:real;
i,t: word;
begin
write(’Введите начальную скорость, угол вылета снаряда’);
writeln(’и время его полета’);
readln(v,a,t);
writeln(’ Координаты’);
writeln(’ X Y’);
for i:=1 to t do
begin
x:=v*cos(a)*i;
y:=(v*sin(a))*i-g*i*i/2;
writeln(x:7:2,y:7:2);
end;
end.





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

Поэтому недостаточно написать текст программы. Необходимо полученный вариант программы протестировать, т.к. наличие ошибок в только что разработанной программе – это вполне нормальное закономерное явление. Практически невозможно составить реальную (достаточно сложную) программу без ошибок. Нельзя делать вывод, что программа правильна, лишь на том основании, что она не отвергнута машиной и выдала результаты. Все, что достигнуто в этом случае, это получение каких-то результатов, не обязательно правильных. В программе при этом может оставаться большое количество логических ошибок. Ответственные участки программы проверяются с использованием методов доказательства правильности программ.
Как проконтролировать текст программы до выхода на компьютер?
Текст программы можно проконтролировать за столом с помощью просмотра, про-верки и прокрутки.
• Просмотр. Текст программы просматривается на предмет обнаружения описок и расхождений с алгоритмом. Нужно просмотреть организацию всех циклов, что-бы убедиться в правильности операторов, задающих кратности циклов. Полезно посмотреть еще раз условия в условных операторах, аргументы в обращениях к подпрограммам и т.п.
• Проверка. При проверке программы программист по тексту программы мысленно старается восстановить тот вычислительный процесс, который определяет про-грамма, после чего сверяет его с требуемым процессом. На время проверки нужно "забыть", что должна делать программа , и "узнавать" об этом по ходу её проверки. Только после окончания проверки программы можно "вспомнить" о том, что она должна делать и сравнить реальные действия программы с требуемыми.
• Прокрутка. Основой прокрутки является имитация программистом за столом выполнения программы на машине. Для выполнения прокрутки приходится задаваться какими-то исходными данными и производить над ними необходимые вычисления. Прокрутка — трудоемкий процесс, поэтому ее следует применять лишь для контроля логически сложных участков программ. Исходные данные должны выбираться такими, чтобы в прокрутку вовлекалось большинство ветвей программы.
Отладка и тестирование
Отладка программы – это процесс поиска и устранения ошибок в программе, произ-водимый по результатам её прогона на компьютере.
Тестирование (англ. test — испытание) — это испытание, проверка правильности работы программы в целом, либо её составных частей.
Отладка программы:

• при отладке происходит локализация и устранение синтаксических ошибок и явных ошибок кодирования;
• в процессе же тестирования проверяется работоспособность программы, не содержащей явных ошибок.
Английский термин debugging ("отладка") буквально означает "вылавливание жучков". Термин появился в 1945 г., когда один из первых компьютеров — "Марк-1" прекратил работу из-за того, что в его электрические цепи попал мотылек и заблокировал своими останками одно из тысяч реле машины.
В чем заключается отладка?
В современных программных системах (Turbo Basic, Turbo Рascal, Turbo C и др.) от-ладка осуществляется часто с использованием специальных программных средств, назы-ваемых отладчиками. Эти средства позволяют исследовать внутреннее поведение программы.
Программа-отладчик обычно обеспечивает следующие возможности:
• пошаговое исполнение программы с остановкой после каждой команды (оператора);
• просмотр текущего значения любой переменной или нахождение значения любого выражения, в том числе, с использованием стандартных функций; при необходимости можно установить новое значение переменной;
• установку в программе "контрольных точек", т.е. точек, в которых программа временно прекращает свое выполнение, так что можно оценить промежуточные результаты, и др.
Что такое тест и тестирование?

Как бы ни была тщательно отлажена программа, решающим этапом, устанавливающим ее пригодность для работы, является контроль программы по результатам ее выпол-нения на системе тестов.
Программу условно можно считать правильной, если её запуск для выбранной системы тестовых исходных данных во всех случаях дает правильные результаты.
Но, как справедливо указывал известный теоретик программирования Э. Дейкстра, тестирование может показать лишь наличие ошибок, но не их отсутствие. Нередки случаи, когда новые входные данные вызывают "отказ" или получение неверных результатов работы программы, которая считалась полностью отлаженной.
Для реализации метода тестов должны быть изготовлены или заранее известны эталонные результаты.
Вычислять эталонные результаты нужно обязательно до, а не после получения машинных результатов.
В противном случае имеется опасность невольной подгонки вычисляемых значений под желаемые, полученные ранее на машине.
Какими должны быть тестовые данные?
Тестовые данные должны обеспечить проверку всех возможных условий возникновения ошибок:
• должна быть испытана каждая ветвь алгоритма;
• очередной тестовый прогон должен контролировать нечто такое, что еще не было проверено на предыдущих прогонах;
• первый тест должен быть максимально прост, чтобы проверить, работает ли про-грамма вообще;
• арифметические операции в тестах должны предельно упрощаться для уменьшения объема вычислений;
• количества элементов последовательностей, точность для итерационных вычислений, количество проходов цикла в тестовых примерах должны задаваться из сооб-ражений сокращения объема вычислений;
• минимизация вычислений не должна снижать надежности контроля;
• тестирование должно быть целенаправленным и систематизированным, так как случайный выбор исходных данных привел бы к трудностям в определении ручным способом ожидаемых результатов; кроме того, при случайном выборе тестовых данных могут оказаться непроверенными многие ситуации;
• усложнение тестовых данных должно происходить постепенно.
Пример. Система тестов для задачи нахождения корней квадратного уравнения
ax2 + bx + c = 0 :


Этапы процесса тестирования
Процесс тестирования можно разделить на три шага.
1. Проверка в нормальных условиях. Предполагает тестирование на основе дан-ных, которые характерны для реальных условий функционирования программы.
2. Проверка в экстремальных условиях. Тестовые данные включают гранич-ные значения области изменения входных переменных, которые должны восприни-маться программой как правильные данные. Типичными примерами таких значений являются очень маленькие или очень большие числа и отсутствие данных. Еще один тип экстремальных условий — это граничные объемы данных, когда массивы состоят из слишком малого или слишком большого числа элементов.
3. Проверка в исключительных ситуациях. Проводится с использованием данных, значения которых лежат за пределами допустимой области изменений. Известно, что все программы разрабатываются в расчете на обработку какого-то ограниченного набора данных. Поэтому важно получить ответ на следующие вопросы:
- что произойдет, если программе, не рассчитанной на обработку отрицательных и ну-левых значений переменных, в результате какой-либо ошибки придется иметь дело как раз с такими данными?
- как будет вести себя программа, работающая с массивами, если количество их элемен-тов превысит величину, указанную в объявлении массива?
- что произойдет, если числа будут слишком малыми или слишком большими?
Наихудшая ситуация складывается тогда, когда программа воспринимает неверные данные как правильные и выдает неверный, но правдоподобный результат.
Программа должна сама отвергать любые данные, которые она не в состоянии обрабатывать правильно.
Характерные ошибки при компьютерном решении задач
Ошибки могут быть допущены на всех этапах решения задачи — от ее постановки до оформления. Разновидности ошибок и соответствующие примеры приведены в таблице:
Разновидности ошибок
Является ли отсутствие синтаксических ошибок свидетельством правильности программы?
Обычно синтаксические ошибки выявляются на этапе трансляции. Многие же другие ошибки транслятору выявить невозможно, так как транслятору неизвестны замыслы программиста.
Отсутствие сообщений машины о синтаксических ошибках является необходимым,
но не достаточным условием, чтобы считать программу правильной.
Примеры синтаксических ошибок:
- пропуск знака пунктуации;
- несогласованность скобок;
- неправильное формирование оператора;
- неверное образование имен переменных;
- неверное написание служебных слов;
- отсутствие условий окончания цикла;
- отсутствие описания массива и т.п.
Какие ошибки не обнаруживаются транслятором?
Существует множество ошибок, которые транслятор выявить не в состоянии, если используемые в программе операторы сформированы верно. Приведем примеры таких ошибок.
Логические ошибки:
- неверное указание ветви алгоритма после проверки некоторого условия;
- неполный учет возможных условий;
- пропуск в программе одного или более блоков алгоритма.
Ошибки в циклах:
- неправильное указание начала цикла;
- неправильное указание условий окончания цикла;
- неправильное указание числа повторений цикла;
- бесконечный цикл.
Ошибки ввода-вывода; ошибки при работе с данными:
- неправильное задание тип данных;
- организация считывания меньшего или большего объёма даных, чем требуется;
- неправильное редактирование данных.
Ошибки в использовании переменных:
- использование переменных без указания их начальных значений;
- ошибочное указание одной переменной вместо другой.
Ошибки при работе с массивами:
- массивы предварительно не обнулены;
- массивы неправильно описаны;
- индексы следуют в неправильном порядке.
Ошибки в арифметических операциях:
- неверное указание типа переменной (например, целочисленного вместо вещественного);
- неверное определение порядка действий;
- деление на нуль;
- извлечение квадратного корня из отрицательного числа;
- потеря значащих разрядов числа.
Все эти ошибки обнаруживаются с помощью тестирования.
Сопровождение программ – завершающий этап решения задач с использованием компьютера. Сопровождение программ — это работы, связанные с обслуживанием про-грамм в процессе их эксплуатации
Многократное использование разработанной программы для решения различных задач заданного класса требует проведения следующих дополнительных работ:
- исправление обнаруженных ошибок;
- модификация программы для удовлетворения изменяющихся эксплуатационных тре-бований;
- доработка программы для решения конкретных задач;
- проведение дополнительных тестовых просчетов;
- внесение исправлений в рабочую документацию;
- усовершенствование программы и т.д.
Применительно ко многим программам работы по сопровождению поглощают более половины затрат, приходящихся на весь период времени существования программы (начиная от выработки первоначальной концепции и кончая моральным ее устареванием) в стоимостном выражении.
Программа, предназначенная для длительной эксплуатации, должна иметь соответствующую документацию и инструкцию по её использованию.
Опубликовал Kest March 28 2010 19:58:05 · 0 Комментариев · 18525 Прочтений · Для печати

• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •


Комментарии
Нет комментариев.
Добавить комментарий
Имя:



smiley smiley smiley smiley smiley smiley smiley smiley smiley
Запретить смайлики в комментариях

Введите проверочный код:* =
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Нет данных для оценки.
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Поделиться ссылкой
Фолловь меня в Твиттере! • Смотрите канал о путешествияхКак приготовить мидии в тайланде?
Загрузки
Новые загрузки
iChat v.7.0 Final...
iComm v.6.1 - выв...
Visual Studio 200...
CodeGear RAD Stud...
Шаблон для новост...

Случайные загрузки
Swat [Исходник на...
Панель случайной ...
Программа предназ...
Как программирова...
База для Allsubmi...
PHP/MySQL для нач...
Tag Игра "Пятнашк...
Разработка распре...
C++ Стандартная б...
Image Browser [Ис...
BDEPack
Книга по Delphi (...
Delphi. Разработк...
Моделирование дви...
PHP 5 для "чайников"
Основы программир...
Песочные часы
Halcyon
PRNDbgrid
Простой пример ка...

Топ загрузок
Приложение Клие... 100774
Delphi 7 Enterp... 97839
Converter AMR<-... 20268
GPSS World Stud... 17014
Borland C++Buil... 14193
Borland Delphi ... 10293
Turbo Pascal fo... 7374
Калькулятор [Ис... 5984
Visual Studio 2... 5207
Microsoft SQL S... 3661
Случайные статьи
Зона автоматическ...
Принцип суперпозиции
СС/РР и Web-ориент...
Удаление узлов в D...
ДОПУСТИМЫЕ СПОСОБЫ...
Введение в Object ...
Разрешение фотогра...
Программа Stufflt ...
Множественные инте...
Создание подсетей ...
Файловая система t...
Вкладка Configure ...
Как вставить в док...
Сложное масштабиро...
Построение мультис...
Ввод-вывод символь...
Расцепляйте модели...
Как использовать п...
Разберем детали. П...
Воспроизведение ау...
Стохастические про...
Эстетический аспект
ПОПОЛНЕНИЕ БАЗЫ ЗН...
только на внешний ...
Числовые системы в...
Статистика



Друзья сайта
Программы, игры


Полезно
В какую объединенную сеть входит классовая сеть? Суммирование маршрутов Занимают ли таблицы память маршрутизатора?