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

Основные правила работы с функциями: примеры и ограничения использования функций в различных языках программирования (ПОНЯТИЯ О ПРОГРАММИРОВАНИИ)

Содержание:

ВВЕДЕНИЕ

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

Но, стоит отметить, тот факт, что непосредственное использование многих персональных компьютеров (ПК) для реализации самых первых программ на машинном языке было очень затруднительным.

Поэтому от непосредственного его применения пришлось со временем отказаться.

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

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

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

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

Задачи курсовой работы следующие:

– выполнить рассмотрение основных определений по теории ЯП высокого уровня;

  • описать принципы модульного программирования на языке С++, как отдельной парадигмы для написания программ;
  • привести методику написания функций на языке VBA;
  • на практике рассмотреть принципы использования модульных программ в С++;
  • разработать программы, используя модульный подход организации ПО в VBA.

Объектом работы являются ЯП высокого уровня.

Предмет работы – методология применения функций в программировании.

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

ПОНЯТИЯ О ПРОГРАММИРОВАНИИ

1.1. Определение программирования

Программирование – это быстро развивающаяся и сравнительно молодая отрасль науки.

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

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

На рисунке 1 показана технология для написания программного кода для общего случая:

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

Как любая иная технология, технология написания программ представляет собой совокупность технологических инструкций, что включают:

– указание множества выполнения программных технологических операторов;

– перечисление совокупности условий, при которых будет выполняться та или другая операция; [3]

– описания самих программных операций, где все операции определены для каждой единицы исходных данных, результаты, а также разные инструкции, стандарты, нормативы, критерии и методы для оценки программного кода и т. д. (рисунок 1).[3]

Рис. 1. Технологическая операция написания программы

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

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

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

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

1.2. Этапы развития программирования

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

Эволюция технологии программирования – это эволюция методологий написания и создания программ, а также эволюция языков программирования [5].

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

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

Архитектура программ была очень просто и имела такой вид (рисунок 2):

https://studfiles.net/html/2706/293/html_pOx_wx5xpm.4aDw/img-ZdAnvM.jpg

Рис.2. Архитектура программ первого этапа

На данном этапе наблюдались проблемы с тем, что данные являлись общедоступными, а, следовательно, была велика вероятность их неправильного применения (к примеру, одновременное использование одной переменной для многих целей). [15]

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

На втором этапе развития программирования методологией являлось структурное программирование.[12]

Архитектура создания программ имела следующий вид, который показан на рисунке 3:

https://studfiles.net/html/2706/293/html_pOx_wx5xpm.4aDw/img-KgxsxK.jpg

Рис.3. Архитектура программ на втором этапе развития программирования

На данном этапе наблюдались проблемы общей незащищенной области хранимых данных. Они со временем были решены, но не полностью, хотя все же появилась некоторая возможность применения локальных переменных в создаваемых подпрограммах.

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

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

На этом этапе появился метод проектирования программного обеспечения (ПО) – метод пошаговой детализации.[17]

К тому же впервые выделены 3 основных алгоритмических конструкции:

– цикл;

– следование;

– ветвление.

Стоит отметить, что и теперь они считаются полностью достаточными для построения практически любого алгоритма.[19]

На третьем этапе был развит модульный подход к написанию программных продуктов, архитектура которого имела такой вид (рисунок 4): [10]

Результат пошуку зображень за запитом "модульное программирование"

Рис.4. Принцип модульного программирования

Проблемы, что возникли на данном этапе такие:[6]

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

Также есть возможность иметь либо полностью готовые, либо полностью недоступные объекты и данные.

На данном этапе были решены такие основные проблемы:[10]

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

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

После прохождения таких этапов развития технологии проектирования программ были намечены следующие тенденции для их развития:[14]

– нужно мобильное (избирательное) ограничение для уровня доступности информации;

– все больше внимания уделяется проектированию данных, алгоритму для их непосредственного оперирования.

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

Громоздкость описания использует большие аппаратные ресурсы, а так же ограничивает сферу применения данного подхода для задач со сложной сферой реализации.[17]

