Как контролировать текст программы до выхода на компьютер
Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.
Лекция 8. Технология подготовки и решения задач с помощью компьютера
8.1. Какие этапы включает в себя решение задач с помощью компьютера
Решение задач с помощью компьютера включает в себя следующие основные этапы, часть из которых осуществляется без участия компьютера.
- Постановка задачи:
- сбоp инфоpмации о задаче;
- фоpмулиpовка условия задачи;
- опpеделение конечных целей pешения задачи;
- определение формы выдачи результатов;
- описание данных (их типов, диапазонов величин, структуры и т.п. ).
- Анализ и исследование задачи, модели:
- анализ существующих аналогов;
- анализ технических и программных средств;
- pазpаботка математической модели;
- разработка структур данных.
- Разработка алгоритма:
- выбор метода проектирования алгоритма;
- выбор формы записи алгоритма (блок-схемы, псевдокод и др.);
- выбоp тестов и метода тестиpования;
- проектирование алгоритма.
- Пpогpаммиpование:
- выбор языка программирования;
- уточнение способов организации данных;
- запись алгоpитма на выбpанном языке пpогpаммиpования.
- Тестиpование и отладка:
- синтаксическая отладка;
- отладка семантики и логической стpуктуpы;
- тестовые pасчеты и анализ pезультатов тестиpования;
- совершенствование пpогpаммы.
- Анализ результатов решения задачи и уточнение в случае необходимости математической модели с повторным выполнением этапов 2 - 5.
- Сопровождение программы:
- доработка программы для решения конкретных задач;
- составление документации к pешенной задаче, к математической модели, к алгоpитму, к пpогpамме, к набору тестов, к использованию.
8.2. Что называют математической моделью
Всякое явление природы бесконечно в своей сложности. Проиллюстрируем это с помощью примера, взятого из книги В.Н. Тростникова "Человек и информация" (Издательство "Наука", 1970).
. Обыватель формулирует математику задачу следующим образом: "Сколько времени будет падать камень с высоты 200 метров" Математик начнет создавать свой вариант задачи приблизительно так: "Будем считать, что камень падает в пустоте и что ускорение силы тяжести 9,8 метра в секунду за секунду. Тогда. "
Если тот, кто поставил задачу на "человеческом" языке не будет дальше вмешиваться в ход мысли математика, то последний через некоторое время даст численный ответ. Но "потребитель" может возражать по-прежнему: камень на самом деле вовсе не эллипсоидальный, давление воздуха в том месте и в тот момент не было равно 760 мм ртутного столба и т.д. Что же ответит ему математик
Он ответит, что точное решение реальной задачи вообще невозможно. Мало того, что форму камня, которая влияет на сопротивление воздуха, невозможно описать никаким математическим уравнением; его вращение в полете также неподвластно математике из-за своей сложности. Далее, воздух не является однородным, так как в результате действия случайных факторов в нем возникают флуктуации колебания плотности. Если пойти ещё глубже, нужно учесть, что по закону всемирного тяготения каждое тело действует на каждое другое тело. Отсюда следует, что даже маятник настенных часов изменяет своим движением траекторию камня.
Короче говоря, если мы всерьез захотим точно исследовать поведение какого-либо предмета, то нам предварительно придется узнать местонахождение и скорость всех остальных предметов Вселенной. А это, разумеется. невозможно.
Чтобы описать явление, необходимо выявить самые существенные его свойства, закономерности, внутренние связи, роль отдельных характеристик явления. Выделив наиболее важные факторы, можно пренебречь менее существенными.
Конечно, результаты вычислительного эксперимента могут оказаться и не соответствующими действительности, если в модели не будут учтены какие-то важные стороны действительности.
Итак, создавая математическую модель для решения задачи, нужно:
- выделить предположения, на которых будет основываться математическая модель;
- определить, что считать исходными данными и результатами;
- записать математические соотношения, связывающие результаты с исходными данными.
При построении математических моделей далеко не всегда удается найти формулы, явно выражающие искомые величины через данные. В таких случаях используются математические методы, позволяющие дать ответы той или иной степени точности.
Существует не только математическое моделирование какого-либо явления, но и визуально-натурное моделирование, которое обеспечивается за счет отображения этих явлений средствами машинной графики, т.е. перед исследователем демонстрируется своеобразный "компьютерный мультфильм", снимаемый в реальном масштабе времени. Наглядность здесь очень высока.
8.3. Какие основные этапы содержит процесс разработки программ
Процесс разработки программы можно выразить следующей формулой:
Наличие ошибок в только что разработанной программе это вполне нормальное закономерное явление. Практически невозможно составить реальную (достаточно сложную) программу без ошибок.
Нельзя делать вывод, что программа правильна, лишь на том основании, что она не отвергнута машиной и выдала результаты.
Ведь все, что достигнуто в данном случае, это получение каких-то результатов, не обязательно правильных. В программе при этом может оставаться большое количество логических ошибок.
8.4. Как проконтролировать текст программы до выхода на компьютер
Текст программы можно проконтролировать за столом с помощью просмотра, проверки и прокрутки.
8.5. Для чего нужны отладка и тестирование
- при отладке происходит локализация и устранение синтаксических ошибок и явных ошибок кодирования;
- в процессе же тестирования проверяется работоспособность программы, не содержащей явных ошибок.
Тестирование устанавливает факт наличия ошибок, а отладка выясняет ее причину.
8.6. В чем заключается отладка
В современных программных системах (Turbo Basic, Turbo Pascal, Turbo C и др.) отладка осуществляется часто с использованием специальных программных средств, называемых отладчиками. Эти средства позволяют исследовать внутреннее поведение программы.
Программа-отладчик обычно обеспечивает следующие возможности:
- пошаговое исполнение программы с остановкой после каждой команды (оператора);
- просмотр текущего значения любой переменной или нахождение значения любого выражения, в том числе, с использованием стандартных функций; при необходимости можно установить новое значение переменной;
- установку в программе "контрольных точек", т.е. точек, в которых программа временно прекращает свое выполнение, так что можно оценить промежуточные результаты, и др.
При отладке программ важно помнить следующее:
- в начале процесса отладки надо использовать простые тестовые данные;
- возникающие затруднения следует четко разделять и устранять строго поочередно;
- не нужно считать причиной ошибок машину, так как современные машины и трансляторы обладают чрезвычайно высокой надежностью.
8.7. Что такое тест и тестирование
Как бы ни была тщательно отлажена программа, решающим этапом, устанавливающим ее пригодность для работы, является контроль программы по результатам ее выполнения на системе тестов.
Программу условно можно считать правильной, если её запуск для выбранной системы тестовых исходных данных во всех случаях дает правильные результаты.
Но, как справедливо указывал известный теоретик программирования Э. Дейкстра, тестирование может показать лишь наличие ошибок, но не их отсутствие. Нередки случаи, когда новые входные данные вызывают "отказ" или получение неверных результатов работы программы, которая считалась полностью отлаженной.
Для реализации метода тестов должны быть изготовлены или заранее известны эталонные результаты.
Вычислять эталонные результаты нужно обязательно до, а не после получения машинных результатов.
В противном случае имеется опасность невольной подгонки вычисляемых значений под желаемые, полученные ранее на машине.
8.8. Какими должны быть тестовые данные
Тестовые данные должны обеспечить проверку всех возможных условий возникновения ошибок:
- должна быть испытана каждая ветвь алгоритма;
- очередной тестовый прогон должен контролировать нечто такое, что еще не было проверено на предыдущих прогонах;
- первый тест должен быть максимально прост, чтобы проверить, работает ли программа вообще;
- арифметические операции в тестах должны предельно упрощаться для уменьшения объема вычислений;
- количества элементов последовательностей, точность для итерационных вычислений, количество проходов цикла в тестовых примерах должны задаваться из соображений сокращения объема вычислений;
- минимизация вычислений не должна снижать надежности контроля;
- тестирование должно быть целенаправленным и систематизированным, так как случайный выбор исходных данных привел бы к трудностям в определении ручным способом ожидаемых результатов; кроме того, при случайном выборе тестовых данных могут оказаться непроверенными многие ситуации;
- усложнение тестовых данных должно происходить постепенно.
Пример. Система тестов для задачи нахождения корней квадратного уравнения ax2 + bx + c = 0 :
Процесс разработки программы может быть разбит на два основных этапа:
Разработка программы начинается с анализа и формулирования требований к программе, с разработки точного описания того, чего нужно достичь в результате работы программы и в каком виде будет представлен нужный результат.
Далее выбирается технология программирования, с использованием которой будет разрабатываться программы (например, структурное программирование).
Полученный вариант разработанной программы подвергается систематическому тестированию на наличие ошибок, что является вполне нормальным закономерным явлением для новых программ. Практически невозможно написать реальную (достаточно сложную) программу с первого раза без каких-либо ошибок.
После исправления таких ошибок программа подвергается дальнейшей проверке на правильность выдаваемых результатов. Ведь то, что программа в результате своей работы выдала какой-то результат, еще не означает, что этот результат – правильный. Для проверки правильности результатов программа подвергается проверке на наличие логических ошибок в решении задачи. Ответственные участки программы проверяются с использованием методов доказательства правильности программ.
Методы доказательства правильности программ
Неформальными методами доказательства правильности программ является отладка и тестирование – необходимые составляющие на всех этапах процесса программирования. Но эти методы не решают полностью проблему правильности программы. Существенные ошибки легко можно найти при использовании соответствующих приемов отладки (контрольных распечаток, трассировок).
Программу считают правильной, если она решает сформулированную задачу.
Готовые работы на аналогичную тему
Получить выполненную работу или консультацию специалиста по вашему учебному проекту Узнать стоимостьМетод установления правильности программ при помощи строгих средств называется верификацией программ.
При тестировании программ проводится анализ свойств отдельных процессов выполнения программы, а при верификации анализируются свойства программ.
Метод верификации основывается на предположении, что существует программная документация, соответствие которой требуется доказать. В документацию должны входить:
- спецификация ввода-вывода (описание данных, которые не зависят от процесса обработки);
- спецификация структур данных, которые зависят от процесса обработки;
- свойства отношений между элементами векторов состояний в выбранных точках программы;
- спецификации и свойства структурных подкомпонентов программы.
К методам доказательства правильности программ относится метод индуктивных утверждений, который сформулировал независимо друг от друга К. Флойд и П. Наур.
Суть метода индуктивных утверждений:
- формулировка входного (описание всех необходимых входных условий) и выходного (описание ожидаемого результата) утверждения;
- принимается истинность входного утверждения, создается промежуточное утверждение (выведенное утверждение), которое выводится на основании семантики операторов, расположенных между входом и выходом (входным и выходным утверждениями);
- формулировка теоремы (условие верификации):
- из выведенного утверждения следует выходное утверждение;
- доказательство теоремы, которое показывает правильность программы (или программного фрагмента).
Доказательство проводится с помощью математических методов, которые используют исчисление предикатов I-го порядка.
Условия верификации можно строить и в обратном направлении: принимая истинность выходного утверждения, получить входное утверждение и доказывать теорему: из входного утверждения следует выведенное утверждение.
С помощью индуктивных утверждений можно формализовать интуитивные представления о логике программы, что является самым сложным в процессе доказательства правильности программы.
Для доказательства завершения выполнения программы часто достаточными являются неформальные рассуждения. Алгоритм доказательства правильности программы методом индуктивных утверждений:
Этот метод можно сравнить с обычным чтением текста программы (методом сквозного контроля) с разницей лишь в степени формализации.
Преимуществом верификации является возможность формализации процесса доказательства, что позволяет выполнять его на вычислительной машине.
Общим свойством перечисленных методов является то, что они рассматривают программу как уже существующий объект и затем доказывают ее правильность.
Метод, сформулированный К. Хоаром и Э. Дейкстра, основывается на формальном выводе программ из математической постановки задачи.
Каждая программа обязательно подвергается анализу обеспечения качества и эффективности программного обеспечения, проводится анализ и улучшение временных характеристик.
Текст программы можно проконтролировать за столом с помощью просмотра, проверки и прокрутки.
Просмотр.Текст программы просматривается на предметобнаружения описок и расхождений с алгоритмом. Нужно просмотретьорганизацию всех циклов, чтобы убедиться в правильности операторов, задающих кратности циклов. Полезно посмотреть еще разусловия в условных операторах,аргументы в обращениях к подпрограммам и т.п.
Проверка.При проверке программы программист по тексту программы мысленно старается восстановить тот вычислительный процесс, который определяет программа, после чего сверяет его с требуемым процессом. На время проверки нужно"забыть", что должна делать программа , и"узнавать"об этом по ходу её проверки. Только после окончания проверки программы можно"вспомнить"о том, что она должна делать исравнитьреальные действия программы с требуемыми.
Прокрутка.Основой прокрутки являетсяимитация программистом за столом выполнения программы на машине.Для выполнения прокрутки приходится задаваться какими-то исходными данными и производить над ними необходимые вычисления.Прокрутка — трудоемкий процесс, поэтому ее следует применять лишь для контроля логически сложных участков программ.Исходные данные должны выбираться такими, чтобы в прокрутку вовлекалось большинство ветвей программы.
4.5. Для чего нужны отладка и тестирование?
Отладкапрограммы — это процесс поиска и устранения ошибок в программе, производимый по результатам её прогона на компьютере.
Тестирование— это испытание, проверка правильности работы программы в целом, либо её составных частей.
Отладка и тестирование(англ. test — испытание) —это два четко различимых и непохожих друг на друга этапа:
при отладкепроисходитлокализация и устранение синтаксических ошибок и явных ошибок кодирования;
в процессе же тестирования проверяется работоспособность программы, не содержащей явных ошибок.
Тестирование устанавливает факт наличия ошибок, а отладка выясняет ее причину.
Английский термин debugging("отладка") буквально означает "вылавливание жучков". Термин появился в 1945 г., когда один из первых компьютеров — "Марк-1" прекратил работу из-за того, что в его электрические цепи попал мотылек и заблокировал своими останками одно из тысяч реле машины.
4.6. В чем заключается отладка?
В современных программных системах (Turbo Basic, Turbo Pascal, Turbo C и др.) отладка осуществляется часто с использованием специальных программных средств, называемых отладчиками. Эти средства позволяют исследовать внутреннее поведение программы.
Программа-отладчик обычно обеспечивает следующие возможности:
пошаговое исполнение программыс остановкой после каждой команды (оператора);
просмотр текущего значения любой переменной или нахождение значения любого выражения, в том числе, с использованием стандартных функций; при необходимости можно установить новое значение переменной;
установку в программе "контрольных точек", т.е. точек, в которых программа временно прекращает свое выполнение, так что можно оценить промежуточные результаты, и др.
При отладке программ важно помнить следующее:
в начале процесса отладки надо использовать простые тестовые данные;
возникающие затруднения следует четко разделять и устранять строго поочередно;
не нужно считать причиной ошибок машину, так как современные машины и трансляторы обладают чрезвычайно высокой надежностью.
Тут вы можете оставить комментарий к выбранному абзацу или сообщить об ошибке.
Цели: 1. Познакомить с основными правилами записи программы и с этапами разработки программы. Учить записывать программу на основе алгоритма.
2. Развивать внимание, логическое мышления, память.
3. Расширить общеобразовательный кругозор учащихся.
Проверка домашнего задания
Набирают 1 программу в Бейсике и сравнивают результат и домашним результатом
1. Напишите результат выполнения данной программы.
IF A>B Then Max=A Else Max = B
2.какая строка программы соответствует условию: если А> B или B = C , то В=1.
1)IF A>B=C THEN B=1
2)IF A>C=C THEN B=1
3)IF A>B OR B=C THEN B=1
Изучение нового материала (краткий план)
Этапы разработки программы: алгоритмизация - кодирование - отладка - тестирование.
Процесс разработки программы можно выразить следующей формулой:
Наличие ошибок в только что разработанной программе это вполне нормальное закономерное явление. Практически невозможно составить реальную (достаточно сложную) программу без ошибок.
Ведь все, что достигнуто в данном случае, это получение каких-то результатов, не обязательно правильных. В программе при этом может оставаться большое количество логических ошибок.
8.4. Как проконтролировать текст программы до выхода на компьютер?
Текст программы можно проконтролировать за столом с помощью просмотра, проверки и прокрутки.
Просмотр. Текст программы просматривается на предмет обнаружения описок и расхождений с алгоритмом . Нужно просмотреть организацию всех циклов , чтобы убедиться в правильности операторов, задающих кратности циклов. Полезно посмотреть еще раз условия в условных операторах,аргументы в обращениях к подпрограммам и т.п.
Проверка. При проверке программы программист по тексту программы мысленно старается восстановить тот вычислительный процесс, который определяет программа, после чего сверяет его с требуемым процессом. На время проверки нужно "забыть" , что должна делать программа , и "узнавать" об этом по ходу её проверки. Только после окончания проверки программы можно "вспомнить" о том, что она должна делать и сравнить реальные действия программы с требуемыми.
Прокрутка. Основой прокрутки является имитация программистом за столом выполнения программы на машине. Для выполнения прокрутки приходится задаваться какими-то исходными данными и производить над ними необходимые вычисления. Прокрутка — трудоемкий процесс , поэтому ее следует применять лишь для контроля логически сложных участков программ. Исходные данные должны выбираться такими, чтобы в прокрутку вовлекалось большинство ветвей программы.
1. Составление программ по разветвляющимся алгоритмам
Составьте блок-схему и напишите программу, определяющую, к какой возрастной группе относится пользователь: малыш (до 7 лет), школьник (от 7 до 17) или взрослый (старше 17 лет)
If A<7 Then Print « малыш »
If A>17 Then Print « взрослый »
If A>7 AND A<17 Then Print « школьник »
2 задание. Составьте алгоритм и программу, которая будет печатать 20 раз слово «привет»
For N=1 to 20 step 1
3 задание составьте алгоритм и программу для вычисления суммы первых 10 чисел 1, 2, 3,…, 10
For A=1 To 10 Step 1
4 задание. Составьте алгоритм и программа для вычисления суммы 10 произвольных чисел, задаваемых с клавиатуры.
5. Домашнее задание
Составьте алгоритм и программу для вычисления произведения 10 произвольных чисел, задаваемых с клавиатуры.
Читайте также: