Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Основные структуры алгоритмов: сравнительный анализ и примеры их использования

Содержание:

Введение

Курсовая работа представляет собой написание программного кода на языке С++. В ней будут рассмотрены задания: Попадает ли точка в заштрихованную фигуру, поиски переменных, различных массивов и индексов, производится вычисления в уравнениях. Для выполнения этих задач использовалась программа VisualStudio 2015. Так же под каждым заданием будет добавлено изображение с выполнением проверки на правильность написания программы и выводом ответа.

1.1 Описание языка программирования

С++ - это универсальный язык программирования, задуманный так, чтобы сделать программирование более приятным для серьезного программиста. За исключением второстепенных деталей С++ является надмножеством языка программирования C. Помимо возможностей, которые дает C, С++ предоставляет гибкие и эффективные средства определения новых типов. Используя определения новых типов, точно отвечающих концепциям приложения, программист может разделять разрабатываемую программу на легко поддающиеся контролю части. Такой метод построения программ часто называют абстракцией данных. Информация о типах содержится в некоторых объектах типов, определенных пользователем. Такие объекты просты и надежны в использовании в тех ситуациях, когда их тип нельзя установить на стадии компиляции. Программирование с применением таких объектов часто называют объектно-ориентированным. При правильном использовании этот метод дает более короткие, проще понимаемые и легче контролируемые программы.

Ключевым понятием С++ является класс. Класс - это тип, определяемый пользователем. Классы обеспечивают сокрытие данных, гарантированную инициализацию данных, неявное преобразование типов для типов, определенных пользователем, динамическое задание типа, контролируемое пользователем управление памятью и механизмы перегрузки операций. С++ предоставляет гораздо лучшие, чем в C, средства выражения модульности программы и проверки типов. В языке есть также усовершенствования, не связанные непосредственно с классами, включающие в себя символические константы, inline-подстановку функций, параметры функции по умолчанию, перегруженные имена функций, операции управления свободной памятью и ссылочный тип. В С++ сохранены возможности языка C по работе с основными объектами аппаратного обеспечения (биты, байты, слова, адреса и т.п.). Это позволяет весьма эффективно реализовывать типы, определяемые пользователем.

С++ и его стандартные библиотеки спроектированы так, чтобы обеспечивать переносимость. Имеющаяся на текущий момент реализация языка будет идти в большинстве систем, поддерживающих C. Из С++ программ можно использовать C библиотеки, и с С++ можно использовать большую часть инструментальных средств, поддерживающих программирование на C.

Являясь одним из самых популярных языков программирования, язык С++ широко используется для разработки программного обеспечения. Область его применения включает создание операционных систем, разнообразных прикладных программ, драйверов устройств, приложений для встраиваемых систем, высокопроизводительных серверов, а также развлекательных приложений (например, видеоигры).

1.2 Программирование линейных алгоритмов

Задание 1.

Составить программу вычисления значения функции. Исходные значения ввести с клавиатуры.

Словесный алгоритм:

  • Ввод исходных данные x, z, b.
  • Вычисление значения переменной h (выражение).
  • Вывод результата на экран.

Описание переменных

x,z,b – Исходные

h–Выражение

Листинг представлен на рисунке 1

#include <iostream>

using namespace std;

int main()

{

int x, z, b;

double h;

cout<<"Введите значение x=";

cin >> x;

cout<<"Введите значение z=";

cin >> z;

cout<<"Введите значение a=";

cin >> b;

h = (1 + pow(sin(x), 3.0)) / pow(z, 2.0) + pow(cos(x), 2.0) + (pow(log(x), 2.0) + b) / pow(x, 4.0);

cout<<"Ответ h="<< h <<endl;

system("pause");

return 0;

}

Рис.1. Листинг программы

Результат выполнения программы представлен на рисунке 2

Рис.2. Результат выполнения программы

Задание 2.

Решить задачу для индивидуального варианта.

Известна длина окружности. Найти площадь квадрата, периметр которого равен длине окружности.

Листинг представлен на рисунках 3

#include <iostream>

using namespace std;

int main()

{

float с, s;

cout<<"Введите значение с=";

cin >> C;

s = pow((C / 4), 2.0);

cout<<"Ответ s="<< s <<endl;

system("pause");

}

Рис.3. Листинг программы

Результат выполнения программы представлены на рисунке 4

Рис.4. Результат выполнения программы

1.3 Программирование разветвляющихся алгоритмов

Задание 3.

Даны два вещественных числа x и y. Определить, попадает ли точка с координатами x, y в заштрихованную область.

1

y

-1

1

x

-1

  • Вводим исходные данные x и y
  • Проверяем попадает ли точка в область ограниченную линиями

Если попадает, то проверяем попадает ли в область

y<=x+1, y>=x-1, y>=-x-1, y<=-x+1

  • Если точка попала в указанную область, то выводим на экран «Точка попадает»
  • В противном случае «точка не попадает»