При реализации данного этапа решены такие проблемы:

– каждая программа может состоять из модулей;

– модули могут содержать описание объектов и классов («активных» данных), а также методы (алгоритмы) строятся на основе активных данных.

В программе может отсутствовать область общих глобальных данных, основой при конструировании программы служат «активные» данные.

Защита в описываемых «активных» данных стала более мобильная.

На 4 этапе было развито объектно-ориентированное программирование (ООП).[6]

Термины «объектно-», а также «ориентированный» в современном смысле тогда не было.

Они появились в программировании в начале 1980 годов. В среде программистов по искусственному интеллекту понятие «объект» мог относиться также к идентифицированным элементам со свойствами и атрибутами.[9]

Алан Кэй писал позже, что понимание устройства Лиспа оказало огромное влияние на мышление программистов.

Сущность ООП можно изобразить рисунком 5:

Результат пошуку зображень за запитом "развитие ооп"

Рис.5. Сущность ООП

В результате развития данного подхода были применены

Объектно-ориентированное программирование определено как технология создания программного обеспечения, основанная на рассмотрении программы в качестве совокупности объектов, где каждый из которых будет экземпляром определенного класса, а классы, в свою очередь, образуют иерархию с выполнением наследованием свойств.[11]

Взаимодействие программных объектов для такой системы осуществляется путем передачи информации. Объектная структура программы была использована впервые в языке имитационного моделирования Simula, появившемся в конце 60-х годов XX в. [13]

Естественный для ЯП моделирования способ разработки программы получил развитие в ином специализированном языке моделирования, который имеет название Smalltalk, а затем применен в новых версиях языков программирования.

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

2. МОДУЛЬНОЕ ПРОГРАММИРОВАНИЕ

2.1. Основы модульного программирования в C++

Одной с самых распространенных методик создания ПО в настоящее время считается структурное программирование.

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

В результате ветви программы могут реализовываться разными группами программистов.[7]

Программа, разработанная по принципам структурного программирования, удовлетворяет таким требованиям:

– программа должна разделяться только на независимые части, что именуются модулями;

– модуль – независимый составной блок, код (программный текст) которого логически отделен от программного кода иных модулей;

– модуль выполняет лишь одну логическую функцию, другими словами, должен решать одну самостоятельную задачу для своего уровня по такому принципу: один модуль – одна функция;

– работа программного модуля зависеть не должна от следующих параметров:

– начальных данных;

– того, какому именно программному модулю предназначены исходные данные;

– предыстории использования программного модуля;

– непосредственно размер программного модуля надо ограничивать одной или двумя страницами листинга;

– каждый модуль должен применять только одну точку для входа и для выхода;

– взаимосвязи между разными модулями устанавливаются только по иерархической схеме;

– каждый модуль начинается комментариями, объясняющего его назначение, а также предназначение переменных, что передаются в модуль и с него, модулей, что его вызывают, а также модулей, которые могут из него вызываться;[13]

– стоит отметить, что оператор безусловного перехода, может вообще не применяться в модуле, или же применяется только в исключительных случаях и лишь для перехода на начальную точку модуля;

– для текста модуля необходимо применять комментарии, в особенности непосредственно в сложных местах выполнения алгоритма;

– идентификаторы модулей, локальных переменных должны быть смысловыми;

– в одной строке необходимо записывать не более, чем один оператор. Если для записи операторов требуется больше, нежели одна строка, то последующие операторы будут записаны с отступами;

– необходимо не допускать вложенности разных блоков операторов более 3-х уровней;

– также следует избегать применения языковых конструкций с плохой семантикой.[11]

Простейшим видом модульной структуры является подпрограмма.

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

На рисунке 6 показана классификация подпрограмм:

Результат пошуку зображень за запитом "подпрограммы"

Рис.6. Классификация подпрограмм

Использование подпрограмм дает возможность решить следующие основные задачи:[11]

– избавить от необходимости повторять многократно в тексте программы фрагменты кода;

– значительно улучшает читабельность кода программы, позволяя выявить легче ее логическую структуру, а также скрывая подробности вычислений;[7]

