Учебная работа. Курсовая работа: Операции над матрицами
Интернациональная бизнес Академия
Кафедра ИТ и ОТД
КУРСОВАЯ РАБОТА
по дисциплине «Разработка программирования»
на тему: «Операции над матрицами»
Выполнил:
ст. гр. ИС-10 (3)
Джумагельдинов С.Н.
Проверил:
ст. преп. кафедры ИТ и ОТД
Оценка:_____ Краснов А.М.
Караганда 2011
Интернациональная бизнес Академия
Кафедра ИТ и ОТД
Личное задание
на курсовую работу
по дисциплине «Разработка программирования»
Задание выдано студенту
группы ИС-10(3) Галимову К.А.
Тема: «Знаменательные даты»
Этапы и сроки выполнения:
№
Заглавие шага
Итог
Сроки выполнения
1
анализ постановки задач
Полное описание задач
2 недельки
2
Составление математической модели
Описание математической модели
1 неделька
3
Составление метода решения задач
Блок-схемы программки либо псевдокод метода
0,5 недельки
4
Составление модульной структуры приложения
Схема и описание модулей программки
0,5 недель
5
Зрительное построение интерфейса и модулей
Разработка интерфейса и модулей
2 недельки
6
Написание программного кода приложения
Листинги функций, процедур с комментами
2,5 недельки
7
Отладка программного кода
Листинги программки с устраненными ошибками
2 недельки
8
Тестирование приложения
Работоспособное приложение
1 неделька
9
Написание объяснительной записки
Объяснительная записка
2 недельки
10
защита курсовой работы
Оценка
1 неделька
Задание принял к выполнению
17.01.2011
Галимов К.А. _____
Содержание
Введение 4
1 анализ задания по курсовой работе 7
1.1 Главные задачки 7
1.2 Доп задачки 7
2 Математическая модель решаемой задачи 8
2.1 Расчет знаменательной даты 8
2.2 Учёт високосных годов 8
2.3 Расчёт времени 8
3 Алгоритмизация модели решаемой задачи 9
4 Модульная структура приложения 11
4.1 Схема работы приложения 11
4.2 Описание главных процедур 11
5 Листинг программки 12
6 Описание процесса отладки программки 17
7 Тестирование приложения 18
8 {Инструкция} для юзера приложения 19
Заключение 21
Перечень использованной литературы 22
Введение
Большая часть работы программистов связана с написанием начального кода, тестированием и отладкой программ на одном из языков программирования. Начальные тексты и исполняемые файлы программ являются объектами авторского права и являются умственной собственностью их создателей и правообладателей.
Разные языки программирования поддерживают разные стили программирования (т. н. парадигмы программирования). Частично Искусство программирования заключается в том, чтоб избрать один из языков, более много пригодный для решения имеющейся задачки. Различные языки требуют от программера различного уровня внимания к деталям при реализации метода, результатом чего же нередко бывает соглашение меж простотой и производительностью (либо меж временем программера и временем юзера).
Единственный язык, впрямую выполняемый ЭВМ (Электронная вычислительная машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач) — это машинный язык (также именуемый машинным кодом). Вначале все программки писались в машинном коде, но на данный момент этого фактически уже не делается. Заместо этого программеры пишут текст начальный код на том либо ином языке программирования, потом (используя компилятор, интерпретатор либо ассемблер) передают его, в один либо несколько шагов в машинный код, готовый к выполнению на мотивированном микропроцессоре, либо в промежуточное один к одному в надлежащие аннотации машинного языка мотивированного микропроцессора ЭВМ (Электронная вычислительная машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач).
C++ — компилируемый статически типизированный язык программирования общего предназначения. Поддерживая различные парадигмы программирования, соединяет характеристики как высокоуровневых, так и низкоуровневых языков. В сопоставлении с его предшественником — языком C, — наибольшее внимание уделено поддержке объектно-ориентированного и обобщённого программирования. Заглавие «C++» происходит от языка C, в каком унарный оператор ++ обозначает инкремент переменной.
Являясь одним из самых фаворитных языков программирования, C++ обширно употребляется для разработки программного обеспечения. Область его внедрения включает создание операционных систем, различных прикладных программ, драйверов устройств, приложений для встраиваемых систем, высокопроизводительных серверов, также веселительных приложений (к примеру, видеоигры). Существует несколько реализаций языка C++ — как бесплатных, так и коммерческих. Их создают Проект GNU, Microsoft, Intel и Embarcadero (Borland). C++ оказал большущее воздействие на остальные языки программирования, сначала на Java и C#.
При разработке C++ Бьёрн Страуструп стремился сохранить сопоставимость с языком C. Огромное количество программ, которые могут идиентично удачно транслироваться как компиляторами C, так и компиляторами C++, достаточно велико — частично благодаря тому, что синтаксис C++ был основан на синтаксисе C.
язык появился сначала 1980-х годов, когда сотрудник компании Bell Laboratories Бьёрн Страуструп вымыслил ряд усовершенствований к языку C под собственные нужды. До начала официальной стандартизации язык развивался в главном силами Страуструпа в ответ на запросы программистского общества. В 1998 году был ратифицирован интернациональный эталон языка C++: ISO/IEC 14882:1998 «Standard for the C++ Programming Language»; опосля принятия технических исправлений к эталону в 2003 году — сегоднящая версия этого эталона — ISO/IEC 14882:2003.
Ранешние версии языка, известные под именованием «C с классами», начали появляться с 1980 года. Мысль сотворения новейшего языка берёт начало от опыта программирования Страуструпа для диссертации. Он нашел, что язык моделирования Simula имеет такие способности, которые могли быть весьма полезны для разработки огромного программного обеспечения, но работает очень медлительно. В то же время язык BCPL довольно резв, но очень близок к языкам низкого уровня и не подступает для разработки огромного программного обеспечения. Страуструп начал работать в Bell Labs над задачками теории очередей (в приложении к моделированию телефонных вызовов). Пробы внедрения имеющихся в то время языков моделирования оказались неэффективными. Памятуя опыт собственной диссертации, Страуструп решил дополнить язык C (преемник BCPL) способностями, имеющимися в языке Симула. язык C, будучи базисным языком системы UNIX, на которой работали компы Bell, является резвым, функциональным и переносимым. Страуструп добавил к нему возможность работы с классами и объектами. В итоге, практические задачки моделирования оказались доступными для решения как исходя из убеждений времени разработки (благодаря использованию Симула-подобных классов) так и исходя из убеждений времени вычислений (благодаря быстродействию C). Сначала в C были добавлены классы (с инкапсуляцией), производные классы, строгая проверка типов, inline-функции и аргументы по дефлоту.
Разрабатывая C с классами (позже C++), Страуструп также написал программку cfront — транслятор, перерабатывающий начальный код C с классами в начальный код обычного C. Новейший язык, нежданно для создателя, приобрёл огромную популярность посреди коллег и скоро Страуструп уже не мог лично поддерживать его, отвечая на тыщи вопросцев.
В 1983 году вышло переименование языка из C с классами в C++. Не считая того, в него были добавлены новейшие способности, такие как виртуальные функции, перегрузка функций и операторов, ссылки, константы, пользовательский контроль над управлением вольной памятью, усовершенствованная проверка типов и новейший стиль объяснений (//). Его 1-ый коммерческий выпуск состоялся в октябре 1985 года. В 1985 году вышло также 1-ое издание «Языка программирования C++», обеспечивающее 1-ое описание этого языка, что было очень принципиально из-за отсутствия официального эталона. В 1989 году состоялся выход C++ версии 2.0. Его новейшие способности включали множественное наследование, абстрактные классы, статические функции-члены, функции-константы и защищённые члены.
В 1990 году вышло «Комментированное справочное управление по C++», положенное потом в базу эталона. Крайние обновления включали шаблоны, исключения, места имён, новейшие методы приведения типов и булевский тип.
Обычная библиотека C++ также развивалась совместно с ним. Первым добавлением к обычной библиотеке C++ стали потоки ввода/вывода, обеспечивающие средства для подмены обычных функций C printf и scanf. Позже самым значимым развитием обычной библиотеки сделалось включение в неё Обычной библиотеки шаблонов.
никто не владеет правами на язык C++, он является вольным. Но сам документ эталона языка (кроме черновиков) не доступен безвозмездно.
Целью моей курсовой работы является написание программки, которая рассчитывает знаменательные даты жизни (к примеру 100ый денек вашей жизни либо 100000ая секунда вашей жизни).
Актуальность темы заключается в том, что на нынешний денек не существует таковой программки которая поможет для вас выяснить знаменательные даты вашей жизни с точностью до секунды.
1 Анализ задания по курсовой работе
Поставлена задачка – написать такую программку, которая могла бы рассчитывать знаменательные даты жизни юзера программки.
1.1 Главные задачки
Главные задачки для написания программки:
-умножение матрицы A на число λ (обозначение: λA)
-сложение матриц A + B есть операция нахождения матрицы C
-Вычитание матриц A – B
-Умножение матриц
1.2 Доп задачки
Доп задачки для написания программки:
— адаптируемость – приспосабливаемость к функционированию в разных критериях;
-гибкость – возможность просто вводить конфигурации, дополнения, исправления в ПО (то есть программное обеспечение — комплект программ для компьютеров и вычислительных устройств) при сохранении всей системной организации;
-компактность – потребление малых ресурсов ЭВМ (Электронная вычислительная машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач) (память, время);
-мобильность – способность функционирования на разных технических средствах;
-надежность – обеспечение получения достоверных результатов проектирования;
-реактивность – обеспечение резвого решения задачки при ориентации на юзера, не являющегося спецом в области вычислительной техники;
-эволюционируемость – возможность пополнения новенькими программками, расширяющими возможность системы.
2 Математическая модель решаемой задачи
Для написания таковой программки необходимо употреблять такие функции как циклы, условия и массивы.
2.1 Расчёт знаменательной даты
Сначала необходимо высчитать введенное юзером число (дней) и вывести правильную знаменательную дату с учетом, что в любом месяце различное количество дней. Для этого необходимо сложить денек рождения юзера с тем знаменательным деньком, который он желает выяснить. Дальше Написать несколько критерий под любой месяц, т.е. если месяц юзера январь, тогда от суммы (денек рождения+знаменательный денек) отнимается 31 (количество дней в феврале), а число месяца рождения юзера обязано возрастет на 1 (потому что если 31 денек января прошел – наступает февраль). По таковой же схеме по порядку сумма обязана пройтись до того времени, пока она не станет меньше чем количество дней в месяце. Когда сумма стала меньше, чем количество дней в месяце, необходимо вывести итог.
2.2 Учёт високосных годов
Учёт високосных годов один из важных шагов поставленной задачки. Поэтому что любой 4ый год в феврале становится на 1 денек больше, что может воздействовать на верный расчет знаменательной даты без его учёта.
Для того чтоб учесть високосные года, довольно сделать массив, в каком будут храниться все даты этих годов и если переменная года будет совпадать с одним из чисел массива, тогда к февралю добавлять 20 девятый денек.
2.3 Расчёт времени
Для того чтоб высчитать знаменательную дату с точностью до часа, минутки и секунды нужно сложить введенную секунду рождения с введенной секундой знаменательной даты. Опосля чего же сделать цикл при котором от суммы отнимается число 60 (секунд), а к минутке прибавляется 1, но если минутка добивается больше числа 60, тогда она обнуляется, а к часу прибавляется единица. Если час становится больше 24, тогда он обнуляется, а к деньку прибавляется 1.
Цикл заканчивается в том случае, когда сумма становится меньше 60, т.е. количества секунд в минутке. Когда заканчивается цикл, рассчитываются деньки/месяца/года и итог выводится на экран.
3 Алгоритмизация модели решаемой задачи
4 Модульная структура приложения
4.1 Схема работы приложения
Набросок 1 – Схема работы программки
4.2 Описание главных процедур
Главные использованные процедуры в данной программке это:
-условия IF;
-циклы FOR;
-массивы;
-метки и переходы на метки GOTO.
5 Листинг программки
#include <iostream>
using namespace std;
int main()
{
int d=0, m=0, y=0, mas[50], v=0, db=0, h=0, min=0, sec=0, hb=0, minb=0, secb=0, yb=0, mb=0;
cout << «Vvedite svoy god rozhdeniya: «;
cin >> yb;
cout << «Vvedite svoy mesyac rozhdeniya: «;
cin >> mb;
cout << «Vvedite svoy den’ rozhdeniya: «;
cin >> db;
cout << «Vvedite svoy chas rozhdeniya: «;
cin >> hb;
cout << «Vvedite svoyu minutu rozhdeniya: «;
cin >> minb;
cout << «Vvedite svoyu sekundu rozhdeniya: «;
cin >> secb;
cout << «———————————————————————» << endl;
cout << «TEPER’ VVEDITE DANNIE ZNAMENATEL’NOY DATY, KOTORUYU VY HOTITE UZNAT'» << endl;
cout << «———————————————————————» << endl;
cout << «Vvedite god: «;
cin >> y;
cout << «Vvedite mesyac: «;
cin >> m;
cout << «Vvedite den’: «;
cin >> d;
cout << «Vvedite chas: «;
cin >> h;
cout << «Vvedite minuty: «;
cin >> min;
cout << «Vvedite sekundy: «;
cin >> sec;
if (y==0)
{
y=1;
}
if (m==0)
{
m=1;
}
if (d==0)
{
d=1;
}
if (h==0)
{
h=1;
}
if (min==0)
{
min=1;
}
if (sec==0)
{
sec=1;
}
y=y+(yb-1); // расчет дней, месяцев, лет
m=m+(mb-1);
d=d+(db-1);
h=h+(hb-1);
min=min+(minb-1);
sec=sec+(secb-1);
M:
if (h>23) // процедура расчета времени
{
h=h-24;
d++;
}
if (min>59)
{
min=min-60;
h++;
}
if (sec>59)
{
sec=sec-60;
min++;
goto M;
}
for (v=0; v<=49; v++) // цикл високосного года
{
mas[v]=1900+(4*(v+1));
}
N:
if (m==1 and d>31)
{
d=d-31;
m++;
}
for (v=0; v<=49; v++)
{
if (y==mas[v])
{
if (m==2 and d>29)
{
d=d-29;
m++;
}
goto L;
}
}
for (v=0; v<=49; v++)
{
if (y!=mas[v])
{
if (m==2 and d>28)
{
d=d-28;
m++;
}
}
}
L:
if (m==3 and d>31)
{
d=d-31;
m++;
}
if (m==4 and d>30)
{
d=d-30;
m++;
}
if (m==5 and d>31)
{
d=d-31;
m++;
}
if (m==6 and d>30)
{
d=d-30;
m++;
}
if (m==7 and d>31)
{
d=d-31;
m++;
}
if (m==8 and d>31)
{
d=d-31;
m++;
}
if (m==9 and d>30)
{
d=d-30;
m++;
}
if (m==10 and d>31)
{
d=d-31;
m++;
}
if (m==11 and d>30)
{
d=d-30;
m++;
}
if (m==12 and d>31)
{
d=d-31;
m++;
}
if (m>12 and d>1)
{
y++;
m=1;
goto N;
}
cout << «———————————————————————» << endl;
cout << «Data: » << d << «.» << m << «.» << y << endl;
cout << «Vremya: » << h << «:» << min << «:» << sec << endl;
cout << «———————————————————————«;
return 0;
}
6 Описание процесса отладки программки
for (v=0; v<=49; v++)
{
if (y==mas[v])
{
if (m==2 and d>29)
{
d=d-29;
m++;
}
goto L;
}
}
for (v=0; v<=49; v++)
{
if (y!=mas[v])
{
if (m==2 and d>28)
{
d=d-28;
m++;
}
}
}
L:
одна из ошибок разрабатываемой программки. Программка рассчитывала дату, не беря во внимание високосные года.
В итоге Неувязка была решена с помощью метки (L). Если производится цикл с високосным годом, т.е. с учетом 20 9 дней в феврале, тогда не должен производиться цикл с двадцати-восьмидневным февралем.
Потому при выполнении цикла с високосным одом (двадцати-девятидневным февралем) по окончанию цикла программка перебегает на метку L, перескакивая цикл с двадцати-восьмидневным февралем.
7 Тестирование приложения
Набросок 2 – Тестирование программки
Введены данные рождения юзера:
Год: 1991
Месяц: 1 (январь)
денек: 4
время: 6:00:00
Введены данные расчета знаменательной даты:
Год: 10ый
Месяц: 100ый
денек: 1000ый
Час: 10000ый
Минутка: 100000ая
Секунда: 1000000ая
Итог:
Десятый год, сотый месяц, тысячный денек, десятитысячный час, стотысячная минутка, миллионная секунда жизни юзера была:
Дата: 8.02.2005
Время: 21:25:39
8 {Инструкция} для юзера приложения
Опосля пуска программка просит ввести год рождения юзера:
С клавиатуры вводится год рождения, потом нажимается Ввод. Дальше программка просит ввести месяц рождения:
Месяц рождения вводится цифрой, нажимается Ввод и последующее сообщение это «Введите денек рождения»:
Вводится денек рождения, нажимается Ввод. сейчас когда мы ввели дату рождения программка просит ввести время рождения. Если юзер не помнит либо не понимает собственного времени рождения, то можно поставить просто «0». Поначалу программка спросит час рождения:
Вводится час рождения либо «0», нажимается Ввод и последующий шаг это ввести минутку рождения:
Вводится минутка рождения либо «0» и нажимается Ввод. И крайний шаг введения собственных данных это введение секунды рождения:
Нажимается Ввод. сейчас когда все данные о рождении юзера введены покажется последующее сообщение:
Это означает, что на данный момент необходимо будет вводить данные знаменательной даты, которую юзер желает выяснить.
1-ый шаг это год. тут также быть может введён «0» если юзер не желает выяснить знаменательную дату с точностью до года:
Нажимается Ввод. 2-ой шаг – месяц. Вводится количество месяцев или «0»:
Нажимается Ввод. 3-ий шаг – денек. Обычно самое нередко вводимое юзер обычно желает знать собственный 100ый, либо 1000000ый денек жизни). Вводится количество дней, или «0»:
Нажимается Ввод. 4-ый шаг – час. Если необходимо выяснить знаменательную дату с точностью до часа, то вводится количество часов. Также можно ввести «0»:
Нажимается Ввод. 5-ый шаг – минутка знаменательной даты. Вводится количество минут, или «0»:
Нажимается Ввод. Крайний шаг программки это ввод секунды знаменательной даты. Тоже обычно нередко вводимое секунду собственный жизни и т.д.):
Нажимается Ввод.
Ввод данных закончен. сейчас программка рассчитывает знаменательную дату, исходя из введенных юзером данных и выводит дату и время на экран. К примеру:
Пример расчета 1000го денька:
Набросок 3 – Пример расчета тысячного денька
Дата и время рождения юзера: 16.03.1989, 7:00;
Тысячный денек юзера: 10.12.1991, 7:00.
Заключение
В итоге курсового проектирования были достигнуты последующие цели:
-была написана программка, которая рассчитывает знаменательные даты жизни (к примеру 100ый денек вашей жизни либо 100000ая секунда вашей жизни и т.д.).
В курсовом проекте было рассмотрено описание предметной области, главные элементы среды программирования C++, описаны применяемые составляющие, процедуры и способности языка программирования C++. Рассмотрен процесс сотворения программки.
Кроме этого было создано управление юзера по работе с программным средством.
Перечень использованной литературы
1 Ватсон А. C++ На примерах, 2008.
2 Мартин К.С. Принципы, паттерны и методики гибкой разработки на языке С++, 2011.
3 Фленов М. Библия C++, 2011.
4 Хортон А. Visual C++ полный курс, 2010.
5 Шилдт Г. C++ полное управление.
]]>