Загрузил Вадим Беляев

á ®¢ë ¯à®£à ¬¬¨à®¢  ¨ï   ï§ëª¥ CC++ - StudentLib.com

реклама
КУРСОВАЯ РАБОТА
по дисциплине Программирование
на тему
Основы программирования на языке C/C++
Содержание
1. Введение
. Анализ технического задания
. Обработка алгоритмов
. Кодирование программы
. Контрольный пример
. Руководство пользователя
Заключение
Список использованных источников
Приложение А. Листинг программы
1. Введение
Целью данной курсовой работы является разработка программы, которая
выявляет в прямоугольной матрице все подматрицы, состоящие только из
m-значных целых чисел. Для разработки программы мы будем использовать
язык программирования C++. C++ - компилируемый язык программирования
общего
назначения,
низкоуровневых
сочетает
языков
свойства
как
программирования.
высокоуровневых,
В
так
сравнении
с
и
его
предшественником - языком программирования C, - наибольшее внимание
уделено
поддержке
объектно-ориентированного
и
обобщённого
программирования. Название «язык программирования C++» происходит от
языка программирования C, в котором унарный оператор ++ обозначает
инкремент переменной.
Язык программирования C++ широко используется для разработки
программного обеспечения. А именно, создание разнообразных прикладных
программ, разработка операционных систем, драйверов устройств, а также
видеоигр
и
многое
другое.
Существует
несколько
реализаций
языка
программирования C++ - как бесплатных, так и коммерческих. Их производят
Проект GNU, Microsoft и Embarcadero (Borland). Проект GNU - проект
разработки свободного программного обеспечения (СПО).
Язык программирования С++ был создан в начале 1980-х годов, его
создатель сотрудник фирмы Bell Laboratories - Бьёрн Страуструп. Он придумал
ряд усовершенствований к языку программирования C, для собственных нужд.
Т. е. изначально не планировалось создания языка программирования С++.
Ранние версии языка С++, известные под именем "C с классами", начали
появляться с 1980 года. Язык C, будучи базовым языком системы UNIX, на
которой
работали
многофункциональным
компьютеры
и
фирмы
переносимым.
Bell,
Страуструп
является
добавил
быстрым,
к
нему
возможность работы с классами и объектами, тем самым зародил предпосылки
нового, основанного на синтаксисе С, языка программирования. Синтаксис C++
был основан на синтаксисе C, так как Бьёрн Страуструп стремился сохранить
совместимость с языком C.
В 1983 году произошло переименование языка из "C с классами" в "язык
программирования C++". В него были добавлены новые возможности:
виртуальные функции, перегрузка функций и операторов, ссылки, константы и
многое другое. Его первый коммерческий выпуск состоялся в октябре 1985
года. Язык программирования C++ является свободным, то есть никто не
обладает на него правами.
2. Анализ технического задания
Анализируя техническое задание, для выявления в прямоугольной
матрице всех подматриц, состоящих только из m-значных целых чисел,
учитываем следующие особенности:
язык C++;
обработка ошибок программы (на уровне пользователя);
наличие руководства пользователя;
искомые матрицы будут выводится с размерами 2*2 и более;
используемый компилятор C++ Builder 6;
интерфейс:
использование консольного приложения;
возможность выбора загрузки данных из файла, с клавиатуры или
случайным образом;
визуализация процесса обработки на экран, а так же запись выводных
данных в файл;
. Обработка алгоритмов
Алгоритм - это набор инструкций, описывающих порядок действий
исполнителя для достижения результата решения задачи за конечное время.
Каждый алгоритм предполагает существование начальных (входящих)
данных и в результате работы приводит к получению определенного результата.
Работа каждого алгоритма происходит путем выполнения последовательности
некоторых элементарных действий. Эти действия называют шагами, а процесс
их выполнения называют алгоритмическим процессом. Таким образом,
проявляется свойство дискретности алгоритма.
Важным свойством алгоритмов является массовость, или возможность
применения к различным входным данным. То есть, каждый алгоритм призван
решать класс однотипных задач.
Необходимым условием, которому удовлетворяет алгоритм, является
детерминированность, или определенность. Это означает, что выполнение
команд алгоритма происходит по единому образцу и приводит к одинаковому
результату для одинаковых входных данных.
Входные данные алгоритма могут быть ограничены набором допустимых
входных данных. Применение алгоритма к недопустимым входным данным
может приводить к тому, что алгоритм никогда не остановится или попадет в
тупиковое состояние (зависание), из которого не сможет выйти.
Ниже представлена блок - схема (рисунок 3.1), в которой показан
алгоритм выполнения программы.
Рисунок 3.1 - Блок - схема
Рисунок 3.1 - Блок - схема (продолжение)
компилируемый программирование матрица алгоритм
Рисунок 3.1 - Блок - схема (продолжение)
Рисунок 3.1 - Блок - схема (конец)
. Кодирование программы
При написании данной программы использовались следующие операторы
и процедуры:
void vvod1 - процедура, при выборе которой осуществляется заполнение
матрицы с клавиатуры;
void vvod2 - процедура, при выборе которой осуществляется заполнение
матрицы из файла;
void vvod3 - процедура, при выборе которой осуществляется заполнение
матрицы случайным образом;
int main() - это точка входа в программу на С++, с функции main
начинается сама программа;
cout<< - позволяет выводить на экран сообщения или значения;
cin>> - позволяет присваивать введенные с клавиатуры значения
переменным;
- if(<условие>) <действие> - используется для того, чтобы определить
действия программы при различных условиях.
Циклы:
Цикл - многократное прохождение по одному и тому же коду программы.
Циклы необходимы программисту для многократного выполнения одного и
того же кода, пока истинно какое-то условие. Если условие всегда истинно, то
такой цикл называется бесконечным, у такого цикла нет точки выхода.
for (/*выражение1*/; /*выражение2*/; /*выражение3*/){/*один оператор
или блок операторов*/;} - Выражение1 - объявление (и) или инициализация,
ранее объявленной, переменной-счетчика, которая будет отвечать за истинность
условия в цикле for; Выражение2 - это условие продолжения цикла for, оно
проверяется
на
истинность;
Выражение3
изменяет
значение
переменной-счетчика. Без выражения3 цикл считается бесконечным;
while (/*условие продолжения цикла while*/) { /*блок операторов*/;
/*управление условием*/; } - цикл, повторяющий одно и то же действие, пока
условие продолжения цикла while остаётся истинным. Условие продолжения
цикла должно быть истинно "true", как только условие стало ложным,
выполняется выход из цикла.
Типы:
- int - целый тип. Размер типа int не определяется стандартом, а зависит от
компьютера и компилятора. Для 16-разрядного процессора под величины этого
типа отводится 2 байта, для 32-разрядного - 4 байта;
- char - символьный тип. Под величину символьного типа отводится
количество байт, достаточное для размещения любого символа из набора
символов для данного компьютера, что и обусловило название типа. Как
правило, это 1 байт. Тип char, как и другие целые типы, может быть со знаком
или без знака. В величинах со знаком можно хранить значения в диапазоне от
-128 до 127. При использовании спецификатора unsigned значения могут
находиться в пределах от О до 255. Этого достаточно для хранения любого
символа из 256-символьного набора ASCII. Величины типа char применяются
также для хранения целых чисел, не превышающих границы указанных
диапазонов;
bool - логический тип. Величины логического типа могут принимать
только значения true и false, являющиеся зарезервированными словами.
Внутренняя форма представления значения false - 0 (нуль). Любое другое
значение интерпретируется как true. При преобразовании к целому типу true
имеет значение 1.
Для работы в C++ нужно указывать библиотеки с помощью директив. В
нашем случае для C++ Builder 6 используются следующие библиотеки:
#include <vcl.h> - директива подключает заголовочный файл vcl.h,
содержащий объявления, используемые в библиотеке визуальных компонентов
C++Builder;
#include <iostream> - директива подключает заголовочный файл с
классами, функциями и переменными для организации ввода-вывода в языке
программирования C++. Он включён в стандартную библиотеку C++;
#include <fstream> - директива подключает заголовочный файл из
стандартной библиотеки C++, включающий набор классов, методов и функций,
которые предоставляют интерфейс для чтения/записи данных из/в файл. Для
манипуляции с данными файлов используются объекты, называемые потоками
(«stream»).
. Контрольный пример
В данном пункте рассмотрено поведение программы при задании тех или
иных входных данных.
На рисунке 5.1 показано, что мы выбрали заполнение матрицы с
клавиатуры и далее нас спрашивает размер матрицы.
Рисунок 5.1 - выбор заполнение с клавиатуры
После введения размеров, программа просит ввести матрицу (рисунок
5.2).
Рисунок 5.2 - ввод матрицы
Далее нас спрашивает из скольки цифр должно быть каждое число в
подматрице (рисунок 5.3).
Рисунок 5.3 - запрос из скольки цифр должно быть каждое число в
подматрице
После ввода он выводит нам ответ на экран (рисунок 5.4), а так же
заполняет его в файл (рисунок 5.5).
Рисунок 5.4 - вывод результата на экран
Рисунок 5.5 - вывод результата в файл
Так же в программе предусмотрены исключительные ситуации, такие как:
При выборе заполнения данных из файла, программа не находит файл,
выдается сообщение что файл не найден;
При поиске подматриц, если таковые не находятся, то выдается
сообщение что матрицы не найдены.
При тестировании программы результаты совпали с ожидаемыми.
. Руководство пользователя
Для первого способа запуска нашей программы, потребуется C++ Builder
6, что бы открыть файл «Unit1» типа «C++Builder Source File (.cpp)», который
находится на нашем диске в папке «Для пользователя». Открыв этот файл для
компиляции, нужно будет нажать на клавиатуре клавишу F9.
Для второго способа, нужно только открыть наш диск, открыть папку
«Для пользователя» и открыть файл «Project1» типа «Приложение (.exe)».
В обоих случаях появляется начало программы, как показано на рисунке
6.1, где интерфейс программы понятен для любого пользователя.
Рисунок 6.1 - Начало программы
Заключение
В курсовой работе решена задача выявляющая в прямоугольной матрице
все подматрицы, состоящие только из m-значных целых чисел. Составлена и
отлажена программа, реализующая ранее указанный алгоритм. С ее помощью
были найдены требующиеся нам подматрицы, проанализированы полученные
результаты. Контрольный пример, при тестировании программы, показал, что
поставленная задача успешно решена.
Список использованных источников
1. Динман М.И. С++. Освой на примерах [электронный ресурс]/ М.И. Динман.
СПб.: БХВ-Петербург, 2010г. 384с.
2. Шилдт Г. Самоучитель С++: Пер. с англ. - 3-е изд./ Г. Шилдт. СПб.:
БХВ-Петербург, 2009г. 688с.
3. Павловская Т. А. C/C++. Программирование на языке высокого уровня Т.А.
Павловская. СПб.: Питер, 2008г. 461с.
4. Панасенко С.П. Алгоритмы шифрования. Специальный справочник С.П.
Панасенко. СПб.: БХВ-Петербург, 2012г. 576с.
Приложение А
Листинг программы
#include <vcl.h>
#include <iostream>
#include
<fstream>namespace
std;n,m,x;t;int
k=100;int
array[k][k];in;out;vvod1 (array a)
{ //vvod s klaviaturi<<"vvedite razmeri matrici\n";>>n;>>m;<<"vvedite
matricu\n";(int i=0;i<n;i++)
{(int j=0;j<m;j++)>>a[i][j];
}
}vvod2(array a)
{ //vvod iz faila.open("vvodnie.txt");>>n;>>m;(in)
{(int i=0;i<n;i++)(int j=0;j<m;j++)>>a[i][j];
}cout<<"netu faila \n";.close();
}vvod3(array a)
{
//vvod
random();<<"vvedite
matrici\n";((unsigned)time(NULL));>>n;>>m;a3;<<"vvedite
diapozon
razmeri
sluchainih
chisel\n";>>a3;(int i=0;i<n;i++)(int j=0;j<m;j++)[i][j]=rand()%a3 + 1;
}main()
{b,c,b1;proverka=true;p;loop=true;count=1,mznachnoe,potolok,dno;(loop)
{<<"vvedite sposob vvoda(1-s klaviaturi,2-iz faila,3-random) ";>>p;(p=='1')
{(b);=false;
}(p=='2')
{(b);=false;
}(p=='3')
{(b);=false;
}
}<<"vvedite iz skolki cifr dolgno sostoyat kagdoe chislo v matrice
";>>mznachnoe;=1;(int i=0;i<mznachnoe;i++)
{*=10;=potolok/10;
}min;=n;(min>m)
min=m;.open("vihod.txt");(int
l=1;
l<n;
l++)(int
l1=1;l1<m;l1++)(int i=0;i<n-l;i++)(int j=0;j<m-l1;j++)
{=true;(int o=i;o<=i+l;o++)(int o1=j;o1<=j+l1;o1++)(b[o][o1]>=potolok ||
b[o][o1]<dno)proverka=false;(proverka)
{<<"\n";<<"\n";(int o=i;o<=i+l;o++)
{<<"\n";<<"\n";(int o1=j;o1<=j+l1;o1++)
{++;<<b[o][o1]<<" ";<<b[o][o1]<<" ";
}
}
}
}(count==1)
{<<"netu iskomih maytric \n ";<<"netu iskomih maytric \n";
}.close();(1000000);
}
Скачать