Уважаемые студенты, после выбора темы курсовой работы, Вам необходимо позвонить в учебную часть для ее утверждения
т. 27-55-03
Современная
Гуманитарная
Академия
Дистанционное образование
1003.00.01;1
Методические рекомендации
по выполнению курсовой работы по дисциплине “Программирование на языке высокого уровня”
МОСКВА 2007
Разработано: И.В. Глазыриной, канд. пед. наук, доц.; Т.А. Лабзиной, доц.
Под ред. А.П. Пятибратова, д-ра техн. наук, проф., засл. деятеля науки и техники РСФСР
Рекомендовано Учебно-методическим
советом в качестве учебного пособия
для студентов СГА
Методические рекомендации
по выполнению курсовой работы по дисциплине “Программирование на языке высокого уровня”
В предлагаемом пособии изложены основные требования и рекомендации по выполнению курсовой работы. Приводится перечень тем курсовых работ и список литературы.
Для студентов Современной Гуманитарной Академии
© СОВРЕМЕННАЯ ГУМАНИТАРНАЯ АКАДЕМИЯ, 2007
Оглавление
Стр.
1 общие положения.. 4
2 Выполнение курсовой работы... 4
3 Содержание разделов курсовой работы... 5
3.1 Оглавление. 5
3.2 Введение. 5
3.3 Разработка эскизного и технического проектов программы.. 5
3.3.1 Задание. 6
3.3.2 Назначение и область применения. 6
3.3.3 Технические характеристики. 6
3.3.3.1 Постановка задачи. 6
3.3.3.2 Описание алгоритма. 9
3.3.3.3 Организация входных и выходных данных. 11
3.3.3.4 Выбор состава технических и программных средств. 12
3.3.3.5 Источники, использованные при разработке. 12
3.4 Разработка рабочего проекта. 12
3.4.1 Разработка программы.. 13
3.4.2 Спецификация программы.. 19
3.4.3 Текст программы.. 20
3.4.4 Описание программы.. 25
3.4.5 Тестирование программы.. 26
3.5 Внедрение. 26
3.6 Список использованных источников. 27
4 Оформление пояснительной записки.. 29
5 Тематика курсовых работ. 29
5.1 Массивы.. 29
5.2 Строковые данные и текстовые файлы.. 30
5.3 Записи. Базы данных. 32
5.4 Динамические структуры.. 33
5.5 Игры.. 35
6 Литература.. 36
Приложение а Форма спецификации. 36
1 общие положения
Курсовая работа предусмотрена тематическим планом изучения дисциплины “Программирование на языке высокого уровня”. Курсовая работа является самостоятельной работой студента, позволяет оценить качество знаний и отражает приобретенные студентом практические навыки.
Курсовая работа позволяет расширить объем знаний студентов в области программирования и создать реальную основу использования своих знаний для решения на ЭВМ задач по другим дисциплинам и в своей дальнейшей практической деятельности.
Тема назначается руководителем курсовой работы и утверждается на заседании учебно-методической комиссии.
Перед студентом ставится задача разработать приложение для Windows с целью решения конкретной задачи. Результатом решения является:
а) пояснительная записка, составленная с учетом требования стандартов ЕСПД;
б) исполняемый файл программы, прилагаемый к пояснительной записке на диске/дискете.
Для решения поставленной задачи студенту необходимо предварительно ознакомиться с литературой, посвященной теме задания. При этом следует обратить внимание на средства, используемые для решения аналогичных задач или для решения каких-либо ключевых моментов задачи. Этап работы с литературой должен закончиться обзором, в котором собраны полученные сведения из литературы, дан их анализ с точки зрения приложения к поставленной задаче.
Сформулированные в настоящих указаниях задания на курсовую работу представляют студенту простор для творчества. В текстах задач умышленно опущены некоторые детали и необходимые требования. После ознакомления с литературой студент должен оценить возможности языка программирования и вычислительной техники, на которой предлагается реализовать решение. Результатом этой работы должна быть точная формулировка задачи со всеми ограничениями и требованиями.
При решении задачи необходимо придерживаться техники пошаговой детализации, использовать стандартные структуры, не забывая при этом о развитии программного окружения программиста, расширяя возможности языка за счет включения новых процедур и функций.
При разработке алгоритма необходимо предусмотреть средства проверки и тестирования программы, удобство работы пользователя, возможные модификации.
При написании программы не следует забывать о хорошем стиле программирования, о таких понятиях, как читабельность, эффективность, надежность. Необходимо искать наиболее простые и естественные приемы и методы решения.
В программе, кроме решения непосредственно задачи, студент должен предусмотреть вывод справки о программе и информации о разработчике с указанием ФИО, группы и даты разработки.
На диске вместе с программой должны быть представлены файлы, подготовленные для проверки ее работоспособности.
2 Выполнение курсовой работы
Выполнение курсовой работы состоит из трех этапов.
1. Подготовительный этап (разработка эскизного и технического проектов).
2. Практическая работа за компьютером (разработка рабочего проекта).
3. Оформление пояснительной записки.
3 Содержание разделов курсовой работы
Все этапы разработки программы отражаются в пояснительной записке.
Пояснительная записка состоит из следующих разделов:
Введение
1 Разработка эскизного и технического проектов программы (ГОСТ 19.404–79)
1.1 Задание
1.2 Назначение и область применения
1.3 Технические характеристики
1.4 Источники, использованные при разработке
2 Разработка рабочего проекта
2.1 Разработка программы
2.2 Спецификация программы
2.3 Текст программы
2.4 Описание программы
2.5 Тестирование программы
3 Внедрение
Заключение
Глоссарий*
Список используемой литературы.
При написании пояснительной записки необходимо придерживаться требований единой системы программной документации (ЕСПД) и методических указаний по выполнению письменной курсовой работы, принятых в СГА.
3.1 Оглавление
Оглавление составляется в соответствии с содержанием пояснительной записки и должно отражать все разделы курсовой работы. После написания пояснительной записки в оглавлении проставляются страницы.
3.2 Введение
Во введении кратко характеризуется проблема, решению которой посвящена курсовая работа, определяются цель и задачи, которые надо решить для раскрытия темы, описываются средства, посредством которых реализуется разрабатываемая программа, например, среда разработки приложений Delphi.
3.3 Разработка эскизного и технического проектов программы
Стандарт ГОСТ 19.404–79 устанавливает требования к содержанию и оформлению программного документа “Пояснительная записка”, входящего в состав документов на стадиях разработки эскизного и технического проектов программы.
3.3.1 Задание
В разделе “Задание” указывается тема курсовой работы и приводится условие решаемой задачи.
Пример
Тема: Разработка приложения для Windows, представляющего собой компьютерную игру “Лабиринт”.
Условие задачи:
Игра “Лабиринт” состоит в том, что играющий перемещается в двухмерном пространстве по помещениям здания, план которого играющему неизвестен. Начиная с произвольного помещения, путешественник должен найти выход из здания. Каждое помещение может иметь четыре двери: север, восток, юг, запад. План здания необходимо считать из текстового файла в связанный список. Порядок следования помещений в списке должен быть произвольным. Находясь в N–ом помещении, игрок может получить подсказку о правильном направлении движения, если верно выполнит тестовое задание по теме “Программирование на языке высокого уровня”.
3.3.2 Назначение и область применения
В разделе “Назначение и область применения” указывают назначение программы и краткую характеристику области применения программы.
В приведенном примере, например, необходимо разработать развлекательную программу, представляющую собой игру. Область применения: досуг пользователя. Поскольку ставится задача разработать приложение для Windows, то использоваться программа может только под управлением ОС Windows.
3.3.3 Технические характеристики
Раздел “Технические характеристики” должен содержать следующие подразделы:
1 Постановка задачи
2 Описание алгоритма
3 Организация входных и выходных данных
4 Выбор состава технических и программных средств.
3.3.3.1 Постановка задачи
Решение задачи начинается с ее постановки. Постановка задачи - точная формулировка решения задачи на компьютере с описанием входной и выходной информации. Входная информация по задаче – это данные, поступающие на вход задачи и используемые для ее решения. Выходная информация может быть представлена в виде документов, кадров на экране монитора, информации в базе данных, выходного сигнала устройству управления.
В данном разделе дается точное описание исходных данных, условий задачи и целей ее решения. На этом этапе условия задачи, записанные в форме различных словесных описаний, необходимо выразить на формальном языке математики. Обычно математическая модель – это набор уравнений, неравенств и ограничений, приближенно описывающих задачу. При построении математической модели отбрасываются некоторые свойства реальной задачи, мало влияющие на решение.
В этом разделе могут быть описаны основные приемы программирования и типы данных, используемые при решении аналогичных задач. Например, если в задаче используются динамические структуры, то перечисляются виды динамических структур данных и основные процедуры по работе с динамическими структурами. Если задача заключается в формировании базы данных и дальнейшей работе с базой, то приводится описание используемых типов данных (характеристика данных записного типа) и приемы работы с файлами.
Далее описываются возможные пути решения задачи с указанием их достоинств и недостатков. Выбирается и обосновывается метод решения задачи. Описываются ограничения, накладываемые на исходные данные, необходимая разрядность и точность представления исходных данных и результатов решения. Указываются возможные пределы изменения входных параметров задачи.
Пример
Разработать программу, моделирующую игру «Лабиринт», с использованием динамической структуры «связанный список». Играющий должен найти выход из двумерного лабиринта. Лабиринт состоит из смежных комнат. Каждая комната может иметь четыре двери, направленные на север, юг, запад и восток. Одна из комнат содержит выход из лабиринта. Играющий, попав в очередную комнату, может попросить подсказку о направлении движения в сторону выхода из лабиринта. Подсказка представляет собой вопрос теста и четыре варианта ответа по дисциплине «Программирование на языке высокого уровня». Правильный ответ соответствует двери, ведущей к выходу. Представляемые играющему вопросы и варианты ответа должны считываться из файла, хранящегося на диске.
После описания общих положений тематики работы, необходимо указать конкретные методы решения поставленной задачи. Математическая формулировка в данном случае заменяется словесным описанием.
Предположим, что помещения здания соединяются между собой так, как показано на рисунке 1.
Рисунок 1. Пример плана помещений
Информация о плане здания должна храниться в файле в последовательности: номер комнаты; номера комнат, смежных с данной. Смежные комнаты перечислены в порядке: север, восток, юг, запад (рисунок 2). Порядок следования помещений в этом списке может быть любым, как и последовательность номеров помещений на плане.
Рисунок 2. Информация о плане здания, представленном на рисунке 3
Для последующей обработки файл с данными считывается и помещается в список, исходя из номера помещения (рисунок 3). Spi – указатель на начало списка.
Рисунок 3. Начало списка помещений после первого прочтения,
представленного на рисунке 2 файла
Затем файл считывается еще раз и с учетом наличия дверей генерируется связь помещений (рисунок 4).
Рисунок 4. Начало списка помещений после второго прочтения,
представленного на рисунке 4 файла
Звездочкой помечены ссылки, равные Nil.
Перемещение игрока в лабиринте осуществляется путем выбора им одного из вариантов направления движения. Игрок вводит номер комнаты, с которой начинается путешествие. Если такого помещения в лабиринте нет, то об этом выдается сообщение. Если такая комната существует, то играющему предлагается выбрать направление движения, которое можно определить, воспользовавшись подсказкой. Помощь заключается в том, что на экран высвечивается вопрос по теме курса “Программирование на языке высокого уровня” и 4 варианта ответа. Правильный ответ указывает направление дальнейшего движения. Неправильный ответ дает неверное направление или вызывает сообщение о невозможности передвижения. Вывод подсказки на экран и выбор правильного ответа осуществляются с помощью специальной процедуры, которая обращается к файлу на диске.
Признаком окончания игры является ссылка на помещение с номером 999.
В программе необходимо предусмотреть возможность создания и корректирования файлов плана помещения и подсказки.
3.3.3.2 Описание алгоритма
В разделе дается обобщенное словесное описание алгоритма решения поставленной задачи, излагаются основные требования к алгоритму и пути их реализации. Приводится схема алгоритма, состоящая из укрупненных модулей. Дается пояснение назначения и состава каждого модуля. Обобщенный алгоритм обычно использует обозначения и термины исходной задачи.
На следующем этапе каждый модуль детализируется. Выделяются укрупненные команды, реализуемые по вспомогательным алгоритмам. Тот же подход применяется при разработке вспомогательных алгоритмов.
Пример
В программе решаются три независимые друг от друга подзадачи.
1. Перемещение по лабиринту.
2. Запись на диск плана помещений здания.
3. Запись на диск файла подсказки.
Задача “Перемещение по лабиринту” решается в два этапа: 1) формирование списка помещений; 2) выбор направления движения и переход из одного помещения в другое.
Обобщенная схема алгоритма приведена на рисунке 5.
Рисунок 5. Обобщенная схема алгоритма
При формировании списка плана помещений сначала производится считывание номеров комнат из текстового файла и построение связанного списка, затем построение многосвязанного списка, содержащего в себе план помещений здания (рисунок 6).
Рисунок 6. Формирование списка плана помещений
Перемещение по лабиринту начинается с выбора номера помещения для начала путешествия. Если такого помещения нет, то игра заканчивается. Если такое помещение в лабиринте есть, то игроку предоставляется возможность выбрать направление движения или воспользоваться файлом подсказки. Укрупненная схема алгоритма приведена на рисунке 7.
Рисунок 7. Схема алгоритма этапа “Перемещение по лабиринту”
Блок “Выбор направления движения” может быть детализирован на этапе разработки программы.
Аналогично детализируются все составляющие алгоритма.
На этапе разработки технического проекта детализация на уровне операторов программы необязательна.
3.3.3.3 Организация входных и выходных данных
Данный раздел содержит описание и обоснование выбора метода организации входных и выходных данных.
Файл, содержащий план лабиринта, может быть организован непосредственно в приложении. Для этого разрабатывается отдельный фрагмент программы. Структура файла приведена на рисунке 2. В текстовом файле в одной строке записаны номер комнаты и номера комнат смежных помещений. Смежные помещения располагаются в порядке: норд, ост, зюйд, вест. Если смежное помещение отсутствует, то вводится значение 0. Номера комнат в файле могут располагаться в произвольном порядке. Важным является то, что информация о комнате должна быть расположена в отдельной строке.
Разрабатываемое приложение предусматривает использование файлов прямого доступа. В файлах прямого доступа хранится информация подсказки. Подсказкой является правильный ответ тестового задания, который соответствует двери, ведущей к выходу из лабиринта. Файл–помощь может быть сформирован непосредственно в приложении. Для этого разрабатывается отдельный фрагмент программы. Количество компонентов файла равно количеству помещений в здании-лабиринте. Номер компоненты файла соответствует номеру помещения. Правильный ответ расположен в положении, определяющем верное направление. Компонент типизированного файла имеет тип “запись”, где отводится поле для хранения вопроса по теме курса и поле – массив предлагаемых ответов.
Структура файла подсказки:
Запись:
Поле вопроса
Поле 4–х ответов
Файл подсказки для структуры помещений, приведенной на рисунке 1, может содержать, например, следующие тестовые задания:
Что является стандартной файловой переменной?
Con
Prn
F
Input
Правильно описана файловая переменная текстового типа
F4: text80;
F1: File of String;
F: File of String[80];
F2: Text;
Какая процедура предназначена для связи файловой переменной с физическим файлом на диске?
Reset
Rewrite
Assign
Read
Какая процедура предназначена для чтения данных из типизированного файла?
Readln
ReadBlock
Input
Read
Если Var a, b: ^Real; то для a и b справедливо
New(a^)
a:= a/b
a^:= a^ mod b^
a^:= sin(b^)
В результате выполнения New(p) p приобретает значение, соответствующее
значению ноль
типу переменной р
адресу, начиная с которого можно разместить данные
значению Nil
и т.д.
3.3.3.4 Выбор состава технических и программных средств
На основании разработанного алгоритма делается вывод о необходимости использования того или иного языка программирования. Перечисляются достоинства выбранной среды программирования. Определяются технические средства, необходимые для оптимальной работы будущей программы. Следует помнить, что задание на курсовую работу сформулировано, как разработка приложения для Windows, поэтому использование среды разработки приложений Delphi предпочтительнее, но допускается разработка программы и в среде Турбо Паскаль.
В приведенном примере делается вывод о необходимости использования интегральной среды разработки программ Delphi. Среда Delphi позволяет достаточно быстро разрабатывать приложения для Windows. Далее указываются минимальные характеристики компьютера, необходимые для полноценной работы IDE Delphi и программ, созданных в этой среде.
3.3.3.5 Источники, использованные при разработке
Данный раздел должен присутствовать в пояснительной записке, если при разработке приложения использовались другие готовые программы.
3.4 Разработка рабочего проекта
Этап разработки рабочего проекта включает в себя разработку программы и программной документации, а также испытание программы.
3.4.1 Разработка программы
Современные программы разрабатываются для функционирования в среде Windows. Приложение для Windows студенты разрабатывают в среде визуального программирования. Визуальное программирование строится на тесном взаимодействии двух процессов:
· процесс конструирования Windows-окна;
· процесс написания кода, придающего элементам этого окна и программе в целом необходимую функциональность.
Проект Windows-окна должен быть представлен в виде графической схемы, на которой расположены все визуальные и невизуальные компоненты, разрабатываемого интерфейса. Компоненты на схеме должны быть пронумерованы. После схемы приводится расшифровка изображенных на схеме компонентов: название и имя компонента; назначение в программе; события, на которые данный компонент откликается. Для каждого компонента должны быть указаны свойства, измененные при проектировании окна.
Пример
Для разработки приложения игры “Лабиринт” используется среда визуального программирования Delphi. Проект программы содержит три окна:
1. Form1 – перемещение по лабиринту.
2. Form2 – запись на диск плана помещений здания.
3. Form3 – запись на диск файла подсказки.
Окно Form1 Перемещение по лабиринту (рисунок 8).
Рисунок 8. Главное окно программы – Form1
Компонент Form1
Свойства:
Сaption – Игра “Лабиринт”;
Border – bsSingle;
BiSystemMenu – false;
BiMinimaze – false;
BiHelp – False;
События: нет.
1 – компонент TМainMenu
Свойства:
Items
Игра (N1) Настройка (N2) Выход (N3)
Ввод плана помещения (N4)
Ввод файла помощи (N5)
События:
Для N1 – событие BitBtn1Click (приводится ниже).
N3Click – закончить работу с приложением.
N4Click – перейти к работе со второй формой.
N5Click – перейти к работе с третьей формой.
2 – компонент TLabel1
Свойства:
Font – сиреневый, размер 12.
3 – компонент TEdit1
Свойства:
Text – очистить.
События:
Edit1KeyPress – защита от ввода недопустимых символов.
4 – компонент TBitBtn1
Свойства:
Caption – Game;
Glyph – Picture.Bmp.
События:
BitBtn1Click – ввод плана помещений из файла и организация структуры “Связанный список”. Выводит сообщение в метку Label1 и делает видимыми: Buttun1, Label1, Edit1.
5 – компонент TBitBtn2
Свойства:
Kind – bkClose
6 – компонент TPanel1
Свойства:
Align – alClient;
Caption – очистить;
Visible – False.
7 – компонент TPanel2
Свойства:
Align – alClient;
Caption – очистить;
Visible – False.
Компонент Image1 (на схеме не пронумерован).
Свойства:
Picture – Arches.Bmp;
Stretch – True;
Компонент Button1 (закрыт компонентом BitBtn1);
Свойства:
Caption – продолжить.
События:
Button1Click –ввод номера помещения, ввод имени файла помощи, показывает Panel2, прячет Edit1, Label1, Button1.
Контейнер Panel1 (рисунок 9).
Рисунок 9. Компонент Panel1
Перечисляются компоненты, расположенные в контейнере Panel1, их свойства и события.
Далее приводятся графические изображения других панелей и окон, перечисляются компоненты и их свойства.
Написание программы
Программную реализацию разработанных алгоритмов содержат обработчики событий. На этапе разработки рабочего проекта необходимая степень детализации алгоритмов обычно выбирается такой, чтобы предписания разработанных алгоритмов могли записываться на языке программирования, выбранном для составления текста программы. При детализации алгоритма необходимо перейти к обозначениям, принятым для разработки программ на алгоритмическом языке. При этом имена следует выбирать таким образом, чтобы они отражали сущность используемых параметров.
Кодирование должно быть простым. Изощренное программирование может обойтись слишком дорого при отладке и модификации программы. Необычное кодирование (например, использование скрытых возможностей машины) часто препятствует отладке программы и затрудняет ее использование другими программистами.
Программа должна быть по возможности универсальной. Универсальные программы обеспечивают независимость программы от конкретного набора данных. Например, универсальная программа использует в качестве параметров переменные, а не константы, обрабатывает вырожденные случаи и т. д.
Универсальность программы экономит время по дальнейшей работе над ней и обеспечивает широкие возможности по использованию. Разрабатывая такие программы, можно предвидеть будущие изменения в спецификациях этой программы.
Входные форматы должны быть разработаны с учетом максимального удобства для пользователя и минимальной возможности ошибок. Порядок переменных и форматы данных, привычные для пользователя, помогут избежать ошибок и облегчат использование программ.
При написании программы следует применять операторы, позволяющие использовать основные алгоритмические структуры. Оператор Goto желательно не использовать.
При написании программ не следует забывать о хорошем стиле программирования. После заголовка процедуры или функции записывается комментарий, содержащий поясняющий текст, а именно: назначение подпрограммы; перечень и назначение формальных параметров, их тип. Комментариями должны быть снабжены и основные смысловые блоки программы или подпрограммы.
Для облегчения чтения текста программы отдельные операторы программы записываются с отступом.
Пример
Обработчик BitBtn1Click.
Для построения детальной схемы алгоритма необходимо определить структуру элемента списка и ввести обозначения.
Предлагается следующая структура элемента списка помещений:
Room = Record Num: Integer;
Door: Array [Trend] Of Uk;
Next: Uk;
End;
Поле Num хранит номер помещения; массив Door предназначен для хранения ссылок на смежные комнаты; поле Next содержит ссылку на следующий элемент списка. Trend – это перечисляемый тип данных, имеющий следующие значения: nord, ost, zued, west. Эти значения соответствуют направлениям дверей, которые могут быть расположены в каждом помещении. Указатель на начало списка помещений обозначим идентификатором Spi. Spi – глобальная переменная, которая описана в головной части программы.
Схема алгоритма построения связанного списка приведена на рисунке 10.
Рисунок 10. Построение связанного списка
Схема алгоритма построения многосвязанного списка приведена на рисунке 11.
Рисунок 11. Схема алгоритма построение многосвязанного списка, содержащего в себе план помещений здания
Программа.
procedure TForm1. BitBtn1Click (Sender: TObject);
// Построение связанного списка помещений
Var FileName: TNameFile; f: TextFile;
p: Uk; i, nr: Integer;
begin
FileName:= InputBox(‘План помещений’, ‘Введите имя файла ‘,’’);
AssignFile(f, FileName);
Reset(f);
//Считываем только номера помещений и составляем связанный список
Spi:= nil;
While not Eof(f) Do
Begin
New(p);
Readln(f, i);
p^.Num:= i;
For r:= nord To west Do p^.Door [r]:= nil;
p^.next:= Spi;
Spi:= p;
End;
//Еще раз считываем из файла, но уже с дверьми
Reset (f);
While not Eof(f) Do
Begin
Read(f, i);
p:= Nroom(Spi, i);
For r:= nord To west Do
Begin Read(f, nr);
If nr = 0 Then p^.Door[r]:= nil
Else p^.Door[r]:= Nroom(Spi, nr);
End;
End;
// Подготовка формы для ввода номера начала помещения
label1.Caption:= ‘Введите № комнаты, с которой хотите начать движение’;
Edit1.Visible:= True;
label1.Visible:= True;
Button1.Visible:= True;
end;
Функция Nroom – поиск ссылки на помещение с заданным номером. В начинающемся в Spi списке помещений по номеру помещения N отыскивается нужное. Значение функции указывает на это помещение. Схема алгоритма приведена на рисунке 12.
Рисунок 12. Схема алгоритма функции Nroom
Программа
Function Nroom(Spi: Uk; n: Integer): Uk;
// В списке помещений находим указатель на n - oe
Var q: Uk;
Begin
q:= Spi;
While (q<>nil) and (q^.num<>n) Do q:= q^.next;
Nroom:= q;
End;
Аналогично уточняются все алгоритмы и разрабатываются обработчики событий.
Примечание - не следует представлять в виде схем алгоритмов линейные вычислительные процессы. В детализированном виде представляются алгоритмы, имеющие сложную структуру. Сложной структурой будем считать алгоритмы, содержащие более одного разветвления или более одного цикла.
3.4.2 Спецификация программы
В разделе спецификация приводится точное название программы и ее состав. Форма спецификации приведена в приложении А. Графы спецификации заполняют следующим образом:
- в графе “Обозначение” указывают обозначение основных программных компонентов;
- в графе “Наименование” - полное наименование соответствующего компонента;
- в графе “Примечание” – дополнительные сведения, относящиеся к записанным в специи-фикации программам.
Пример
Исполняемый файл программы “Игра “Лабиринт” имеет название Labirint.exe и расположен на компакт-диске (дискете) в каталоге KursovLabirint. Состав проекта.
3.4.3 Текст программы
Приводится полный листинг программы.
Пример листинга:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, Menus, ExtCtrls;
type
TForm1 = class(TForm)
Image1: TImage;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
Panel1: TPanel;
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Label3: TLabel;
BitBtn3: TBitBtn;
Label4: TLabel;
BitBtn4: TBitBtn;
BitBtn5: TBitBtn;
BitBtn6: TBitBtn;
BitBtn7: TBitBtn;
BitBtn8: TBitBtn;
Panel2: TPanel;
Memo1: TMemo;
ListBox1: TListBox;
Button1: TButton;
N4: TMenuItem;
N5: TMenuItem;
Label5: TLabel;
procedure BitBtn1Click(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure BitBtn3Click(Sender: TObject);
procedure BitBtn7Click(Sender: TObject);
procedure ListBox1Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N5Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var Form1: TForm1;
//Перечисляемый тип для определения направления движения
Type Trend = (nord, ost, zued, west);
// Структура элемента списка
Uk = ^Room;
Room = Record Num: Integer;
Door: Array [Trend] Of Uk;
Next: Uk;
End;
// Структура компонента файла помощи
THelp = Record v: String[100];
otv: Array [1..4] Of String[100];
End;
TNameFile = String[20];
Var Spi, pp, Iroom: Uk;
r: Trend; ff: File Of THelp;
// Spi – указатель на начало списка; pp, Iroom –рабочие указатели;
// r – для определения направления движения;
// ff – файловая переменная для обращения к файлу помощи.
implementation
Uses Unit2, Unit3;
{$R *.DFM}
Function Nroom(Spi: Uk; n: Integer): Uk;
// В списке помещений находим указатель на n - oe
Var q: Uk;
Begin
q:= Spi;
While (q<>nil) and (q^.num<>n) Do q:= q^.next;
Nroom:= q;
End;
procedure TForm1.BitBtn1Click(Sender: TObject);
// Построение связанного списка помещений
Var FileName: TNameFile; f: TextFile;
p: Uk; i, nr: Integer;
begin
FileName:= InputBox(‘План помещений’,’Введите имя файла ‘,’’);
AssignFile(f, FileName);
Reset(f);
//Считываем только номера помещений и составляем связанный список
Spi:= nil;
While not Eof(f) Do
Begin
New(p);
Readln(f, i);
p^.Num:= i;
For r:= nord To west Do p^.Door [r]:= nil;
p^.next:= Spi;
Spi:= p;
End;
//Еще раз считываем из файла, но уже с дверьми
Reset (f);
While not Eof(f) Do
Begin
Read(f, i);
p:= Nroom(Spi, i);
For r:= nord To west Do
Begin Read(f, nr);
If nr = 0 Then p^.Door[r]:= nil
Else p^.Door[r]:= Nroom(Spi, nr);
End;
End;
// Подготовка формы для ввода номера начала помещения
label1.Caption:= ‘Введите № комнаты, с которой хотите начать движение’;
Edit1.Visible:= True;
label1.Visible:= True;
Button1.Visible:= True;
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
// Защита от недопустимых символов (вводятся только цифры)
begin
If not (key in [‘1’..’9']) Then Key:= #27;
end;
procedure TForm1.BitBtn3Click(Sender: TObject);
// Перемещение. BitBtn3 – север; BitBtn4 – запад;
//BitBtn5 – восток; BitBtn6 – юг.
Var aa: String[8]; c: Integer; pp: Uk;
//aa – имя кнопки; c – номер кнопки;
//pp – указатель текущего помещения.
begin
pp:= Iroom;
aa:= (sender as TBitBtn).Name;
c:= StrToInt(Copy(aa,7,1));
Case c of
3: r:= nord;
5: r:= ost;
6: r:= zued;
4: r:= west;
End;
Iroom:= Iroom^.Door[r];
If Iroom = nil Then
Begin ShowMessage(‘Это невозможно!’);Iroom:= pp; End
Else Label3.Caption:= IntToStr(Iroom^.Num);
Label4.Caption:= IntToStr(Iroom^.Num);
If Iroom^.Num = 999 Then
Begin ShowMessage(‘Свобода!!!’);
Panel1.hide; label1.Hide; Button1.Hide;
Exit End;
end;
procedure TForm1.BitBtn7Click(Sender: TObject);
// Вывод содержимого справки в компоненты панели Panel2
Var i: Integer; a: THelp;
Begin
Panel1.Visible:= False;
Panel2.Visible:= True;
Label5.Caption:= IntToStr(Iroom^.Num);
// Устанавливаем указатель текущего компонента файла
Reset(ff); Seek(ff, Iroom^.Num - 1);
Read(ff, a); Memo1.Lines.Add(a.v);
For i:= 1 To 4 Do ListBox1.items[i]:= a.otv[i];
end;
procedure TForm1.ListBox1Click(Sender: TObject);
//Определение направления путем выбора верного ответа в списке
Var r1: Trend;
begin
pp:= Iroom;
Panel2.Visible:= False;
Panel1.Visible:= True;
for r1:= nord To west Do
If ListBox1.ItemIndex = ord(r1) + 1 Then r:= r1;
Iroom:= Iroom^.Door[r];
If Iroom = nil Then
Begin ShowMessage(‘Это невозможно!’);Iroom:= pp; End
Else Label3.Caption:= IntToStr(Iroom^.N
Label4.Caption:= IntToStr(Iroom^.Num);
If Iroom^.Num = 999 Then
Begin Writeln(‘Свобода!!!’);
Panel1.hide; label1.Hide; Button1.Hide;
Exit End;
end;
procedure TForm1.Button1Click(Sender: TObject);
// Ввод номера начала помещения
Var nr: Integer; FileName: TNameFile;
// nr – номер помещения для начала движения
// File Name – имя файла помощи
begin
If Edit1.Text = ‘’ Then Exit;
nr:= StrToInt(Edit1.Text);
Iroom:= Nroom(Spi, nr);
If Iroom = nil Then
Begin
ShowMessage(‘Такого помещения нет!’);
Edit1.Text:= ‘’; Label1.Caption:= ‘’;
Exit;
End;
panel1.Visible:= True;
Label3.Caption:= IntToStr(Iroom^.Num);
Label4.Caption:= IntToStr(Iroom^.Num);
FileName:= InputBox(‘Имя файла помощи’, ‘Введите имя файла помощи’,’’);
AssignFile(ff, FileName);
Edit1.Hide; Label1.Hide; Button1.Hide;
end;
procedure TForm1.N4Click(Sender: TObject);
// Переход к форме №2, осуществляющей запись плана помещений на диск.
Begin
Form1.Hide; Form2.Show;
End;
procedure TForm1.N3Click(Sender: TObject);
//Закрыть приложение
begin
Form1.Close; Form2.Close; Form2.Close;
Application.Terminate;
end;
procedure TForm1.N5Click(Sender: TObject);
//Переход к форме №3, осуществляющей запись на диск файла помощи.
begin
Form1.Hide; Form3.Show;
end;
end.
Далее приводятся листинги остальных модулей.
3.4.4 Описание программы
Раздел “Описание программы” согласно ГОСТ 19.402–78* должен содержать следующие подразделы:
· общие сведения;
· функциональное назначение;
· описание логической структуры;
· используемые технические средства;
· вызов и загрузка;
· входные данные;
· выходные данные.
Отдельные разделы можно объединять. Некоторые пункты этого раздела повторяют разделы технического проекта. Такие повторения предусмотрены ГОСТом, так как на этапе рабочего проекта возникают некоторые дополнения или изменения в составе технических средств или программе. Здесь приводятся более конкретные и точные данные.
В подразделе “Общие сведения” должны быть указаны: обозначение и наименование программы; программное обеспечение, необходимое для функционирования программы; языки программирования, на которых написана программа.
В подразделе “Функциональное назначение” должны быть указаны классы решаемых задач и (или) назначение программы и сведения о функциональных ограничениях на применение.
В подразделе “Описание логической структуры” должны быть указаны используемые методы; структура программы с описанием функций составных частей и связи между ними; связи программы с другими программами. Описание логической структуры программы выполняют с учетом текста программы на исходном языке.
В подразделе “Используемые технические средства” должны быть указаны типы ЭВМ и устройств, которые используются при работе программы.
В подразделе “Вызов и загрузка” должны быть указаны способ вызова программы с соответствующего носителя данных, входные точки в программу.
В подразделе “Входные данные” должны быть указаны: характер, организация и предварительная подготовка входных данных, формат, описание и способ кодировки входных данных.
В подразделе “Выходные данные” должны быть указаны: характер, организация и предварительная подготовка выходных данных, формат, описание и способ кодировки выходных данных.
3.4.5 Тестирование программы
Перечисляются требования, подлежащие проверке при испытании программы, а также порядок и методика их контроля. Приводятся исходные данные для решения контрольного примера и ожидаемые результаты.
Прилагается распечатка решения контрольного примера и снимки экрана с результатами тестирования.
3.5 Внедрение
В разделе описываются (руководство оператора ГОСТ 19.505–79):
· условия выполнения программы;
· выполнение программы;
· сообщения оператору.
В разделе “Условия выполнения программы” должны быть указаны условия, необходимые для выполнения программы (минимальный и/или максимальный состав аппаратурных и программных средств и т.п.).
В разделе “Выполнение программы” должна быть указана последовательность действий оператора, обеспечивающих загрузку, запуск, выполнение и завершение программы. В разделе приводятся сведения для проверки, обеспечения функционирования и настройки программы на условия конкретного применения. Перечисляется порядок и последовательность ввода исходных данных и получения результатов расчета.
В разделе “Сообщения оператору” должны быть приведены тексты сообщений, выдаваемых в ходе выполнения программы, описание их содержания и соответствующие действия оператора.
Содержание разделов допускается иллюстрировать поясняющими примерами, таблицами, схемами.
3.6 Список использованных источников
В разделе перечисляется литература, использованная при выполнении курсовой работы. В тексте пояснительной записки должны быть приведены ссылки на используемые литературные источники.
Источники нумеруются для того, чтобы на них можно было ссылаться из текста пояснительной записки.
Например:
1. Александр и Наполеон [Электронный ресурс] : История двух императоров / Музей-панорама «Бородинская битва», Интерсофт. — Электрон. дан. — М. : Интерсофт, сор. 1997. — 1 электрон. опт. диск (CD-ROM) : зв., цв.12 см. — Систем. требования: ПК с процессором 486 DX2-66 ; 8 Мб ОЗУ ; Microsof Windows 3.1 или Windows 95 ; 2-скоростной дисковод CD-ROM ; видеокарта SVGA 256 цв. ; зв. карта 16 бит стандарта МРС ; стереоколонки или наушники. — Загл. с этикетки диска.
2. Архангельский, А. Я.
Приемы программирования в Delphi на основе VCL [Текст] / А. Я. Архангельский. – М. : Бином-Пресс,2006. – 933 с.
3. Библиотеки вузов Восточной Сибири в региональном информационном пространстве: Материалы науч.- практ. конф.- Иркутск: Науч. Б-ка Иркут. ун-та, 2002.- http:// www.library.isy.ru/nauka/konf.htm (28окт.2002).
4. Даль, Владимир Иванович.
Толковый словарь живого великорусского языка Владимира Даля [Электронный ресурс] : подгот. по 2-му печ. изд. 1880—1882 гг. — Электрон. дан. — М. : ACT [и др.], 1998. — 1 электрон. опт. диск (CD-ROM) ; 12 см + рук. пользователя (8 с.) — (Электронная книга). — Систем. требования: IBMPC с процессором 486 ; ОЗУ 8 Мб ; операц. система Windows (Зх, 95, NT) ; CD-ROM дисковод ; мышь. — Загл. с экрана.
5. ЕСКД. Правила выполнения чертежей и схем оптических изделий [Текст] : ГОСТ 19.404-79. Введ. 1981-01-01. – М. : Изд-во стандартов, 1981.
6. История России
[Текст] : учеб. пособие для студентов всех специальностей / В. Н. Быков ; М-во образования Рос. Федерации, С.-Петерб. гос. лесотехн. акад. – СПб. : СПбЛТА, 2001. – 231 с.
7. Киселев, В. В. Анализ научного потенциала [Текст] / В. В. Киселев, Т. Е. Кузнецова, З. З. Кузнецов. – М. : Наука, 1991. – 126 с.
8. Коломиец, Л.
Устойчивое развитие: Миф иили реальность? [Электронный ресурс]. – Режим доступа: http://ust-razvitie.narod.ru/
9. Корнелиус, X. Выиграть может каждый: Как разрешать конфликты [Текст] / X. Корнелиус, З. Фэйр ; пер. П. Е. Патрушева. – М. : Стрингер, 1992. – 116 с.
10. Мудрик, А. В.
Воспитание в контексте социализации / А. В. Мудрик // Образование: исследовано в мире [Электрон. ресурс] / Под патронажем Российской академии образования, ГНПБ им. К. Д. Ушинского. - М.: OIM.RU, 2000-2001. - Режим доступа: World Wide Web. URL: http://www.oim.ru. - 25.09.2000.
11. О местном референдуме в Хабаровском крае: Закон от 27.11.2002 г. № 74 // Справочно-правовая система «Гарант»: [Электронный ресурс] / НПП «Гарант-Сервис». – Послед. обновление 23.03.2003.
12. О ратификации консульского договора между Российской Федерацией и Китайской Народной Республикой: Федеральный закон от 19.02.2003 г. N 31-ФЗ // Справочно-правовая система «Консультант Плюс»: [Электронный ресурс] / Компания «Консультант Плюс». – Послед. обновление 04.04.2003.
13. Образование: исследовано в мире [Электрон. ресурс]: Международный научный педагогический Интернет-журнал с библиотекой-депозитарием / Под патронажем Российской академии образования, ГНПБ им. К.Д. Ушинского. - М.: OIM.RU, 2000-2001. - Режим доступа: World Wide Web. URL: http://www.oim.ru. - 10.02.2001.
14. Официальный сайт Президента Российской Федерации [Электронный ресурс] / Администрация Президента РФ. – Москва, 2001. – Режим доступа: www.president.kremlin.ru
15. Российская Федерация. Конституция (1993)
.
Конституция Российской Федерации [Текст] : офиц. текст. – М. : Маркетинг, 2001. – 39 с.
16. Российская Федерация. Законы.
О воинской обязанности и военной службе [Текст] : федер. закон. – М. : Ось-89, [2001?]. – 46, [1] с. – (Актуальный закон).
17. Савинова, Ф.
Экологические проблемы и здоровье населения. 1989-1999 гг. [Электронный ресурс] // мир безопасность. – 2000. - № 3. - Режим доступа: www.secur.ru/vitmib13.htm
18. Семенов, В. В.
Философия: итог тысячелетий. Философская психология [Текст] / В. В. Семенов ; Рос. акад. наук, Пущин. науч. центр, Ин-т биофизики клетки, Акад. проблем сохранения жизни. – Пущино : ПНЦ РАН, 2000. – 64 с.
19. Теория зарубежной судебной медицины [Текст] : учеб. пособие / В.Н. Алисиевич [и др.]. – М. : Изд-во МГУ, 1990. – 40 с.
20. Фаронов, В. В.
Turbo Pascal [Текст] : учеб. пособие / В. В. Фаронов. – СПб. : Питер, 2006. – 366 с.
21. Художественная энциклопедия зарубежного классического искусства [Электронный ресурс]. – Электрон. текстовые, граф., зв. дан. и прикладная прогр. (546 Мб). – М. : Большая Рос. энцикл. [и др.], 1996. – 1 электрон. опт. диск (CD-ROM) . – (Интерактивный мир). – Систем. требования: ПК 486 или выше ; 8 Мб ОЗУ ; Windows 3.1 или Windows 95 ; SVGA 32768 и более цв. ; 640х480 ; 4х CD-ROM дисковод ; 16-бит. зв. карта ; мышь. – Загл. с экрана.
22. Цветков, Виктор Яковлевич.
Компьютерная графика: рабочая программа [Электронный ресурс] : для студентов заоч. формы обучения геодез. и др. специальностей / В. Я. Цветков. — Электрон. дан. и прогр. — М.: МИИГАиК, 1999. — 1 дискета. — Систем. требования: IBMPC, Windows 95, Word 6.0. — Загл. с экрана. - № гос. регистрации 0329900020.
23. Яблоков, А. В.
Управление охраной природы – проблемы и решения. - [Электронный ресурс] – Режим доступа: http://aeli.altai.ru/conferenc/1999/turina.html
24. Internet шаг за шагом [Электронный ресурс] : Учебник. - Электрон. дан. и прогр. - СПБ. : ПитерКом, 1997, - 1 электрон. опт. диск (CD-ROM) + прил. (127 с.).
4 Оформление пояснительной записки
Оформление пояснительной записки выполняется согласно общим методическим требованиям, принятым в СГА (см. Методические указания по выполнению курсовой работы по дисциплинам направления Информатика и ВТ).
5 Тематика курсовых работ
Сформулированные в настоящих указаниях задания на курсовую работу представляют студенту простор для творчества. В текстах задач умышленно опущены некоторые детали и необходимые требования. После ознакомления с литературой студент должен оценить возможности языка программирования и вычислительной техники, на которой предлагается реализовать решение. Результатом этой работы должна быть точная формулировка задачи со всеми ограничениями и требованиями.
В программе, кроме решения непосредственно задачи, студент должен предусмотреть вывод справки о программе и информации о разработчике с указанием ФИО, группы и даты разработки.
На диске вместе с программой должны быть представлены файлы, подготовленные для проверки ее работоспособности.
5.1 Массивы
1. Дана действительная квадратная матрица порядка 2n. Получить новую матрицу, переставляя ее блоки размером n x n: а) крест-накрест; б) по часовой стрелке (левый верхний блок становится правым верхним, правый верхний – правым нижним и т.д.).
2. Составить программу транспонирования целочисленной матрицы.
3. Составить программу, которая заполняет квадратную матрицу порядка n натуральными числами 1, 2, 3, … n2
, записывая их в нее «по спирали».
Например, для n=5 получаем следующую матрицу:
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
4. Дана действительная квадратная матрица порядка N (N – нечетное), все элементы которой различны. Найти наибольший элемент среди стоящих на главной и побочной диагоналях и поменять его местами с элементом, стоящим на пересечении этих диагоналей.
5. Разработать проект, который позволяет сортировать заданный линейный массив целых чисел различными методами, например, методом линейной сортировки, пузырька, Шелла и др. Предусмотреть использование не менее трех методов.
6. Элемент матрицы называется седловой точкой, если он является наименьшим в своей строке и одновременно наибольшим в своем столбце или, наоборот, является наибольшим в своей строке и наименьшим в своем столбце. Для заданной матрицы размером (N x M) определить индексы всех ее седловых точек.
7. Составить программу, проверяющую, образуют ли элементы двумерного массива магический квадрат. В магическом квадрате суммы чисел по всем вертикалям, всем горизонталям и двум диагоналям одинаковы.
8. Дана вещественная матрица размером (N x M). Переставляя ее строки и столбцы, добиться того, чтобы наибольший элемент (или один из них) оказался в левом верхнем углу.
9. В таблице размером (N x N), где N20, клетки заполнены цифрами случайным образом. Найти маршрут из клетки (1,1) в клетку (N,N), удовлетворяющий следующим условиям: 1) любые две последовательные клетки в маршруте имеют общую сторону; 2) количество клеток маршрута минимально; 3) сумма цифр в клетках маршрута максимальна.
10. Разработать проект, который обеспечивает выполнение операций сложения, вычитания и умножения над матрицами целых чисел. Выбор выполняемой операции осуществляет пользователь.
11. Разработать проект, который позволяет сортировать строковый массив (например, содержащий компьютерные термины) по алфавиту. Обеспечить сортировку внутри группы строк, начинающихся на одну и ту же букву (например, строка, содержащая слово ПРИНТЕР должна предшествовать строке, содержащей слово ПРОГРАММА).
12. Из массива удалить самую длинную цепочку четных элементов. Пример, из массива A[8]: 4 1 4 2 1 2 4 6 должен получиться массив A[5]: 4 1 4 2 1 (самая длинная цепочка четных чисел включает элементы с 6 по 8: 2 4 6).
13. Из массива A удалить те элементы, которые встречаются и в массиве A и в массиве B по крайней мере по 2 раза. Пример, массив A[8]: 3 3 4 5 2 3 5 9, массив B[7]: 1 2 3 4 5 2 5. По 2 раза в обоих массивах встречается только элемент, равный 5. Массив A после удаления примет вид: A[6]: 3 3 4 2 3 9.
14. Из массива A удалить те цепочки четных элементов, в которых есть хотя бы один элемент из массива B. Пример, массив A[9]: 3 2 4 5 2 3 2 6 5, массив B[6]: 1 3 4 7 8 9. Массив A после удаления примет вид: A[7]: 3 5 2 3 2 6 5.
5.2 Строковые данные и текстовые файлы
1. Разработать программу, которая осуществляет в текстовом файле поиск заданных слов. Слова последовательно вводятся с клавиатуры. Для каждого слова должно определяться количество вхождений и номера строк текста. Если указанное слово в файле отсутствует, то программа должна выводить соответствующее сообщение.
2. Даны 2 текстовых файла f1 и f2. Файл f1 содержит произвольный текст. Слова в тексте разделены пробелами и знаками препинания. Файл f2 содержит не более 30 слов, которые разделены запятыми. Эти слова образуют пары: каждое второе является синонимом первого. Заменить в файле те слова, которые можно, их синонимами. Результат поместить в новый файл.
3. Дан текстовый файл. Напечатать в алфавитном порядке все слова из заданного файла, имеющие длину n.
4. Дан файл, содержащий текст на русском языке. Подсчитать количество слов, начинающихся и заканчивающихся на одну и ту же букву и выдать эти буквы с указанием соответствующего количества слов.
5. Файл содержит текст на русском языке. Составить в алфавитном порядке список всех слов, встречающихся в тексте, и количество этих слов.
6. Дан файл, содержащий текст на русском языке. Найти слова, встречающиеся в каждом предложении, или сообщить, что таких слов нет.
7. Дан файл, содержащий текст на русском языке. В предложениях некоторые из слов записаны подряд. Получить в новом файле отредактированный текст, в котором удалены повторные вхождения слов в предложение.
8. Написать программу, которая позволяет зашифровывать и расшифровывать с помощью «шифра Цезаря» сообщение, написанное на русском языке. Этот шифр реализует следующее преобразование текста: каждая буква исходного текста заменяется третьей после нее буквой в алфавите, который считается написанным по кругу.
9. Написать программу, которая позволяет зашифровывать и расшифровывать сообщение с помощью «шифра перестановки». Этот шифр меняет местами две соседние буквы.
10. Создать проект «Русско-английский и англо-русский словарь», который обеспечивает перевод слов, хранящихся в файле данных.
11. Дан текстовый файл. Переписать его текст в новый файл таким образом, чтобы каждое предложение начиналось с новой строки и между словами осталось только по одному пробелу.
12. Текст программы на Паскале хранится в файле на диске. Составить программу обработки текста программы: 1) подсчитать, какие ключевые слова Паскаля и в каком количестве использованы в обрабатываемом тексте; 2) составить перечень имен простых переменных, используемых в левой части оператора присваивания.
13. Текст программы на Паскале хранится в файле на диске. Составить программу обработки текста программы: 1) определить максимальную степень вложенности циклов в программе; 2) определить общее количество строк и количество символов, отличных от пробела; 3) удалить из текста программы все комментарии.
14. Текст программы на Паскале хранится в файле на диске. Составить программу обработки текста программы: 1) первые буквы служебных слов сделать заглавными; 2) текст комментария заменить на номер комментария по порядку.
15. Создать программу, анализирующую правильность записи арифметического выражения с точки зрения синтаксиса Паскаля. Арифметическое выражение задается строковой переменной и вводится с клавиатуры компьютера.
16. Текст программы на Паскале хранится в файле на диске. Распечатать на экране текст программы таким образом, чтобы в каждой строке размещался только один оператор. Организовать смещение операторов относительно операторных скобок, как это принято в Паскале.
17. Составить программу, позволяющую сжимать текстовую информацию, а затем преобразовывать сжатую информацию в исходное состояние. В программе необходимо предусмотреть два варианта. Для хранения текста в сжатом виде найти часто повторяющиеся последовательности из двух букв и заменить их кодом. В качестве кода использовать символы, не встречающиеся в тексте. Составить таблицу кодов. В заданном тексте найти слова, которые встречаются более трех раз, закодировать их и сжать текст, заменив слова кодами. Составить таблицу кодов.
18. Разработать программу “Выравнивание”. Исходная информация: текст, записанный в текстовом файле. Программа выводит этот текст с выравниванием по краям. Текст выводится без переносов слов. Параметры абзаца задаются в диалоговом режиме.
19. Текст программы на Паскале хранится в файле на диске. Разработать программу, определяющую и выводящую на экран операторы, которые изменяют значения заданных переменных (их имена вводятся) и номера строк программы, где они находятся.
20. Составить программу, определяющую наличие неописанных идентификаторов в тексте программы на Паскале. Текст программы хранится в файле на диске.
5.3 Записи. Базы данных
[1]
1. Создайте программу введения базы данных “Сотрудники” научного учреждения “Прогресс”. В базе данных содержится список сотрудников: фамилия, должность, подразделение, зарплата за один час работы. Количество отработанных часов для каждого сотрудника вводятся с клавиатуры компьютера.
Ведение базы данных включает в себя следующие пункты:
а) ввод информации о сотрудниках и запись ее на диск;
б) удаление ненужной информации с файлов на диске;
в) корректирование записей базы данных;
г) вывод расчетной ведомости для каждого подразделения.
Расчетная ведомость имеет вид:
2. Создайте программу ведения базы данных торговой фирмы. Программа включает в себя: формирование и корректирование файлов данных; расчет комиссионного вознаграждения сотрудников фирмы. Файл данных о продавце включает его имя и фамилию, табельный номер, дату поступления на работу. Торговая фирма выплачивает продавцам комиссионное вознаграждение в размере 5%, если товара продано на сумму менее 1000 долл. в день, и 6%, если выручка составляет 1000 долл./день и выше. Продавцы, проработавшие в фирме более 10 лет, получают комиссионные на 1% больше. Сумма выручки за день для каждого продавца вводится с клавиатуры ЭВМ. Организуйте вывод общих итогов по сумме выручки и сумме комиссионного вознаграждения за месяц.
3. Разработайте приложение справочной службы железнодорожного вокзала. Программа должна выдавать справки о наличии билетов в спальные, купейные и плацкартные вагоны на все рейсы текущего месяца. Предусмотрите удобный интерфейс для пользователя.
4. Разработайте приложение “Помощник экзаменатора”. Экзаменационные вопросы и ответы к ним хранятся в файлах на диске. Каждый вопрос имеет балл сложности. Необходимо подобрать пять вопросов из разных разделов курса, имеющих в сумме балл сложности N, и вывести их на экран. Предусмотреть тренировочный режим работы, когда возможен вывод ответов на представленные вопросы. Доступ к тренировочному режиму работы предоставляется по паролю.
5. Разработайте программу тестирования по одному из разделов курса «Программирование на языке высокого уровня». в которой выбор правильного ответа осуществляется при помощи переключателя. За каждый правильный ответ начисляется один балл. В конце теста выводятся его результаты. Необходимо предусмотреть тренировочный режим работы, когда возможен вывод ответов на представленные вопросы. Доступ к тренировочному режиму работы предоставляется по паролю.
6. Разработайте приложение, имитирующее простейший органайзер.
7. Создайте программу ведения базы данных личной библиотеки. Программа должна обеспечивать:
· ввод и корректировку информации о новых книгах;
· поиск информации о книгах определенного автора;
· поиск информации о книгах определенного жанра.
8. Создайте программу ведения базы данных личной видеотеки. Программа должна обеспечивать ввод и корректировку информации о новых дисках (своих и взятых на время у друзей), а также выдавать информацию по запросам:
· имеется ли в наличии такой-то диск и если нет, то кому он отдан;
· имеются ли диски, взятые у друзей и которые надо отдать на этой неделе;
· выдать список дисков с видеофильмами заданного жанра.
9. Разработайте приложение «Телефонный справочник».
10. Разработайте приложение «Записная книжка». Программа должна обеспечивать ввод и корректировку информации, а по запросу - поиск следующей информации:
· номер телефона указанного лица и ФИО по номеру телефона;
· почтовый адрес и адрес электронной почты указанного лица;
· ФИО лиц, чьи даты рождения приходятся на указанный месяц (неделю).
11. Разработайте приложение «Склад». Программа должна обеспечивать ввод и корректировку информации и выдавать информацию по следующим запросам:
· имеется ли в наличии указанный товар и в каком количестве;
· кому, на какую сумму и какой товар был отпущен в заданный день;
· какова суммарная стоимость товаров на складе в отчетный день.
12. Разработайте программу ведения базы данных футбольной команды университета. В БД фиксируется дата игры, результат, название команды противника, ФИО игроков, забивших гол. Программа должна выдавать информацию по следующим запросам:
· ФИО наиболее результативного игрока за отчетный период;
· информацию об игре с наихудшим результатом;
· количество игр за отчетный период, сыгранных с указанной командой противника.
13. Разработайте справочную систему по стандартным функциям Турбо Паскаля.
14. Разработайте справочную систему по операторам языка Турбо Паскаль.
5.4 Динамические структуры
1. Разработайте программу, которая определяет "водящего" в детской игре. Водящий определяется с помощью считалки следующим образом. Все играющие встают в круг и начинают "считаться". Каждый раз тот, на ком закончилась считалка, выбывает из круга. Водит оставшийся. Исходное количество играющих n. Количество слов считалки m. Используйте кольцевой список.
2. Дан список строк. Написать следующие подпрограммы:
а) обращение списка (изменить ссылки в списке так, чтобы элементы оказались расположены в противоположном порядке);
б) оставить в списке только первые вхождения одинаковых элементов.
3. Построить имитационную модель бензоколонки. На бензоколонке К стоек (1 стойка может обслуживать 1 автомобиль), каждый автомобиль обслуживается S сек. Интервал между моментами прибытия на бензоколонку автомобилей является случайной величиной, распределенной по закону Р(х). Если все стойки заняты, автомобиль становится в очередь. Для заданных Р(х) и S определить возможно меньшее значение К для того, чтобы очередь не удлинялась.
4. Написать подпрограмму–функцию Form(S, X), где S – строка, Х – вещественная переменная. В строке записано арифметическое выражение, содержащее переменную Х, константы (целые или вещественные), операции +, -, *, /. Порядок операций определен скобками. Подпрограмма–функция возвращает значение арифметического выражения при заданном значении Х.
5. Написать подпрограмму–функцию Form(S, X, Y), где S – строка, Х и Y – вещественные переменные. В строке записано арифметическое выражение, содержащее переменные Х и Y, константы (целые или вещественные), операции +, -, *, /. Порядок операций определен скобками. Подпрограмма–функция возвращает значение арифметического выражения при заданных значениях Х и Y.
6. Задано выражение в постфиксной форме (обратная польская запись). Вычислить значение этого выражения для заданных значений входящих в него переменных.
7. Составить программу решения “задачи коммивояжера”. Необходимо определить минимальную стоимость проезда коммивояжера по N городам с возвращением в исходную точку. Каждый город входит в маршрут только один раз. Предположить, что стоимость проезда из города i в город j такая же, как и из j в i.
8. Разработать программу для составления списка заданий для параллельных процессоров. Три одинаковых центральных процессора могут выполнять М заданий. Каждое задание может быть выполнено на любом процессоре, и, если задание загружено в процессор, оно находится в нем до полного завершения (т.е. задания не могут прерываться или разделяться между двумя или более процессорами). При i = 1, . . ., М задание i требует времени ti для его выполнения. Для любого порядка заданий следующее задание из списка выполняется на первом освободившемся процессоре. Определить оптимальный порядок заданий, т.е. такой, который дает возможность завершить все задания в кратчайшее время.
9. Разработайте программу решения двух задач по работе с мультисписками. Даны две разреженные матрицы, хранящиеся в виде мультисписков. Напишите: 1) процедуру получения третьего мультисписка, являющегося матрицей–суммой первых двух; 2) процедуру удаления N–ой строки матрицы.
10. Разработайте процедуру исключения вершины из двоичного дерева.
11. Напишите программу, удаляющую из матрицы [А] строку и столбец, содержащие наибольший элемент матрицы. Матрица [A] является разряженной и хранится в виде мультисписков.
12. Написать программу, которая представит заданное арифметическое выражение в виде обратной польской записи и вычислит его значение. Для решения задачи использовать динамическую структуру стек.
5.5 Игры
1. Напишите программу, которая генерирует или считывает шахматную позицию и определяет, не находится ли один из королей под шахом и не является ли шах матом. В программе предусмотреть два варианта ввода исходных данных: 1) шахматная позиция генерируется с помощью датчиков случайных чисел; 2) шахматная позиция вводится с клавиатуры ЭВМ.
2. Разработайте программу, моделирующую игру. Игра имеет следующие правила. Перед Вами большое число ящиков с деньгами. Сумма денег в каждом ящике – случайная величина. Вы выбираете ящик, открываете его и или берете деньги из ящика, или отказываетесь от них. Если Вы берете деньги, игра кончается. В противном случае Вы можете выбрать другой ящик. Эта процедура повторяется максимум до пяти ящиков (деньги из пятого ящика должны быть взяты, если он открыт).
3. Разработайте программу моделирующей игры. Два игрока, “нечетный” и “четный”, по очереди ставят единицы и нули в незанятые позиции поля N на N. Каждый из игроков может ставить 1 или 0 в произвольную свободную позицию, тем самым занимая ее. Игра продолжается до заполнения всех позиций. После этого суммируются числа вдоль каждой строки, каждого столбца и главных диагоналей. Число ODD нечетных сумм сравнивается с числом EVEN четных сумм. Если ODD > EVEN, выигрывает “нечетный”; если EVEN > ODD, выигрывает “четный”; если ODD = EVEN, результат считается ничейным. Если одним из игроков является ЭВМ, то постройте для нее выигрышную стратегию.
4. Разработайте программу, моделирующую игру “Кости”. Играющий называет любое число в диапазоне от 2 до 12 и ставку, которую он делает в этот ход. Программа с помощью датчика случайных чисел дважды выбирает числа от 1 до 6 (“бросает кубик”, на гранях которого цифры от 1 до 6). Если сумма выпавших цифр меньше 7 и играющий задумал число меньшее 7, он выигрывает сделанную ставку. Если сумма выпавших цифр больше 7 и играющий задумал число большее 7, он также выигрывает сделанную ставку. Если играющий угадал сумму цифр, он получает в четыре раза больше очков, чем сделанная ставка. Ставка проиграна, если не имеет место ни одна из описанных ситуаций. В начальный момент у играющего 100 очков. В программе должно присутствовать графическое изображение поверхности кубика при каждом ходе игрока.
5. Разработайте программу, моделирующую игру “Морской бой”. На поле 10 на 10 позиций стоят невидимые вражеские корабли: 4 корабля по 1 клетке, 3 корабля по 2 клетки, 2 корабля по 3 клетки, 1 корабль в 4 клетки. Необходимо поразить каждую из клеток кораблей. Два игрока вводят позиции кораблей в виде цифр (1, 2, 3, 4) в соответствующие элементы матрицы, тем самым определяя конфигурацию и положение кораблей. Игроки по очереди “наносят удары” по кораблям противника. Если позиция корабля указана верно, то она помечается крестиком на поле. Предусмотреть вариант игры, когда одним из играющих является ЭВМ.
6. Разработайте программу, моделирующую игру “Сбей самолет”. По экрану летят вражеские самолеты. Цель играющего – сбить их. Пусковая установка находится в нижней строке экрана. Пусковую установку можно перемещать по строке вперед и назад.
7. Составьте программу обучения работе с клавиатурой. Программа должна выдавать на экран буквы, цифры, слова и фразы, которые следует набрать на клавиатуре, и оценивать правильность и скорость набора. В программе надо предусмотреть три уровня подготовленности обучающегося.
8. Разработайте программу, моделирующую игру “Автомобильные гонки”.
9. Разработайте программу «Будильник». После того, как пользователь введет время сигнала и текст, который должен выводиться на экран в заданное время, как напоминание о наступлении какого-либо события, окно программы должно исчезнуть с экрана. Появление текста-напоминания в указанное время должно сопровождаться звуковым сигналом.
10. Разработайте программу «Будильник». После того, как пользователь введет время сигнала и выберет для него музыкальный фрагмент, как напоминание о наступлении какого-либо события, окно программы должно исчезнуть с экрана. Выбранный звуковой сигнал должен раздаться в заданное время. Предусмотрите возможность задания различных музыкальных фрагментов для различных событий.
11. Разработайте программу, которая выводит на экран результаты экзаменационной сессии группы в виде а) гистограммы; б) круговой диаграммы; в) графика. Выбор формы представления результатов сессии производится пользователем.
12. Напишите программу, используя которую можно оценить способность игрока запоминать числа. Программа должна последовательно выводить ряд чисел, например восемь, испытуемый стараться их запомнить и потом ввести с клавиатуры. Время, в течение которого игрок видит число ограничено одной секундой. Программа должна быть «интеллектуальной». Сначала она предлагает запоминать ряд одноразрядных чисел, потом двухразрядных, трех и т.д. Переход на следующий уровень сложности должен осуществляться, если испытуемый правильно выполнил задание. После окончания теста программа должна вывести результат испытания по каждой группе чисел.
13. Напишите программу «Угадайка». Компьютер случайным образом загадывает число от 1 до 100. Задача пользователя – за минимальное количество попыток, но не более шести, угадать это число, предлагая компьютеру свои варианты, в ответ на которые программа указывает номер попытки и сообщение о том, больше загаданное число или меньше введенного с клавиатуры. При правильной стратегии (делении интервала чисел пополам) наверняка угадать число можно за семь попыток. Игра состоит из пяти партий. После последней партии выводятся результаты.
14. Напишите программу, реализующую простой калькулятор.
15. Напишите программу перевода чисел из одной системы счисления в другую. Систему счисления (десятичная, двоичная, восьмеричная или шестнадцатеричная) для задания и перевода числа выбирает пользователь.
16. Напишите программу, позволяющую выполнять арифметические действия над двоичными, восьмеричными или шестнадцатеричными числами. Систему счисления выбирает пользователь.
17. Напишите программу MP3 Player. Программа должна обеспечить выбор прослушиваемого файла, регулировку громкости звука, перемотку файла.
6 Литература
1. Архангельский, А. Я.
Delphi 2006. Справочное пособие. Язык Delphi, классы, функции Win32 и NET [Текст] / А. Я. Архангельский. – М. : Бином-Пресс, 2006.
2. Архангельский, А. Я.
Приемы программирования в Delphi на основе VCL [Текст] / А. Я. Архангельский. – М. : Бином-Пресс, 2006.
3. Архангельский, А. Я.
Программирование в Delphi 7 [Текст] / А. Я. Архангельский. – М. : Бином-Пресс, 2004.
4. Бобровский, С. И.
Технологии Delphi 2006. Новые возможности [Текст] / С. И. Боб-ровский. – СПб. : Питер, 2006.
5. Желонкин, А. В.
Основы программирования в интегрированной среде DELPHI [Текст] : практикум / А. В. Желонкин. – М. : БИНОМ. Лаборатория знаний, 2006.
6. Зубов, А. В.
Программирование на Delphi. Трюки и эффекты [Текст] / А. В. Зубов. – СПб. : Питер, 2005.
7. Культин, Н. Б.
Delphi .NET в задачах и примерах [Текст] / Н. Б. Культин. – СПб. : БХВ-Петербург, 2006.
8. Культин, Н. Б.
Delphi в задачах и примерах [Текст] / Н. Б. Культин. – СПб. : БХВ-Петербург, 2004.
9. Культин, Н. Б.
Основы программирования в Delphi 7 [Текст] / Н. Б. Культин. – СПб. : БХВ-Петербург, 2003.
10. Немнюгин
,
С
.
А
.
Turbo Pascal. Программирование на языке высокого уровня [Текст] : учебник для вузов / С. А. Немнюгин. – 2-е изд., перераб. и доп. – СПб. : Питер, 2006.
11. Немнюгин, С. А.
Turbo Pascal: Практикум [Текст] / С. А. Немнюгин. – 2-е изд. Перераб. и доп. – СПб. : Питер, 2006.
12. Павловская, Т. А.
Паскаль. Программирование на языке высокого уровня [Текст] : учебник для вузов / Т. А. Павловская. – СПб. : Питер, 2004. (допущен Министерством образования).
13. Попов, В. Б.
Паскаль и Дельфи [Текст] : самоучитель / В. Б. Попов. – СПб. : Питер, 2003.
14. Фаронов, В. В.
Delphi
. Программирование на языке высокого уровня [Текст] : учебник для вузов / В. В. Фаронов. - СПб. : Питер, 2005 (допущен Министерством образования).
15. Фаронов, В. В.
Турбо Паскаль 7.0. Практика программирования [Текст] : учебное пособие / В. В. Фаронов. - М. : ОМД Групп, 2003.
16. Фаронов, В. В.
Delphi 2005. Разработка приложений для баз данных и Интернета [Текст] / В. В. Фаронов. – СПб. : Питер, 2005.
17. Фаронов, В. В.
Delphi 2005. Язык, среда, разработка приложений [Текст] / В. В. Фаронов. – СПб. : Питер, 2005.
18. Федоренко, Ю. П.
Алгоритмы и программы на Turbo Pascal [Текст] : учебный курс / Ю. П. Федоренко. – СПб. : Питер, 2001.
19. Чиртик, А. А.
Delphi. Трюки и эффекты [Текст] / А. А. Чиртик, В. В. Борисок, Ю. И. Корвель. – СПб. : Питер, 2007.
Приложение а
Форма спецификации
Методические рекомендации
по выполнению курсовой работы по дисциплине “Программирование на языке высокого уровня”
Ответственный за выпуск Е.Д. Кожевникова
Корректор Н.Н. Горбатова
Оператор компьютерной верстки А.В. Митряхина
_____________________________________________________________________________________
НОУ “Современная Гуманитарная Академия”
Глоссарий – толковый (объясняющий) словарь понятий и терминов.
[1]
Для разработки программ данной тематики не обязательно использовать модуль BDE.