Файл: Алгоритмизация как обязательный этап разработки программы (Подходы к разработке программных систем).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 24.05.2023

Просмотров: 55

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Один из повторяющихся пунктов критики при практическом использовании agile-подхода является частое пренебрежение созданием планов («дорожной карты») развития программной системы, равно как и управлением комплексом требований, в процессе которого и формируется такая «карта». Использование гибкого подхода в управлении требованиями не подразумевает далеко идущих планов для разработчиков команды, а подразумевает наличие возможностей заказчика неожиданно в конце любой итерации реализации проекта выставить новые требования, в большинстве случаев, которые будут противоречить архитектуре уже разработанной и поставляемой программной системы. Такой подход к разработке в некоторых случаях приводит к катастрофическим «авралам» с массовым рефакторингом и необходимость в множестве переделок практически на всех очередных итерациях.

Кроме того, считается, что работа в рамках использования методологии Agile позволяет мотивировать команду разработчиков решать все поступающие задачи быстрейшим и простейшим возможным способом, при этом, в большинстве случаев не обращая большого внимания на правильность полученного программного кода с точки зрения установленных требований нижележащей платформы. Это приводит к некоторому снижению качества программной системы и накоплению различных дефектов.

Таким образом, использование описанных методологий позволяет регламентировать полный спектр процессов разработки и алгоритмизации, в частности. Алгоритмизация программной системы неотделима от процессов разработки, в связи с чем, необходимо четко представлять полный цикл работ для получения конечного результата проекта. Также, важным элементом разработки программной системы является подбор средств разработки, языка программирования.

2. Средства разработки программных систем

2.1. Характеристика языка программирования С++

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


Язык программирования С++ в полной мере поддерживает такие парадигмы программирования, как объектно-ориентированное программирование, процедурное программирование, обобщённое программирование. Язык программирования С++ имеет достаточно богатую стандартную библиотеку, включающая в себя специализированные алгоритмы и распространённые контейнеры, функции ввода-вывода, регулярные выражения, есть поддержка многопоточности и другие уникальные возможности. Язык программирования C++ сочетает в себе специализированные свойства как высокоуровневых, так и низкоуровневых языков программирования. В сравнении с его прямым предшественником – языком программирования C, – наибольшее внимание в языке программирования С++ было уделено поддержке концепций объектно-ориентированного и обобщённого программирования [11].

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

Существует большое количество практических реализаций языка программирования C++, как бесплатных, так и на коммерческой основе и для различных операционных систем. Например, на платформе x86 это GCC, Visual C++, Intel C++ Compiler, Embarcadero (Borland) C++ Builder и другие. Язык программирования C++ оказал большое влияние на другие языки программирования, в первую очередь на языки программирования Java и C#.

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

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


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

