МИНИСТЕРСТВО ОБРАЗОВАНИЯ УКРАИНЫ
ВОСТОЧНОУКРАИНСКИЙ НАЦИОНАЛЬНЫЙ УНИВЕРСИТЕТ им. В. Даля
СЕВЕРОДОНЕЦКИЙ ТЕХНОЛОГИЧЕСКИЙ ИНСТИТУТ
КАФЕДРА КОМПЬЮТЕРНОЙ ИНЖЕНЕРИИ
к курсовой работе по программированию
на тему:
«Обработка текстовых файлов»
Выполнил студент группы
Проверил преподаватель
Северодонецк 2009
форма № У 9.01
Утв. приказом Минвуза УССР
от 3 августа 1984 г. № 253
Северодонецкий технологический институт
(наименование вуза)
Кафедра Компьютерной инженерии
Дисциплина Программирование
Специальность
Курс 2 Группа Семестр 3
ЗАДАНИЕ
на курсовой проект (работу) студента
Садыкова Ильмира Ильдусовича
(фамилия, имя, отчество)
1. Тема проекта (работы)
2. Обработка текстовых файлов
2. Срок сдачи студентом законченного проекта (работы)
3. Исходные данные к проекту (работе) Дан текстовый файл. В строках слова расположить по возрастанию их длины (считать, что слова разделены пробелами). Выделить звездочкой в первой и последней позициях строки с наибольшим количеством слов и строки, содержащие самое длинное слово.
Для ввода и вывода использовать компоненты Delphi.
4.Содержание расчетно-пояснительной записки (перечень подлежащих разработке вопросов) В курсовом проекте выполнена постановка задачи проектирования, разработаны алгоритмы согласно заданию, выполнено описание структуры программы, назначение ее процедур и функций, приведена инструкция оператору и примеры тестовых запусков.
5. Перечень графического материала (с точным указанием обязательных чертежей)
6. Дата выдачи задания
КАЛЕНДАРНЫЙ ПЛАН
№ п/п | Наименование этапов курсового проекта (работы) | Срок выполнения этапов проекта (работы) | Примечание |
1 | Получение задания | ||
2 | Разработка алгоритма | ||
3 | Составление блок-схемы алгоритма | ||
4 | Составление программы | ||
5 | Подготовка исходных данных | ||
6 | Отладка программы | ||
7 | Получение результатов | ||
9 | Оформление пояснительной записки | ||
10 | Защита курсовой работы |
Студент
(подпись)
(фамилия, имя, отчество)
Руководитель
(подпись) (фамилия, имя, отчество)
РЕФЕРАТ
ВВЕДЕНИЕ
1. АНАЛИЗ ТЕХНИЧЕСКОГО ЗАДАНИЯ И ПОСТАНОВКА ЗАДАЧИ ПРОЕКТИРОВАНИЯ
2. РАЗРАБОТКА АЛГОРИТМА ПРОГРАММЫ
3 ОПИСАНИЕ СТРУКТУРЫ ПРОГРАММЫ
3.1 Описание переменных
3.2 Описание вспомогательных процедур и функций
3.3 Алгоритм основной программы
4. ИНСТРУКЦИЯ ОПЕРАТОРУ
ВЫВОДЫ
ПЕРЕЧЕНЬ ССЫЛОК
ПРИЛОЖЕНИЕ А. БЛОК-СХЕМА АЛГОРИТМА
ПРИЛОЖЕНИЕ Б. ЛИСТИНГ ПРОГРАММЫ
ПРИЛОЖЕНИЕ В. ПРИМЕР ВЫПОЛНЕНИЯ ПРОГРАММЫ
РЕФЕРАТ
Пояснительная записка к курсовой работе содержит:
страниц - 24;
рисунков - 6;
таблиц – 1 ;
приложений – 3.
Цель работы: разработать программу обработки числовых последовательностей с кодом на языке Pascal.
В курсовой работе создана программа, которая реализует выполнение следующих функций: ввод пользователем с клавиатуры последовательности целых чисел, поиск во введенной последовательности нескольких таких чисел, чтобы их сумма делилось на некоторое задаваемое пользователем число. Вывод результата осуществляется на экран монитора и дублируется в текстовый файл на жестком диске или внешнем накопителе. В первом разделе курсовой работы выполнен анализ технического задания, выделены функции, которыми должно обладать разрабатываемое приложение, а также сформулированы требования к нему, произведена постановка задачи на проектирование. Во втором разделе выполняется анализ задачи проектирования, анализируется вид исходных данных и приводится словесный алгоритм работы программы. В третьем разделе рассматриваются алгоритмы разработанных процедур и функций, а также приводятся их описания. К реализованной программе разработана инструкция пользователя, которая приведена в четвертом разделе. Алгоритмы процедур приведены в приложении А. Листинг программы содержится в приложении Б.
Программа разработана с использованием языкаTurboPascal.
МАССИВ, ЦИКЛ, ОСТАТОК ОТ ДЕЛЕНИЯ, АЛГОРИТМ, ПРОЦЕДУРА, СОЧЕТАНИЯ
Данный курсовой проект был разработан в среде TurboPascal 7.0 с базовым языком программирования Pascal. Среди множества языков Pascal является наиболее универсальным и легко изучаемым языком. На сегодня TurboPascal получил продолжение в языке ObjectPascal с поддержкой всех современных возможностей объектно-ориентированного программирования и в такой мощной системе проектирования как Delphi.
Для выполнения данной курсовой работы необходимо разработать алгоритм решения поставленного задания, правильно указав последовательное выполнение соответствующих команд для получения необходимых результатов.
Цель работы заключается в том, чтобы правильно составить алгоритм поставленной задачи по обработке числовой информации, разработать и отладить программу, реализующую разработанный алгоритм.
Согласно заданию дана последовательность из nцелых чисел. Необходимо написать программу, выбора из них нескольких чисел так, чтобы сумма выбранных чисел делилась на некоторое число k.
Как видим, задание сводится к обработке числовой информации. Пользователю должна быть предоставлена возможность ввода обрабатываемых чисел. Кроме того, перед началом ввода пользователь должен задать количество чисел в последовательности.
В качестве дополнительной функции можно предусмотреть вывод информации о программе (ее выполняемых функциях) не экран.
Также пользователь должен ввести некоторое целое число k. Далее следует выбрать из предложенной последовательности несколько чисел так, чтобы сумма выбраных чисел делиласьна заданное число k. Пользователю должно быть выдано сообщение, если такая комбинация чисел найдена. Если требуемой комбинации элементов не найдено, то следует выдать соответствующее сообщение, что искомых элементов во введенной последовательности не обнаружено. Также для удобства пользователя можно выводить информацию обо всех возможных сочетаниях элементов и сумму этих элементов.
Поскольку чисел может быть довольно много и вся информация может не поместиться на экран, следует предусмотреть возможность дублирования всей выводимой на экран информации в текстовый файл на жестком диске.
Подытожив все вышесказанное можно сформулировать требования к разрабатываемому программному обеспечению и выполнить постановку задания на проектирование. Так, согласно заданию, программа должна быть реализована в среде TurboPascalи должна выполнять следующие функции:
- вывод на экран информации о задании и цели программы;
- ввод пользователем количества чисел последовательности с клавиатуры;
- ввод пользователем последовательности целых чисел;
- перебор всех возможных сочетаний элементов из предложенной последовательности;
- определение сумм элементов в сочетаниях и вывод на экран последовательностей и полученных сумм;
- определение, удовлетворяет ли сумма условию: делится на kбез остатка;
- вывод информации на экран, если найдено искомое сочетание элементов;
- вывод информации на экран, если ни одно из сочетаний не удовлетворяет условию задачи;
- возможность сохранения результатов работы в текстовом файле на жестком диске.
Последующие разделы будут посвящены решению поставленных задач и разработке приложения с вышеперечисленными функциями.
2. Разработка алгоритма программы
В предыдущем разделе были сформулированы требования к разрабатываемой программе и к ее функциям. Анализируя требования к программе, можно разработать алгоритм разрабатываемого приложения.
Так, поскольку задание состоит в обработке числовой последовательности, целесообразно хранить числа в массиве. Таким образом, на этапе ввода данных пользователь должен будет задать длину вводимой последовательности и задать сами числа.
Согласно заданию необходимо будет выполнить перебор всех возможных сочетаний элементов. Поскольку число элементов в сочетании условием не задано, то должны будут перебраны все сочетания С1n, С2n, Сin, Сnn, для каждого из которых должны будут вычислены суммы. Известно, что
Количество возможных сочетаний с каждым новым числом растет с довольно высокой скоростью. Поскольку задача учебная, то ограничим искусственно длину последовательности, к примеру, 20 числами. Таким образом, на этапе ввода следует контролировать введенное число n, и в случае когда N больше 20, то целесообразно уведомить пользователя об ограничениях, накладываемых на длину последовательности и запросить повторный ввод числа. Поскольку ошибка может быть неоднократной (умышленный или ошибочный ввод подряд нескольких некорректных значений), то целесообразно будет для ввода каждого числа организовать цикл, условием завершения которого будет корректно введенное значение. Для заполнения элементов массива можно использовать цикл с заданным числом повторений.
После ввода исходных данных необходимо осуществить поиск такого сочетания элементов, сумма которых делится на k без остатка. Для реализации этого поиска можно осуществить перебор всех возможных сочетаний и вычислять для каждого из них сумму элементов. Сочетания следует перебирать сначала по одному элементу, потом по два элемента, затем по три, и так далее, пока не будет найдено искомое сочетание или же пока не достигнем последнего сочетания, в которое входят все N элементов последовательности.