Математические методы и средства решения задачи
Содержание
Введение………………………………………………………………………. 3
1. Постановка задачи…………………..……………………………………… 4
2. Математические методы и средства решения задачи……….…..……. 5 - 9
3. Описание данных…………………………………………………..……. 10-11
4. Алгоритмы………………………………………………..……………… 12-13
4.1 Словесное описание………………………………………………………. 12
4.2 Псевдокод………………………………………………………………….. 13
4.3 Блок схема…………………………………………………………………. 13
5. Программа на языке СИ++…………………………………………………. 14
6. Тестовый пример……………………………………………………………. 15
7. Руководство пользователя для работы с программой……………………. 16
8. Заключение………………………………………………………………..… 16
9. Список литературы …………………………………………………… ….. 17
Введение
Цель курсовой работы, это закрепление и демонстрация знаний полученных при изучении курса информатика. Выполнение работы требует творческого подхода, а так же всестороннего исследования поставленной задачи. Основными этапами курсовой работы являются:
1. анализ поставленной задачи.
2. выбор обоснования изложения метода решения поставленной задачи.
3. построение алгоритма решения задачи.
4. создание и отладка программы.
5. разработка комплекта тестов для проверки правильности работы.
6. оформление пояснительной записки.
7. защита курсовой работы.
Постановка задачи.
Работа над курсовой начинается с изучения материала по заданной теме, но чтобы результат изучения был наиболее эффективным, правильнее будет в первую очередь поставить для себя четкие цели и задачи. То есть определить, что в итоге должно стать окончательным выводом по проделанной работе.
Определяя для себя задачи курсовой работы, я исходил из темы и плана раскрытия темы.
Итак, задачи моего варианта курсовой работы:
- проверить истинность высказывания: "Точка с координатами (х, у) лежит в четвёртой координатной четверти";
- закрепить знания, полученные на курсах информатики по работе с языком программирования С++, в том числе практические навыки работы с программой;
- используя дополнительную литературу пополнить знания по данной дисциплине.
Выполнение поставленных задач позволит мне повысить свой уровень подготовки в данной дисциплине.
Математические методы и средства решения задачи
Си++
Безусловно, Си++ восходит, главным образом, к Cи.
Си – это язык программирования общего назначения, хорошо известный своей эффективностью, экономичностью, и переносимостью. Указанные преимущества Си обеспечивают хорошее качество разработки почти любого вида программного продукта. Использование Си в качестве инструментального языка позволяет получать быстрые и компактные программы. Во многих случаях программы, написанные на Си, сравнимы по скорости с программами, написанными на языке ассемблера. При этом они имеют лучшую наглядность и их более просто сопровождать. Си сочетает эффективность и мощность в относительно малом по размеру языке.
Си – это замечательный язык, и хотя некоторым он не нравится, но все же большинство программистов его любят. На Си вы можете создавать программы, которые делают все, что вы пожелаете. Нет другого такого языка, который бы так же стимулировал к программированию. Создается впечатление, что остальные языки программирования воздвигают искусственные препятствия для творчества, а Си – нет. Использование этого языка позволяет сократить затраты времени на создание работающих программ. Си позволяет программировать быстро, эффективно и предсказуемо. Еще одно преимущество Си заключается в том, что он позволяет использовать все возможности вашей ЭВМ. Этот язык создан программистом для использования другими программистами, чего о других языках программирования сказать нельзя.
Cи сохранен как подмножество, поэтому сделанного в Cи акцента на средствах низкого уровня достаточно, чтобы справляться с самыми насущными задачами системного программирования. Cи, в свою очередь, многим обязан своему предшественнику BCPL.
Название Си++ - изобретение лета 1983-его. Более ранние версии языка использовались начиная с 1980-ого и были известны как "Cи с Классами". Первоначально язык был придуман потому, что автор хотел написать событийно управляемые модели для чего был бы идеален Simula67, если не принимать во внимание эффективность. "Cи с Классами" использовался для крупных проектов моделирования, в которых строго тестировались возможности написания программ, требующих (только) минимального пространства памяти и времени на выполнение. В "Cи с Классами" не хватало перегрузки операций, ссылок, виртуальных функций и многих деталей. Си++ был впервые введен за пределами исследовательской группы автора в июле 1983-го. Однако тогда многие особенности Си++ были еще не придуманы.
Название Си++ выдумал Рик Масситти. Название указывает на эволюционную природу перехода к нему от Cи. "++" - это операция приращения в Cи. Чуть более короткое имя Cи+ является синтаксической ошибкой, кроме того, оно уже было использовано как имя совсем другого языка. Знатоки семантики Cи находят, что Си++ хуже, чем Cи ++. Названия D язык не получил, поскольку он является расширением Cи и в нем не делается попыток исцелиться от проблем путем выбрасывания различных особенностей.
Си++ - это универсальный язык программирования, задуманный так, чтобы сделать программирование более приятным для серьезного программиста. За исключением второстепенных деталей Си++ является надмножеством языка программирования Cи. Помимо возможностей, которые дает Cи, Си++ предоставляет гибкие и эффективные средства определения новых типов. Используя определения новых типов, точно отвечающих концепциям приложения, программист может разделять разрабатываемую программу на легко поддающиеся контролю части. Такой метод построения программ часто называют абстракцией данных. Информация о типах содержится в некоторых объектах типов, определенных пользователем. Такие объекты просты и надежны в использовании в тех ситуациях, когда их тип нельзя установить на стадии компиляции. Программирование с применением таких объектов часто называют объектно-ориентированным. При правильном использовании этот метод дает более короткие, проще понимаемые и легче контролируемые программы.
Изначально Си++ был разработан, чтобы автору и его друзьям не приходилось программировать на ассемблере, Cи или других современных языках высокого уровня. Основным его предназначением было сделать написание хороших программ более простым и приятным для отдельного программиста. Плана разработки Си++ на бумаге никогда не было. Проект, документация и реализация двигались одновременно. Разумеется, внешний интерфейс Си++ был написан на Си++. Никогда не существовало "Проекта Си++" и "Комитета по разработке Си++". Поэтому Си++ развивался и продолжает развиваться во всех направлениях, чтобы справляться со сложностями, с которыми сталкиваются пользователи, а также в процессе дискуссий автора с его друзьями и коллегами.
T FACE="Times New Roman">
В качестве базового языка для Си++ был выбран Cи, потому что он:
- многоцелевой, лаконичный и относительно низкого уровня:
- отвечает большинству задач системного программирования:
- идет везде и на всем:
- пригоден в среде программирования UNIX.
В Cи есть свои сложности, но в наспех спроектированном языке тоже были бы свои, а сложности Cи нам известны. Самое главное, работа с Cи позволила "Cи с Классами" быть полезным (правда, неудобным) инструментом в ходе первых месяцев раздумий о добавлении к Cи Simula-подобных классов.
Си++ стал использоваться шире, и по мере того, как возможности, предоставляемые им помимо возможностей Cи, становились все более существенными, вновь и вновь поднимался вопрос о том, сохранять ли совместимость с Cи. Ясно, что отказавшись от определенной части наследия Cи можно было бы избежать ряда проблем. Это не было сделано, потому что:
есть миллионы строк на Cи, которые могли бы принести пользу в Си++ при условии, что их не нужно было бы полностью переписывать с Cи на Си++;
есть сотни тысяч строк библиотечных функций и сервисных программ, написанных на Cи которые можно было бы использовать из или на Си++ при условии, что Си++ полностью совместим с Cи по загрузке и синтаксически очень похож на Cи;
есть десятки тысяч программистов, которые знают Cи, и которым, поэтому, нужно только научиться использовать новые особенности Си++, а не заново изучать его основы;
поскольку Си++ и Cи будут использоваться на одних и тех же системах одними и теми же людьми, отличия должны быть либо очень большими, либо очень маленькими, чтобы свести к минимуму ошибки и недоразумения.
Позднее была проведена проверка определения Си++, чтобы удостовериться в том, что любая конструкция, допустимая и в Cи, и в Си++, действительно означает в обоих языках одно и то же.
Си++ был развит из языка программирования Cи и за очень немногими исключениями сохраняет Cи как подмножество. Базовый язык, Cи подмножество Си++, спроектирован так, что имеется очень близкое соответствие между его типами, операциями и операторами и компьютерными объектами, с которыми непосредственно приходится иметь дело: числами, символами и адресами. За исключением операций свободной памяти new и delete, отдельные выражения и операторы Си++ обычно не нуждаются в скрытой поддержке во время выполнения или подпрограммах.
Одним из первоначальных предназначений Cи было применение его вместо программирования на ассемблере в самых насущных задачах системного программирования. Когда проектировался Си++, были приняты меры, чтобы не ставить под угрозу успехи в этой области. Различие между Cи и Си++ состоит в первую очередь в степени внимания, уделяемого типам и структурам. Cи выразителен и снисходителен. Си++ еще более выразителен, но чтобы достичь этой выразительности, программист должен уделить больше внимания типам объектов. Когда известны типы объектов, компилятор может правильно обрабатывать выражения, тогда как в противном случае программисту пришлось бы задавать действия с мучительными подробностями. Знание типов объектов также позволяет компилятору обнаруживать ошибки, которые в противном случае остались бы до тестирования. Заметьте, что использование системы типов для того, чтобы получить проверку параметров функций, защитить данные от случайного искажения, задать новые операции и т.д., само по себе не увеличивает расходов по времени выполнения и памяти.
Особое внимание, уделенное при разработке Си++ структуре, отразилось на возрастании масштаба программ, написанных со времени разработки Cи. Маленькую программу (меньше 1000 строк) вы можете заставить работать с помощью грубой силы, даже нарушая все правила хорошего стиля. Для программ больших размеров это не совсем так. Если программа в 10 000 строк имеет плохую структуру, то вы обнаружите, что новые ошибки появляются так же быстро, как удаляются старые. Си++ был разработан так, чтобы дать возможность разумным образом структурировать большие программы таким образом, чтобы для одного человека не было непомерным справляться с программами в 25 000 строк. Существуют программы гораздо больших размеров, однако те, которые работают, в целом, как оказывается, состоят из большого числа почти независимых частей, размер каждой из которых намного ниже указанных пределов.
Естественно, сложность написания и поддержки программы зависит от сложности разработки, а не просто от числа строк текста программы, так что точные цифры, с помощью которых были выражены предыдущие соображения, не следует воспринимать слишком серьезно.
Замечание по проекту языка Си++
Существенным критерием при разработке языка была простота. Там, где возникал выбор между упрощением руководства по языку и другой документации и упрощением компилятора, выбиралось первое. Огромное значение также предавалось совместимости с Cи, это помешало удалить синтаксис Cи.
В Си++ нет типов данных высокого уровня и нет первичных операций высокого уровня. В нем нет, например, матричного типа с операцией обращения или типа строка с операцией конкатенации. Если пользователю понадобятся подобные типы, их можно определить в самом языке. По сути дела, основное, чем занимается программирование на Си++ - это определение универсальных и специально-прикладных типов. Хорошо разработанный тип, определяемый пользователем, отличается от встроенного типа только способом определения, но не способом использования.
Исключались те черты, которые могли бы повлечь дополнительные расходы памяти или времени выполнения. Например, мысли о том, чтобы сделать необходимым хранение в каждом объекте ”хозяйственной” информации, были отвергнуты. Если пользователь описывает структуру, состоящую из двух 16-битовых величин, то структура поместится в 32-битовый регистр.
Си++ проектировался для использования в довольно традиционной среде компиляции и выполнения, среде программирования на Cи в системе UNIX. Средства обработки особых ситуаций и параллельного программирования, требующие нетривиальной загрузки и поддержки в процессе выполнения, не были включены в Си++. Вследствие этого реализация Си++ очень легко переносима. Однако есть полные основания использовать Си++ в среде, где имеется гораздо более существенная поддержка. Такие средства, как динамическая загрузка, пошаговая трансляция и база данных определений типов могут с пользой применяться без воздействия на язык.
Описание данных
Типы данных языка C++ делятся на целые, с плавающей точкой, для арифметических операций , операций сравнения, производные:
Целые типы
- char - размер как для хранения символа, определяется машиной (обычно байт)
- short - размер, соответствующий целой арифметике на данной машине (обычно, слово)
- int
- long
- long long
Для всех целых типов есть unsigned аналоги. По умолчанию - знаковые (так что, например, signed int - то же самое, что int). Исключение - char. Его знаковость/беззнаковость зависит от реализации.
Использование представления чисел в форме с фиксированной точкой оказывается не всегда удобным в программировании поскольку может потребовать проведения масштабирования
3.2 С плавающей точкой
- float
- double
- long double
1 = sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long)
sizeof(float) <= sizeof(double) <= sizeof(long double)
3.3 Арифметические операции
- + (плюс, унарный и бинарный)
- - (минус, унарный и бинарный)
- * (умножение)
- / (деление)
Над целыми - операция % получения остатка: 7%2 = 1
3.4 Операции сравнения
- == (равно)
- != (не равно)
- <, >, <=, >=
Также логические операции ( &&, || ), побитовые операции(&, |, ^, <<, >>), а так же сокращённые формы многих операций: +=, -=, %=, &&=, ||=, &=, ++, -- (последние два имеют префиксные и постфиксные формы) и им подобные.
При присваивании и арифметических операциях C++ выполняет все осмысленные преобразования между основными типами, чтобы их можно было сочетать без ограничений.
3.5 Производные типы
- * - указатель на
- *const - константный указатель на
- & - ссылка на
- [] - вектор (одномерный массив), индексация с 0
- () - функция, возвращающая
- Унарное & - операция взятия адреса
Например:
char* p // указатель на символ
char *const q // константный указатель на символ
char v[10] // вектор из 10 символов
char c; p = &c; // p указывает на c
Алгоритмы
Одним из фундаментальных понятий в информатике является понятие алгоритма. Происхождение самого термина «алгоритм» связано с математикой. Это слово происходит от Algorithmi – латинского написания имени Мухаммеда аль-Хорезми (787 – 850) он сформулировал точное понятие алгоритма: алгоритм - точное предписание, определяющее последовательность действий, обеспечивающую получение требуемого результата из исходных данных
Алгоритм может быть предназначен для выполнения его человеком или автоматическим устройством
свойства
• Дискретность (прерывность, раздельность) – алгоритм должен представлять процесс решения задачи как последовательное выполнение простых (или ранее определенных) шагов. Каждое действие, предусмотренное алгоритмом, исполняется только после того, как закончилось исполнение предыдущего.
• Определенность – каждое правило алгоритма должно быть четким, однозначным и не оставлять места для произвола. Благодаря этому свойству выполнение алгоритма носит механический характер и не требует никаких дополнительных указаний или сведений о решаемой задаче.
• Результативность (конечность) – алгоритм должен приводить к решению задачи за конечное число шагов.
• Массовость – алгоритм решения задачи разрабатывается в общем виде, то есть, он должен быть применим для некоторого класса задач, различающихся только исходными данными. При этом исходные данные могут выбираться из некоторой области, которая называется областью применимости алгоритма.
4.1 Словесное решение задачи
Нам даны два числа Х, У. Требуется проверить истинность высказывания:"Точка с координатами (Х ,У) лежит в четвёртой координатной четверти."
Чтобы определить лежит ли точка в четвёртой четверти нужно ввести несколько неравенств.
Зная тот факт что точка лежашяя в четвёртой четверти имеет отрицательную координату Х
и положительную координату У составим следуюшее неравенство X<0,Y>0 если координаты точки удовлетворят неравенству значит она лежит в четёртой координатной четверти, иначе она находится в любой другой плоскости.
4.2 Псевдокод
#include <stdio.h>
(Задаём способ решения)
main()
int X Y;
(Вводим исходные числа)
if(X<0,Y>0)(True)
else(False)
(завершение программы)\
4.3 Блок схема
5. Программа на языке С++
#include<stdio.h>
#include<conio.h>
main()
{float a, b;
printf("Input X Y");
scanf("%f%f",&a,&b);
if((b>0)&&(a<0)) printf("The number is in the fourth coordinate plane");
else printf("The number is out of the fourth coordinate plane");
getch();}
Тестовый пример
1) Даны, неудовлетворяющие условие, числа
2) Даны, удовлетворяющие условия, числа