– повышает устойчивость к программным ошибкам и непредвидимым последствиям в случае модификации программы;

– уменьшает в общем случае объем применяемой памяти ЭВМ;

– выполняет сокращение время отладки ПО;

Выделим 2 основных критерия для создания подпрограммы.

– в случае, когда некоторая последовательность действий будет встречаться в программе более, чем 1 раз, следует выделить ее в отдельную подпрограмму.

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

Такой критерий менее четкий, нежели предыдущий. Хотя, его полезно применять в таких случаях:

– программа длинная – полностью очевидно, что объем увеличится, но сама программа будет более читабельной;

– если в программе применяются сложные алгоритмы: легко их можно отладить в подпрограмме отдельно в небольших так называемых тестирующих программах;

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

Все имеющиеся подпрограммы используют следующие свойства:

– Обмен информации между подпрограммами осуществляется через механизм так называемой передачи параметров (или аргументов).

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

Данные подпрограммы вызываются путем простой записи имени с указанием фактических параметров, хотя в разных языках программирования существуют также специальные операторы для непосредственного вызова подпрограмм. [1]

Подпрограмму, которая вызвала данную называют внешней в отношении к данной. Программа, что выполняется в данный момент, является активной.

Под главной программой (подпрограммой) понимается такая программа, которая вызывается непосредственно операционной системой (ОС).

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

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

Подпрограммы бывают основных двух видов – функции и процедуры. Процедура просто реализует группу операторов (к примеру, процедура вывода для матрицы), а функция, кроме этого, вычисляет некоторое значение, а также передает его в главную программу.

2.2.Использование подпрограмм в ЯП VBA

Процедура — это последовательность операторов VBA, расположенная в модуле VBA, доступ к которому можно получить с помощью VBE. Модуль может включать любое количество процедур.[1] Некоторые процедуры получают аргументы. Аргумент — это информация, используемая процедурой в процессе выполнения. Аргументы процедуры во многом подобны аргументам, используемым функциями Excel.

При объявлении процедуры с использованием ключевого слова Sub применяется следующий синтаксис.

[Private | Public][Static] Sub имя([список_аргументов])

[инструкции]

[Exit Sub]

[инструкции]

End Sub

Рис

Рис. 7. Запуск процедуры из Visual Basic Editor

Private (необязательное ключевое слово) – указывает на то, что процедура доступна только для других процедур в том же модуле.

Public (необязательное ключевое слово) – указывает на то, что процедура доступна для всех остальных процедур во всех модулях рабочей книги. При использовании в модуле, содержащем оператор Option Private Module, процедура будет недоступна за пределами проекта.[3]

Static (необязательное ключевое слово) – указывает на то, что переменные процедуры сохраняются после окончания процедуры.

Sub (обязательное ключевое слово) – обозначает начало процедуры.

Имя – любое корректное название процедуры.

Список_аргументов – представляет заключенный в скобки список переменных, содержащих аргументы, которые передаются в процедуру. Для разделения аргументов используется запятая. Если процедура не использует аргументы, то необходимо включить в объявление процедуры пустые скобки.

Инструкции (необязательные) – корректные инструкции VBA.

Exit Sub (необязательный оператор) – вызывает немедленный выход из процедуры до ее формального завершения.

End Sub (обязательный оператор) – указывает на завершение процедуры.

Функция — это процедура VBA, которая выполняет вычисления и возвращает значение. Функции можно использовать в коде VBA или в формулах Excel. Процедуру можно рассматривать как команду, которая выполняется пользователем или другой процедурой. С другой стороны, функция обычно возвращает отдельное значение (или массив) подобно функциям рабочих листов Excel и встроенным функциям VBA.

Excel содержит более 400 встроенных функций. Если этого количества недостаточно, можно создавать пользовательские функции с помощью VBA. Однако следует отметить, что функции VBA, используемые в формулах, обычно выполняются медленнее, чем встроенные функции Excel. Пользовательские функции отображаются в диалоговом окне Мастер функций наряду со встроенными функциями Excel.[7]