Доступ к возможностям стандартной библиотеки языка программирования C++ обеспечивается при помощи включения в прикладную программу (посредством использования директивы #include) необходимых стандартных заголовочных файлов. Всего в стандарте языка программирования C++11 определено 79 таких файлов. Средства стандартной библиотеки объявляются как входящие в пространство имён std [1]. Стандартные функции библиотеки C также находятся в пространстве имён std.

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

Таким образом, язык программирования С++ имеет необходимый комплекс возможностей для разработки программ любой сложности и эффективной алгоритмизации программных систем.

2.2. Массивы в языке программирования

Алгоритмизация представляет собой описание очередности выполнения различных операций, необходимых для решения той или иной задачи в форме алгоритма. Использование массивов в программах является достаточно частым и необходимым условием получение необходимого результата.

Массив представляет собой конечную последовательность упорядоченных элементов одного типа, доступ ко всем элементам в которой выполняется по средствам использования его индекса [14]. Массив представляет собой специализированную структуру данных, которая представлена в виде группы ячеек одного типа, объединенных под одним единым именем. Массивы используются для непосредственной обработки большого количества однотипных данных.


Размер или длина массива представляет собой общее количество элементов определенного массива. Размер массива может быть задан в процессе создания массива и не может быть изменён в процессе дальнейшего выполнения программы, т.е. нельзя будет убрать единый элементы из массива или выполнить добавление их туда, но в тоже время можно будет достаточно быстро в существующие элементы присвоить любые другие значения [8].

Отдельная ячейка данных массива называется элементом массива. Элементами массива могут быть данные любого доступного типа. Массивы могут иметь как одно, так и более одного измерений. В зависимости от количества таких измерений массивы можно поделить на одномерные массивы, двумерные массивы, трёхмерные массивы и так далее до n-мерного массива.

Чаще всего в процессе программирования используются одномерные и двумерные массивы, поэтому можно рассмотреть только эти виды массивов для понимания данной темы.

Индекс начального элемента будет равен 0, следующего за ним будет равен 1 и т.д. Индекс последнего элемента в массиве – будет на единицу меньше, чем размер исходного массива. Графическое представление массива можно представить в виде следующей схемы, представленной на рис. 1.

Рисунок 1 – Графическое представление массива

Одномерный массив представляет собой массив, с одним параметром, который характеризует количество элементов одномерного массива. Фактически одномерный массив представляет собой массив, у которого может быть только одна строка, и n-е количество столбцов. Столбцы в одномерном массиве являются элементами массива.

Для объявления одномерного массива в языке программирования С++ необходимо выполнить следующую инструкцию:

int a[16];

где, int представляет собой целочисленный тип данных;

а является именем создаваемого одномерного массива;

значение 16 представляет собой размер созданного одномерного массива, 16 ячеек.

Всегда сразу после имени массива будут идти квадратные скобки, в которых необходимо задать размер одномерного массива, этим массив и отличается от всех остальных переменных.

Также, еще есть один способ для объявления одномерного массива

int m[10], a[16];

В представленном примере были объявлены два одномерных массива m и а размерностью 10 и 16. Причём при использовании такого способа объявления все созданные массивы будут иметь одинаковые типы данных, в представленном случае - int.


Массивы в языке программирования С++ могут быть инициализированы при их непосредственном объявлении следующим образом:

int m[16] = { 5, -13, -13, 9, 13, 0, -9, -13, -1, 23, 61, 63, 13, 43, 33, -14 };

Инициализация одномерного массива может быть выполнена в фигурных скобках после специального знака равно, каждый отдельный элемент массива должен быть отделен от предыдущего запятой.

Инициализации массива без определения его размера может быть выполнена следующим образом

int m[]={ 5, -11, -11, 9, 11, 0, -9, -11, -1, 21, 61, 61, 11, 41, 31, -11 };

В данном случае компилятор языка программирования С++ сам сможет определить размер объявленного одномерного массива. Размер данного массива можно не указывать только при его практической инициализации, при обычном объявлении массива обязательно необходимо указать размер массива.

2.3. Резервирование памяти для массива и его инициализация

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

Для объявленного myFirstArrays, зарезервируем память при помощи практического использования ключевого слова new.

int[] myFirstArrays; // объявляем массив

myFirstArrays = new int[20]; // резервируем память

В данном примере будет создан массив из 20 элементов типа int и присвоено ему ранее объявленной переменной myFirstArrays.

Объявить имя массива и выполнить резервирование для него памяти также можно выполнить одной строкой.

int[] myArrays = new int[15];

В процессе создания массива при помощи использования ключевого слова new, все элементы массива в автоматическом режиме будут инициализироваться нулевыми значениями. Для присвоения элементам массива своих начальных значений, нужно выполнить его непосредственную инициализацию. Инициализация может быть выполнено как поэлементно

myFirstArrays[0] = 11; // выполнение инициализации первого элемента

myFirstArrays[1] = 21; // выполнение инициализации второго элемента

myFirstArrays[2] = 31; // и т.д.

так и в программном цикле, при помощи индекса элемента массива проходя все элементы обрабатываемого массива и присваивая им необходимые числовые значения [3].

for(int i = 0; i < 20; i++){

myFirstArrays[i] = 11; // присваиваем всем элементам массива 11

}

Как видно из представленных примеров, для того, чтобы выполнить обращение к необходимому элементу массива, нужно указать его имя и, потом, в квадратных скобках необходимый индекс элемента массива. Все элементы обрабатываемого массива с конкретным индексом ведут себя также, как и переменные.