Описание переменных

x, y – Координаты

Листинг представлен на рисунке 5

#include <iostream>

using namespace std;

int main()

{

setlocale(LC_ALL, "Russian");

float x, y;

cout << "Введите значения x = " << endl;

cin >> x;

cout << "Введите значения y = " << endl;

cin >> y;

if (sqrt(pow(x, 2) + pow(y, 2)) <= 1)

if (y<= x+1 && y>=x-1 && y>= -x-1 && y<= -x+1)

cout << "Не попадает" "\n";

else

cout << "Попадает" "\n";

else

cout << "Не попадает" "\n";

system("pause");

}

Рис.5. Листинг программы

Результаты выполнения программы представлены на рисунке 6.

Рис.6. Результаты выполнения программы

Задание 4.

Разработать программу в соответствии с заданием.

Единицы длины пронумерованы следующим образом: 1 – дециметр, 2 – километр, 3 – метр, 4 – миллиметр, 5 – сантиметр. Дан номер единицы длины ( целое число в диапазоне 1-5) и длина отрезка в этих единицах (вещественное число). Найти длину отрезка в метрах.

Словесное описание алгоритма.

  • Выбираем номер единицы длины (n)
  • Ввод значения длины (l)
  • В зависимости от выбранной единицы длины будет производится перевод в метры. Результат выводим на экран.

Описание переменных

n – номер единицы длины

l – длина в заданных единицах

Листинг представлен на рисунке 7

#include <iostream>

using namespace std;

void main(void)

{

setlocale(LC_ALL, "Russian");

int n;

double l;

cout << "Введите номер единицы длины [от 1 до 5]: ";

cin >> n;

cout << "Введите длину: ";

cin >> l;

cout << "\n";

switch (n)

{

case 1: cout << l << " дм = " << l * 0.1 << " м\n\n";

break;

case 2: cout << l << " км = " << l * 1000 << " м\n\n";

break;

case 3: cout << l << " м - заданная длина уже в метрах\n\n";

break;

case 4: cout << l << " мм = " << l * 0.001 << " м\n\n";

break;

case 5: cout << l << " cм = " << l * 0.01 << " м\n\n";

break;

default: cout << "Неверно введён номер единицы длмны\n\n";

break;

}

system("pause");

}

Рис.7. Листинг программы

Результаты выполнения программы представлены на рисунке 8

C:\Users\Домашний\Desktop\zadanie4resnew.bmp

Рис.8. Результаты выполнения программы

1.4 Программирование программы цикличных структур

Задание 5.

Разработать программу вычисления значений функции . Интервал изменения переменных ввести с клавиатуры. Шаг изменения переменных: .

  • Ввод исходных данные xn-(начальное), xk-(конечное), zn-(начальное), zk-(конечное).
  • Вычисление значения переменной y (выражение).
  • Результат выводим на экран.

Описание переменных

xn, zn – начальные значения переменных x и z.

xk, zk – конечные значения переменных x и z.

x – счетчик цикла

z – счетчик цикла

y –y значения функций

Листинг представлен на рисунке 9

#include"iostream"

using namespace std;

int main()

{

setlocale(LC_ALL, "Russian");

int xn, xk;

double zn, zk;

cout << "Введите значение xn: ";

cin >> xn;

cout << "Введите значение xk: ";

cin >> xk;

cout << "Введите значение zn: ";

cin >> zn;

cout << "Введите значение zk: ";

cin >> zk;

int x;

double z, y;

for (x = xn; x <= xk; x++)

{

z = zn;

do

{

y = pow(sin(x), 2.0) + cos(z);

cout << "x=" << x << " z=" << z << " y=" << y << "\n";

z = z + 0.5;

} while (z <= zk);

}

system("pause");

}

Рис.9. Листинг программы

Результаты выполнения программы представлены на рисунке 10

C:\Users\Домашний\Desktop\zadanie5resnew.bmp

Рис.10. Результаты выполнения программы

1.5 Работа с массивами

Задание 6.

Найти К-й отрицательный элемент массива.

Словесный алгоритм

  • Заполняем массив (mas)данными.
  • Вывод на экран массива.
  • Поиск К-го отрицательного числа массива.
  • Результат выводим на экран.

2. Описание переменных

mas – Массив

k – к –й отрицательный элемент массив

kt – счетчик отрицательных элементов массива

i – счетчик массива

in – номер к-ого отрицательного числа массива

n – разрядность

Листинг предоставлен на рисунке 11

#include <iostream>

using namespace std;

void main(void)