Рассмотрим пример пользовательской функции RemoveVowels (УдалитьГласные), которая принимает текстовый аргумент, удаляет все гласные буквы и возвращает текст, состоящий только из согласных.

Function RemoveVowels(txt) As String

' Удаляет все гласные звуки из аргумента txt

Dim i As Long

RemoveVowels = ""

For i = 1 To Len(txt)

If Not ucase(Mid(txt, i, 1)) Like "[AEIOUАЕИОУЮЭЯ]" Then

RemoveVowels = RemoveVowels & Mid(txt, i, 1)

End If

Next i

End Function

Функцию RemoveVowels можно использовать, например, в формуле в ячейке В1 =RemoveVowels (А1).

Пользовательские функции можно применять не только в формулах рабочего листа, но и в процедурах VBA. Например, процедура ZapTheVowels() сначала отображает окно для ввода текста пользователем, затем обрабатывает этот текст функцией RemoveVowels, и наконец использует встроенную функцию VBA MsgBox для отображения результатов. Первоначальные данные отображаются в заголовке окна сообщения.[18]

Sub ZapTheVowels()

Dim UserInput As String

UserInput = InputBox("Введите текст:")

MsgBox RemoveVowels(UserInput), vbInformation, UserInput

End Sub

Функция возвращает значение, но не может выполнять операции над объектами.

Из этого правила имеется одно ограничение. Можно изменить текст комментария ячейки с помощью пользовательской функции VBA:

Function ModifyComment(Cell As Range, Cmt As String)

Cell.Comment.Text Cmt

End Function

Например, можно ввести в ячейку В1 формулу =ModifyComment(А1,»Комментарий был изменен»). Функция не работает, если в ячейке А1 отсутствует комментарий.

Рассмотрим код функции RemoveVowels подробнее.

Функция начинается с ключевого слова Function, а не Sub, после которого указывается название функции (RemoveVowels). Эта специальная функция использует только один аргумент (Txt), заключенный в скобки. Ключевое слово As String определяет тип данных значения, которое возвращает функция. (Excel по умолчанию использует тип данных Variant, если тип данных не определен.)

Вторая строка — простой комментарий (необязательный), который описывает выполняемые функцией действия. После комментария приведен оператор Dim, который объявляет переменную (i), применяемую в функции. Тип этой переменной — Long. Далее в качестве переменной используется имя функции. Как только функция завершает свое выполнение, возвращается текущее значение переменной, которое соответствует названию функции.

Следующие пять инструкций образуют цикл For-Next. Процедура циклически просматривает каждый символ введенного текста, создавая на их основе строку. Первая инструкция в цикле использует функцию VBA Mid, которая возвращает единственный символ строки ввода, а также преобразует этот символ в символ верхнего регистра. Затем этот символ сравнивается со списком символов с помощью оператора VBA Like (подробнее см. Оператор Like). Другими словами, значение выражения If будет True, если символ отличен от символов А, Е, I, O, U, А, Е, И, О, У, Ы, Э, Ю и Я. В подобных случаях символ добавляется к переменной RemoveVowels.

По завершении цикла из строки ввода удаляются все гласные буквы. Эта строка и является значением, возвращаемым функцией RemoveVowels. Процедура завершается оператором End Function.

