Автор работы: Пользователь скрыл имя, 31 Октября 2013 в 18:25, курс лекций
Лекция 1. Введение в информатику
1.1. Что такое инфоpматика?
Термин "информатика" (франц. informatique) происходит от французских слов information (информация) и automatique (автоматика) и дословно означает "информационная автоматика".
Широко распространён также англоязычный вариант этого термина — "Сomputer science", что означает буквально "компьютерная наука".
Инфоpматика — это основанная на использовании компьютерной техники дисциплина, изучающая структуру и общие свойства информации, а также закономерности и методы её создания, хранения, поиска, преобразования, передачи и применения в различных сферах человеческой деятельности.
Решение задач с помощью компьютера включает в себя следующие основные этапы, часть из которых осуществляется без участия компьютера.
Математическая модель — это система математических соотношений — формул, уравнений, неравенств и т.д., отражающих существенные свойства объекта или явления. |
Всякое явление природы бесконечно в своей сложности. Проиллюстрируем это с помощью примера, взятого из книги В.Н. Тростникова "Человек и информация" (Издательство "Наука", 1970).
... Обыватель формулирует
— Позвольте, — может сказать "заказчик", — меня не устраивает такое упрощение. Я хочу знать точно, сколько времени будет падать камень в реальных условиях, а не в несуществующей пустоте.
— Хорошо, — согласится математик. — Будем считать, что камень имеет сферическую форму и диаметр... Какого примерно он диаметра?
— Около пяти сантиметров. Но он вовсе не сферический, а продолговатый.
— Тогда будем считать, что он имеет форму эллипсоида с полуосями четыре, три и три сантиметра и что он падает так, что большая полуось все время остается вертикальной. Давление воздуха примем равным 760 мм ртутного столба, отсюда найдем плотность воздуха...
Если тот, кто поставил задачу на "человеческом" языке не будет дальше вмешиваться в ход мысли математика, то последний через некоторое время даст численный ответ. Но "потребитель" может возражать по-прежнему: камень на самом деле вовсе не эллипсоидальный, давление воздуха в том месте и в тот момент не было равно 760 мм ртутного столба и т.д. Что же ответит ему математик?
Он ответит, что точное решение реальной задачи вообще невозможно. Мало того, что форму камня, которая влияет на сопротивление воздуха, невозможно описать никаким математическим уравнением; его вращение в полете также неподвластно математике из-за своей сложности. Далее, воздух не является однородным, так как в результате действия случайных факторов в нем возникают флуктуации колебания плотности. Если пойти ещё глубже, нужно учесть, что по закону всемирного тяготения каждое тело действует на каждое другое тело. Отсюда следует, что даже маятник настенных часов изменяет своим движением траекторию камня.
Короче говоря, если мы всерьез захотим точно исследовать поведение какого-либо предмета, то нам предварительно придется узнать местонахождение и скорость всех остальных предметов Вселенной. А это, разумеется. невозможно.
Чтобы описать явление, необходимо выявить самые существенные его свойства, закономерности, внутренние связи, роль отдельных характеристик явления. Выделив наиболее важные факторы, можно пренебречь менее существенными. |
Наиболее эффективно математическую модель можно реализовать на компьютере в виде алгоритмической модели — так называемого "вычислительного эксперимента" (см. [1], параграф 26).
Конечно, результаты вычислительного эксперимента могут оказаться и не соответствующими действительности, если в модели не будут учтены какие-то важные стороны действительности.
Итак, создавая математическую модель для решения задачи, нужно:
При построении математических моделей далеко не всегда удается найти формулы, явно выражающие искомые величины через данные. В таких случаях используются математические методы, позволяющие дать ответы той или иной степени точности.
Существует не только математическое моделирование какого-либо явления, но и визуально-натурное моделирование, которое обеспечивается за счет отображения этих явлений средствами машинной графики, т.е. перед исследователем демонстрируется своеобразный "компьютерный мультфильм", снимаемый в реальном масштабе времени. Наглядность здесь очень высока.
Процесс разработки программы
можно выразить следующей формулой:
Наличие ошибок в только что разработанной программе это вполне нормальное закономерное явление. Практически невозможно составить реальную (достаточно сложную) программу без ошибок.
Нельзя делать вывод, что программа правильна, лишь на том основании, что она не отвергнута машиной и выдала результаты. |
Ведь все, что достигнуто в данном случае, это получение каких-то результатов, не обязательно правильных. В программе при этом может оставаться большое количество логических ошибок.
Текст программы можно проконтролировать за столом с помощью просмотра, проверки и прокрутки.
Отладка программы — это процесс поиска и устранения ошибок в программе, производимый по результатам её прогона на компьютере. |
Тестирование — это испытание, проверка правильности работы программы в целом, либо её составных частей. |
Отладка и тестирование (англ. 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 |
Все коэффициенты равны нулю. x — любое число |
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, c = 0 |
2 |
1 |
0 |
x1 = 0, x2 = -0.5 |