{

setlocale(LC_ALL, "Russian");

const int n = 5;

int mas[n], i, k, kt = 0, in = 1;

cout << "Введите элементы массива\n";

for (i = 0; i < n; i++)

{

cout << "mas(" << i << ") = ";

cin >> mas[i];

}

cout << "\n\n Ваш массив: \n";

for (i = 0; i < n; i++)

{

cout << "mas(" << i << ") = " << mas[i] << "\n";

}

cout << "\n\n Введите k = ";

cin >> k;

for (i = 0; i < n; i++)

if ((mas[i] < 0) && (kt < k))

{

in = i;

kt++;

}

cout << "\n";

if (k == kt)

cout << "mas(" << in << ") = " << mas[in] << " является "

<< k << "-м отрицательным элементом массива";

else

cout << k << "-го отрицательного элемента нет!\n";

system("pause");

}

Результат выполнения программы предоставлен на рисунке 11

C:\Users\Домашний\Desktop\Алгоритмизация\Zadanie6res.bmp

Рис.11. Результат выполнения программы.

2.1 Обоснование выбора языка программирования и среды разработки Embarcadero Rad Studio

При выполнении курсовой работы была возможность выбора языка программирования из языков высокого уровня, таких как Python, Object Раsса1, С++, С и др. Для написания программы был выбран язык С++.

Язык С++ считается языком системного программирования, хотя он удобен и для написания прикладных программ. Среди преимуществ языка С++ следует отметить переносимость программ на компьютеры различной архитектуры и из одной операционной системы в другую, лаконичность записи алгоритмов, логическую стройность программ, а также возможность получить программный код, сравнимый по скорости выполнения с программами, написанными на языке ассемблера. Последнее связано с тем, что хотя С++ является языком высокого уровня, имеющим полный набор конструкций структурного программирования, он также обладает набором низкоуровневых средств, обеспечивающих доступ к аппаратным средствам компьютера. С 1989 года язык С++ регламентируется стандартом Американского института национальных стандартов ANSI С.

ООП дает программистам три важных преимущества. Первое состоит в упрощении программного кода и улучшении его структуризации. Программы стали проще для чтения и понимания. Код описания классов, как правило, отделен от кода основной части программы, благодаря чему над ними можно работать по отдельности, все это в свою очередь упрощает процесс отладки и сопровождения программы. Второе преимущество заключается в том, что модернизация программ становится несравнимо более простой задачей. Чаще всего она сводится к добавлению нового класса, который наследует все свойства одного из имеющихся классов и содержит требуемые дополнительные методы. Третье преимущество состоит в том, что одни и те же классы можно много раз использовать в разных программах. Удачно созданный класс можно сохранить отдельно в библиотечном файле, и его добавление в программу, как правило, не требует внесения серьезных изменений в текст.

Для разработки программы была выбрана и среда Embarcadero Rad Studio [15]. К будущей среде программирования были предоставлены следующие требования:

  • максимальная простота и доступность. Программа должна иметь дружественный и понятный интерфейс, позволяющий оперативно реагировать на изменения параметров;
  • программа должна иметь понятную и простую установку;
  • программа должна работать быстро.

Все разрабатываемые приложения среды ориентированы на операционные системы линейки Windows и предоставляет разработчику возможности создания необходимого графического интерфейса системы.

Так как подавляющее большинство пользователей персональных компьютеров имеют практические навыки только в ОС Windows, то интерфейс комплекса станет для них привычным в использовании.

Для запуска программы не будет необходимости устанавливать дополнительные библиотеки или устанавливать компилятор, необходимо будет просто установить программу и приступить к работе. Имеющаяся библиотека визуальных компонентов позволяет создать удобный интерфейс для пользователя. Компонентный принцип, используемый в C++, позволяет создавать полноценные Windows-приложения, написав минимальное количество строк кода. Программы, разрабатываемые на языке С++ не имеют в своем составе скрытых строчек кода, которые могут стать причиной утечки или потери информации.

Таким образом, среда Embarcadero Rad Studio и язык программирования C++ полностью удовлетворяют предоставленным требованиям.

Заключение

В данной работе мы научились основам языка программирования С++, а также на базовом уровне научились работать с программой VisualStudio 2015. Все это было применено для решения заданий в данной работе.

Список использованных источников

1. Александреску, А. Язык программирования D / А. Александреску. — М.: Символ, 2013. — 536 c.

2. Александреску, А. Язык программирования D / А. Александреску. — СПб.: Символ-плюс, 2014. — 544 c.

3. Голицына, О.Л. Языки программирования: Учебное пособие / О.Л. Голицына, Т.Л. Партыка, И.И. Попов. — М.: Форум, НИЦ ИНФРА-М, 2013. — 400 c.

4. Страуступ, Б. Язык программирования С++. Специальное издание / Б. Страуступ. — М.: Бином, 2015. — 1136 c.

5. Ашарина, И.В. Основы программирования на языках С и С++: Курс лекций для высших учебных заведений / И.В. Ашарина. — М.: Гор. линия-Телеком, 2012. — 208 c.

6. Microsoft, Руководство пользователя по VisualStudio, https://msdn.microsoft.com/ru-ru/library/dd831853.aspx.