Для объявления функции применяется следующий синтаксис (элементы аналогичны обычной процедуре.

[Public | Private][Static] Function имя ([список_аргументов])[As тип]

[инструкции]

[имя = выражение]

[Exit Function]

[инструкции]

[имя = выражение]

End Function

Значение всегда присваивается названию функции минимум один раз и, как правило, тогда, когда функция завершила выполнение. Создание пользовательской функции начинается с создания модуля VBA (можно также использовать существующий модуль). [14]

Имена функций подчиняются тем же правилам, что и имена переменных. Если надо использовать функцию в формуле рабочего листа, убедитесь, что название не имеет форму адреса ячейки. Также не присваивайте функциям имена, которые соответствуют названиям встроенных функций Excel. Если область действия функции не задана, то по умолчанию подразумевается Public. Функции, объявленные как Private, не отображаются в диалоговом окне Мастер функций.

Функцию можно вызвать одним из следующих способов:

– вызвать ее из другой процедуры;

– включить ее в формулу рабочего листа;

– включить в формулу условного форматирования;

– вызвать ее в окне отладки VBE (Immediate). Этот метод обычно применяется на этапе тестирования (рис. 8).

Рис

Рис. 8. Вызов функции в окне отладки

В отличие от процедур, функции не отображаются в диалоговом окне Макрос (меню Разработчик –> Код –> Макросы; или Alt+F8).[17]

Аргументы могут представляться переменными (в том числе массивами), константами, символьными данными или выражениями. Некоторые функции не имеют аргументов. Функции имеют как обязательные, так и необязательные аргументы.

В Excel есть несколько встроенных функций, не имеющих аргументов, например, СЛЧИС, СЕГОДНЯ, ТДАТА. Несложно создать аналогичные пользовательские функции. Например:

Function User()

' Возвращает имя пользователя

User = Application.UserName

End Function

При вводе формулы =User() ячейка возвращает имя текущего пользователя.

Пользовательские функции ведут себя подобно встроенным функциям Excel. Обычно пользовательская функция пересчитывается тогда, когда это нужно, т.е. в случае изменения одного из аргументов функции. Однако можно выполнять пересчет функций чаще. Функция пересчитывается при изменении любой ячейки, если в процедуру добавлен оператор Application.Volatile True.

Метод Volatile объекта Application имеет один аргумент (True или False). Если функция выделена как volatile (изменяемая), она пересчитывается всякий раз, когда изменяется любая ячейка листа. При использовании аргумента False метода Volatile функция пересчитывается только тогда, когда в результате пересчета изменяется один из ее аргументов.[13]

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

3. РАЗРАБОТКА ПОЛЬЗОВАТЕЛЬСКИХ ФУНКЦИЙ В С++ И VBA

3.1. Применение функций С++ для реализации модульной программы

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

В среде программирования С++ разработать программу из меню пользователя, которая над введенным массивом выполняет следующие операции: [9]

1. Выводит массив на экран;

2. Транспонирует массив;

3. Находит попарно сумму элементов массива (первый элемент + последний, второй + предпоследний и т.д.);

4. Удаляет элемент, который находится на позиции с номером X;

5. Сортирует каждые Y элементов на росте.

6. Записывает начальный массив в текстовый файл;

7. Формирует с одномерного массива квадратную матрицу минимального размера (в случае отсутствия необходимого количества элементов добавить значение 0).

Программа будет написана в среде разработки Dev-C++ на соответственном ЯП высокого уровня.

Основные ее характеристики: [6]

– удобный интерфейс;

– быстрый компилятор;

– применение встроенных компонентов в автоматическом порядке;

– использование подсказок при наборе программного кода;

– использование на бесплатном основании.

Интерфейс среды показан на рисунке 9:

Результат пошуку зображень за запитом "Dev-C++"

Рис.9. Интерфейс Dev-C++

Рассмотрим функции, которые будут применяться для организации программы: [3]

– dim() – функция предназначена для ввода размерности используемого массива;

– input() – функция предназначена для ввода элементов массива при использовании генератора псевдослучайных чисел;

– output() – функция для организации вывода элементов массива;

– sum() – функция для нахождения суммы элементов массива;

– sort() – функция для сортировки элементов массива методом пузырька;

– sh() – вывод искомого элемента;

– vs() – функция, реализующая вставку элемента;

– rez() – функция для удаления элемента массива;

– menu() – функция для реализации меню программы;

– main() – главный модуль программы.

Основная функция, которая применяется для вывода меню выводит перечень пунктов меню в текстовом режиме (рисунок 10):

Рис.10. Пример меню

В зависимости от выбора значения (1, … , 6) будет реализован соответствующий пункт меню. [16]

Для создания такого меню нужно ввести такой программный код:

int menu()

{

int q;

cout<<"---------------------------------------------------"<<endl;

cout<<"| ПРИМЕР ИСПОЛЬЗОВАНИЯ МЕНЮ |"<<endl;

cout<<"---------------------------------------------------"<<endl;

cout<<" ВЫБЕРИТЕ С ПЕРЕЧНЯ НУЖНОЕ ДЕЙСТВИЕ "<<endl;

cout<<"---------------------------------------------------"<<endl;

cout<<"1. Ввод массива"<<endl;

cout<<"2. Сумма элементов массива"<<endl;

cout<<"3. Среднее арифметическое массива"<<endl;

cout<<"4. Сортировка массива"<<endl;

cout<<"5. Вставка значения массива"<<endl;

cout<<"6. Выход"<<endl;

cin>>q;

return q;

}

Стоит отметить, что количество пунктов меню легко увеличивается в результате добавления новой строки с оператором вывода cout. [12]

Логика программы построена таким образом, что при выборе соответствующего пункта будет запущена одна с функций.

Такая возможность реализована с помощью оператора множественного выбора switch.

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

Оператор case проверяет, какое именно значение введено, и в зависимости от него запускается определенная подпрограмма: [8]

switch(q)

{

//выбор значения 1

case 1:

//запуск функции для вывода массива

output(a,n);

//задержка на экране

system("pause");

//очистка экрана

system("cls");

//выход с оператора выбора

break;

//аналогично выполняются остальные составные части оператора выбора[4]

case 2:

//вывод суммы элементов[11]

cout<<"Сумма: "<<sum(a,n)<<endl;

system("pause");

system("cls");

break;

//вывод среднего значения

case 3:

cout<<"Среднее: "<<sum(a,n)/n<<endl;

system("pause");

system("cls");

break;

//сортировка массива

case 4:

sort(a,n);

system("pause");

system("cls");

break;

//вставка элемента массива

case 5:

x=sh();

y=vs();

rez(a,n,x,y);

system("pause");

system("cls");

break;

//выполнение закрытия программы

case 6:

cout<<"Программа окончена"<<endl;

system("pause");

break;

//break;

//случай некорректного ввода данных

default:

cout<<"Введите корректное значение";

getch();

system("cls");

}

Рассмотрим подробнее некоторые функции, которые применены в рассматриваемой программе.[5]

Функция для ввода размерности одномерного массива:

//определение функции

int dim()

{

//объявление переменной функции

int n;

//вывод сообщения

cout<<"Размерность: ";

//ввод размерности

cin>>n;

//возврат значения из функции

return n;

}

Функция для нахождения суммы элементов массива[20]

//название прототипа функции

int sum(int a[], int n)

{

//инициализация переменной

int s=0;

//нахождение суммы массива

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

s+=a[i];

//возврат значения

return s;

}

Другие функции созданы по аналогии.

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

После запуска нужно выполнить ввод размерности. Автоматически будет сгенерирован массив и будет показано меню пользователя (рисунок 11):

Рис.11. Ввод размерности

Для, к примеру, вывода сортировки массива, нужно выбрать пункт 4. В результате получим (рисунок 12):[15]

Рис.12. Результат сортировки

После нажатия любой клавиши опять будет показано меню с выводом его пунктов.

3.2.Использование функций в ЯП VBA

Рассмотрим следующую задачу, которую нужно реализовать в VBA.

Дан список групп учебного заведения:[3]

Рис.13. Перечень групп

Список дисциплин:

Рис.14. Список дисциплин

Нормы контроля:

Рис.15. Нормы контроля

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

Для реализации этой задачи нужно выполнить такие действия.

Необходимо ввести:[19]

– номер группы и количество студентов;

– группу, дисциплины, вид контроля;

– вид контроля и количество часов.

После нажатия на кнопку расчет объема нагрузки в ячейке I10 получим искомый результат.

Рис.16. Результат вычислений

Рассмотрим листинг кода:[3]

Sub Pr()

s = 0

For i = 3 To 7

For j = 3 To 14

If Cells(i, 1) = Cells(j, 4) Then

For k = 3 To 6

If Cells(j, 6) = Cells(k, 8) Then

s = s + Cells(i, 2) * Cells(k, 9)

End If

Next k

End If

Next j

Next i

Cells(10, 9) = s

End Sub

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

Для ввода данных нужно открыть окно функции и ввести ячейку с параметром – радиус шара:[20]

Рис.17. Ввод аргументов

После этого в ячейке появится результат.

Рис.18. Результат

Листинг кода следующий:

Function fun(r As Single)

fun = 4 * 3.1415 * r * r

End Function

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

ЗАКЛЮЧЕНИЕ

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

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

Все функции в языках программирования высокого уровня можно разделить на 2 категории:

– встроенные (или стандартные);

– функции пользователя.

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

Суть модульного программирования заключается в реализации задач в ходе решения только с помощью функций, которые характеризуются такими параметрами:

– интерфейс функции;

– название функции;

– параметры функции.

В работе были реализованы следующие задачи:

– выполнено рассмотрение основных определений по теории ЯП высокого уровня;

  • описаны принципы модульного программирования, как отдельной парадигмы для написания программ;
  • приведена методика написания функций на языке VBA;
  • на практике рассмотрены принципы использования модульных программ в С++;
  • разработаны программы, используя модульный подход организации ПО в VBA.

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

  1. 3yeв Е. А. Практическое программирование на языке С++. — М.: Радио и связь, 2014. – 406 с.
  2. Аксёнова Е.А. Алгоритмы и структуры данных на С++: Учебное пособие. - Петрозаводск: Изд-во ПетрГУ, 2016.- 81 с.
  3. Беляева, И. В. Основы программирования на языке Turbo Pascal: учебное пособие / И. В. Беляева. - Ульяновск: УлГТУ, 2015. - 266 с.
  4. Бобровский С. Самоучитель програмирования на языке C++ в среде Borland C++ Builder М.: ИНФРА-М, 2013.–251 c.
  5. Бруно Бабэ. Просто и ясно о Borland C++: Пер. с англ. - Москва: БИНОМ, 2014. – 400с.
  6. Гарнаев, А.Ю. Excel, VBA, Internet в экономике и финансах / А.Ю. Гарнаев. - М.: БХВ-Петербург, 2005. - 826 c.
  7. Журнал Windows IT Pro/RE, июль 2013. - М.: Открытые Системы, 2013. - 708 c.
  8. Заварыкин В.М.. Основы информатики и вычислительной техники. — М.: Просвещение, М.: - 2014. 180 с.
  9. Задачи по программированию / С. А. Абрамов. — М.: Наука, 2014. – 344 с.
  10. Задачник-практикум: В 2 т. / Под ред. И. Г. Семакина. — М.: Лаборатория Базовых Знаний, 2013. – 182 с.
  11. Зубов В. С. Программирование на языке С++. — М.: Информационно-издательский дом «Филинъ», 2013. – 452 с.
  12. Йенсен К. С++ — руководство для пользователей и описание языка. — М.: Мир, 2015. – 402 с.
  13. Касаткин В. Н. Информация. Алгоритмы. ЭВМ. — М.: Просвещение, 2015. – 210 с.
  14. Керниган Б. Язык программирования Си: Пер. с англ. — М.: Финансы и статистика, 2014. – 322 c.
  15. Кузьменко, В. Г. VBA. Эффективное использование / В.Г. Кузьменко. - М.: Бином-Пресс, 2012. - 624 c.
  16. Культин Н.Б. Визуальное программирование.— СПб.: BHV — Санкт-Петербург, 2013. – 266 c.
  17. Культин Н.Б. С++ Buider в задачах и примерах – СПб.:БХВ-Петербург, 2015. – 336с.: ил.
  18. Липачев Е.К. Технология программирования. Базовые конструкции C/C++ / Е.К. Липачев. - Казань: Казан. ун-т., 2015. - 142 с.
  19. Сдвижков, О. А. Непараметрическая статистика в MS Excel и VBA / О.А. Сдвижков. - М.: ДМК Пресс, 2014. - 172 c.
  20. Уокенбах, Джон Excel 2013. Профессиональное программирование на VBA / Джон Уокенбах. - М.: Вильямс, 2014. - 960 c.