Основы программирования на языке C/C++
Разработка программы, которая выявляет в прямоугольной матрице все подматрицы, состоящие только из m-значных целых чисел. Использование компилируемого языка программирования общего назначения C/C++. Обработка алгоритмов, кодирование программных средств.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 05.03.2015 |
Размер файла | 980,1 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
КУРСОВАЯ РАБОТА
по дисциплине Программирование
на тему
Основы программирования на языке C/C++
Содержание
1. Введение
2. Анализ технического задания
3. Обработка алгоритмов
4. Кодирование программы
5. Контрольный пример
6. Руководство пользователя
Заключение
Список использованных источников
Приложение А. Листинг программы
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. Обработка алгоритмов
Алгоритм -- это набор инструкций, описывающих порядок действий исполнителя для достижения результата решения задачи за конечное время.
Каждый алгоритм предполагает существование начальных (входящих) данных и в результате работы приводит к получению определенного результата. Работа каждого алгоритма происходит путем выполнения последовательности некоторых элементарных действий. Эти действия называют шагами, а процесс их выполнения называют алгоритмическим процессом. Таким образом, проявляется свойство дискретности алгоритма.
Важным свойством алгоритмов является массовость, или возможность применения к различным входным данным. То есть, каждый алгоритм призван решать класс однотипных задач.
Необходимым условием, которому удовлетворяет алгоритм, является детерминированность, или определенность. Это означает, что выполнение команд алгоритма происходит по единому образцу и приводит к одинаковому результату для одинаковых входных данных.
Входные данные алгоритма могут быть ограничены набором допустимых входных данных. Применение алгоритма к недопустимым входным данным может приводить к тому, что алгоритм никогда не остановится или попадет в тупиковое состояние (зависание), из которого не сможет выйти.
Ниже представлена блок - схема (рисунок 3.1), в которой показан алгоритм выполнения программы.
Рисунок 3.1 - Блок - схема
Рисунок 3.1 - Блок - схема (продолжение)
компилируемый программирование матрица алгоритм
Рисунок 3.1 - Блок - схема (продолжение)
Рисунок 3.1 - Блок - схема (конец)
4. Кодирование программы
При написании данной программы использовались следующие операторы и процедуры:
- 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. Контрольный пример
В данном пункте рассмотрено поведение программы при задании тех или иных входных данных.
На рисунке 5.1 показано, что мы выбрали заполнение матрицы с клавиатуры и далее нас спрашивает размер матрицы.
Рисунок 5.1 - выбор заполнение с клавиатуры
После введения размеров, программа просит ввести матрицу (рисунок 5.2).
Рисунок 5.2 - ввод матрицы
Далее нас спрашивает из скольки цифр должно быть каждое число в подматрице (рисунок 5.3).
Рисунок 5.3 - запрос из скольки цифр должно быть каждое число в подматрице
После ввода он выводит нам ответ на экран (рисунок 5.4), а так же заполняет его в файл (рисунок 5.5).
Рисунок 5.4 - вывод результата на экран
Рисунок 5.5 - вывод результата в файл
Так же в программе предусмотрены исключительные ситуации, такие как:
- При выборе заполнения данных из файла, программа не находит файл, выдается сообщение что файл не найден;
- При поиске подматриц, если таковые не находятся, то выдается сообщение что матрицы не найдены.
При тестировании программы результаты совпали с ожидаемыми.
6. Руководство пользователя
Для первого способа запуска нашей программы, потребуется C++ Builder 6, что бы открыть файл «Unit1» типа «C++Builder Source File (.cpp)», который находится на нашем диске в папке «Для пользователя». Открыв этот файл для компиляции, нужно будет нажать на клавиатуре клавишу F9.
Для второго способа, нужно только открыть наш диск, открыть папку «Для пользователя» и открыть файл «Project1» типа «Приложение (.exe)».
В обоих случаях появляется начало программы, как показано на рисунке 6.1, где интерфейс программы понятен для любого пользователя.
Рисунок 6.1 - Начало программы
Заключение
В курсовой работе решена задача выявляющая в прямоугольной матрице все подматрицы, состоящие только из m-значных целых чисел. Составлена и отлажена программа, реализующая ранее указанный алгоритм. С ее помощью были найдены требующиеся нам подматрицы, проанализированы полученные результаты. Контрольный пример, при тестировании программы, показал, что поставленная задача успешно решена.
Список использованных источников
Динман М.И. С++. Освой на примерах [электронный ресурс]/ М.И. Динман. СПб.: БХВ-Петербург, 2010г. 384с.
Шилдт Г. Самоучитель С++: Пер. с англ. - 3-е изд./ Г. Шилдт. СПб.: БХВ-Петербург, 2009г. 688с.
Павловская Т. А. C/C++. Программирование на языке высокого уровня Т.А. Павловская. СПб.: Питер, 2008г. 461с.
Панасенко С.П. Алгоритмы шифрования. Специальный справочник С.П. Панасенко. СПб.: БХВ-Петербург, 2012г. 576с.
Приложение А
Листинг программы
#include <vcl.h>
#include <iostream>
#include <fstream>
using namespace std;
int n,m,x;
char t;
const int k=100;
typedef int array[k][k];
ifstream in;
ofstream out;
void vvod1 (array a)
{ //vvod s klaviaturi
cout<<"vvedite razmeri matrici\n";
cin>>n;
cin>>m;
cout<<"vvedite matricu\n";
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
cin>>a[i][j];
}
}
void vvod2(array a)
{ //vvod iz faila
in.open("vvodnie.txt");
in>>n;
in>>m;
if (in)
{
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
in>>a[i][j];
}
else cout<<"netu faila \n";
in.close();
}
void vvod3(array a)
{ //vvod random
randomize();
cout<<"vvedite razmeri matrici\n";
srand((unsigned)time(NULL));
cin>>n;
cin>>m;
int a3;
cout<<"vvedite diapozon sluchainih chisel\n";
cin>>a3;
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
a[i][j]=rand()%a3 + 1;
}
int main()
{
array b,c,b1;
bool proverka=true;
char p;
bool loop=true;
int count=1,mznachnoe,potolok,dno;
while(loop)
{
cout<<"vvedite sposob vvoda(1-s klaviaturi,2-iz faila,3-random) ";
cin>>p;
if (p=='1')
{
vvod1 (b);
loop=false;
}
if (p=='2')
{
vvod2(b);
loop=false;
}
if (p=='3')
{
vvod3(b);
loop=false;
}
}
cout<<"vvedite iz skolki cifr dolgno sostoyat kagdoe chislo v matrice ";
cin>>mznachnoe;
potolok=1;
for (int i=0;i<mznachnoe;i++)
{
potolok*=10;
dno=potolok/10;
}
int min;
min=n;
if (min>m) min=m;
out.open("vihod.txt");
for (int l=1; l<n; l++)
for (int l1=1;l1<m;l1++)
for(int i=0;i<n-l;i++)
for(int j=0;j<m-l1;j++)
{
proverka=true;
for (int o=i;o<=i+l;o++)
for (int o1=j;o1<=j+l1;o1++)
if(b[o][o1]>=potolok || b[o][o1]<dno)proverka=false;
if(proverka)
{
cout<<"\n";
out<<"\n";
for (int o=i;o<=i+l;o++)
{
cout<<"\n";
out<<"\n";
for (int o1=j;o1<=j+l1;o1++)
{
count++;
cout<<b[o][o1]<<" ";
out<<b[o][o1]<<" ";
}
}
}
}
if (count==1)
{
cout<<"netu iskomih maytric \n ";
out<<"netu iskomih maytric \n";
}
out.close();
Sleep(1000000);
}
Размещено на Allbest.ru
Подобные документы
Поиск взаимно простых чисел. Алгоритм Евклида для целых чисел. Описание выбранного языка программирования. Алгоритм решения задачи. Обзор средств программирования. Текст и описание программы. Руководство оператора, программа и методика испытаний.
курсовая работа [843,5 K], добавлен 15.06.2011Создание программы на языке программирования С#, которая проверяет наличие в матрице хотя бы одного столбца, содержащего положительный элемент, поиск его номера. Упорядочивание его элементов по возрастанию. Листинг программы и инструкция по работе с ней.
курсовая работа [1,9 M], добавлен 28.05.2014Особенности разработки и реализации обучающей программы и схемы алгоритмов на языке программирования С++. Понятие равномерной и неравномерной дискретизации. Представление информации (составление кода) в виде таблицы перекодировки или многочлена.
курсовая работа [704,6 K], добавлен 06.03.2013Целесообразность выбора языка программирования. Основные структуры языка программирования. Кодирование по методу четности/нечетности, по методу Хэмминга. Машина Поста. Инструкция программиста и пользователя. Использование программы StudyProgram.
курсовая работа [294,7 K], добавлен 27.02.2009Организация вычислительных процессов и программирования на алгоритмическом языке. Создание программы "Калькулятор". Выбор языка и среды программирования. Функциональная схема работы программы, описание разработанных алгоритмов. Способы устранения ошибок.
курсовая работа [434,1 K], добавлен 27.08.2012Критерии классификации баз данных. Использование C++ - компилируемого, статически типизированного языка программирования общего назначения. Этапы разработки специализированного прикладного программного обеспечения - базы данных "Прохождение практики".
курсовая работа [1,4 M], добавлен 11.12.2015Методика разработки программы по поиску информации из базы данных, содержащей информацию о телевизорах. Использование языка программирования "С++" и среды разработки Qt Creator "С++" - статически типизированного языка программирования общего назначения.
курсовая работа [626,1 K], добавлен 22.12.2011Приемы работы с инструментальной средой программирования С++. Кодирование арифметических и логических выражений с использованием стандартных библиотечных функций ввода, вывода в С++. Описание переменной вещественного типа в языке программирования С++.
лабораторная работа [137,9 K], добавлен 13.06.2014Обзор образовательных ресурсов для реализации дистанционного обучения. Разработка рабочей программы курса видеолекций "Основы программирования на языке C+". Подбор контента, аппаратных средств. Проведение чат-занятий, использование сетевой технологии.
дипломная работа [155,0 K], добавлен 28.06.2014Рассмотрение особенностей языка программирования С++. Пример составления программы - информационно-поискового справочника. Описание алгоритмов коррекции данных, введённых пользователем. Тестирование полученной программы, предусмотрение ее защиты.
курсовая работа [20,0 K], добавлен 05.03.2015