Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Устройства ввода-вывода




 

Turbo-Basic имеет так называемые машинные файлы,т.е. он может общаться с клавиатурой, монитором, принтером как с последовательными файлами. Каждое из устройств имеет свое зарезервированное имя файла:

___________________________________________________________________________________

 

Имя Функция

___________________________________________________________________________________

 

KYBD: Клавиатура может открываться для ввода. Считывание происходит подобно использованию INKEY$

SCRN: Экран может открываться для вывода

LPT1-3: Принтеры от 1 до 3 - открываются для вывода

COM1-2 Порты связи 1 и 2

___________________________________________________________________________________

 

Например:

 

OPEN "SCRN:" FOR OUTPUT AS #1:PRINT #1,"Hello"

или

OPEN "KYBD:" FOR INPUT AS #1:INPUT #1,a$,b$

 

Теперь, когда мы обсудили типы файлов рассмотрим принципы работы с ними.

Т.к. Turbo-Basic при работе опирается на DOS, то имена файлов формируются по стандарту DOS: имя файла состоит из двух частей:

 

filename.ext

 

где filename представляет собой имя файла и содержит от 1 до 8 знаков, а ext является необязательным расширением типа файла и состоит из 3 знаков. Если имя файла длиннее 8 знаков, то Turbo-Basic автоматически усекает имя до 8 знаков, а остаток отсылает в расширение. Если в предыдущем случае имя уже имеет расширение файла, то лишние символы из имени просто отбрасываются и нигде не фигурируют. Если лишние знаки присутствуют в расширении, то оно тоже усекается до 3 знаков.

В дополнение к операторам создания, записи и считывания файлов Turbo-Basic имеет ряд операторов, выполняющих функции, аналогичные некоторым командам DOS:

оператор NAME переименовывает файлы,

KILL - стирает файлы,

MKDIR - создает каталог,

CHDIR - изменяет активный каталог,

RMDIR - стирает каталог.

Если нет команды COPY (копировать), то вместо этого используйте технику бинарного файла (или используйте SHELL для вызова COMMAND.COM).

Имена файлов, используемые в операторах Turbo-Basic, должны быть представлены в форме цепочки:

 

KILL "myfile.bak"

или

a$="myfile.bak":KILL a$

 

Глава 3. Основные этапы полного построения алгоритма

 

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

1. Технические требования для решения задачи или постановка задачи.

2. Построение модели.

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

4. Проверка правильности алгоритма.

5. Реализация алгоритма.

6. Анализ алгоритма и его сложности.

7. Проверка программы.

8. Составление документации.

Теперь мы кратко эти рассмотрим эти основные этапы. Прежде всего определим назначение каждого этапа и выясним, как эти этапы объединяются в единое целое.

 

Технические требования для решения задачи или постановка задачи

Прежде чем мы сможем понять задачу, мы должны ее точно сфор­мулировать. Это условие само по себе не является достаточным для понимания задачи, но оно абсолютно необходимо.

Обычно процесс точной формулировки задачи сводится к поста­новке правильных вопросов. Перечислим некоторые полезные воп­росы для плохо сформулированных задач:

Понятна ли терминология, используемая в предварительной фор­мулировке? Что дано?

Что нужно найти? Как определить решение?

Каких данных не хватает и все ли они нужны? Являются ли какие-то имеющиеся данные бесполезными? Какие сделаны допущения?

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

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

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

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

1. Прежде чем приступать к решению задачи необходимо убедиться в правильности ее понимания.

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

3. Если задача ставится не Вами, то необходимо внимательно ознакомиться с ТЗ на нее и убедиться, что Вам понятна каждая ее часть. И, если что-то непонятно, потребовать разъяснений, при этом не надо бояться «потерять лицо» или показаться глупым, нельзя надеяться на то, что все прояснится позже. Если в работе заняты несколько человек то необходимо, не только иметь правильное представление о задаче, но и правильно распределить работу между ними.

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

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

Для еще лучшего понимания как правильно сформулировать ТЗ рассмотрим пример о так называемой транспортной задачи.

Пример. Виктор — агент по продаже компьютеров (коммивояжер); на его территории 20 городов, разбросанных по всей Воронежской области. Компа­ния возмещает ему только 50% стоимости деловых автомобильных поездок. Виктор вычислил, сколько ему будет стоить переезд на машине между каждыми двумя городами на его территории. Ему, естественно, хотелось бы снизить свои дорожные расходы.

Что дано? Исходная информация задана в виде перечня городов на территории Виктора и соответствующей матрицы стоимостей, т. е. двумерного массива с элементами Cij, равными стоимости переезда из города i в город j. В данном случае матрица стоимостей имеет 20 строк и 20 столбцов.

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

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

Это хорошая исходная постановка задачи. Мы знаем, что мы имеем и что хотим найти.

 


Рис.3.1. Постановка и решение задачи при неправильном формулировании

 




Поделиться с друзьями:


Дата добавления: 2014-12-16; Просмотров: 503; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.