Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Типовые алгоритмы обработки одномерных массивов.




Правила оформления контрольной работы

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

Условия задач выбираются в соответствии с заданным вариантом, номер которого, является порядковым номером студента в журнале группы или, в особых случаях, предлагается преподавателем. Список заданий содержится в м/у № 3201, а в электронном варианте находится на сервере кафедры "Информационные технологии" и может быть просмотрен с любого компьютера, подключенного к кафедральной компьютерной сети.

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

1. Условие задачи, в соответствии с заданным вариантом.

2. Схему алгоритма.

3. Таблицу соответствия переменных (то есть их обозначение в схеме и программе).

4. Рукописный текст программы, написанной на языке VBA.

5. Набор тестов для отладки программы.

6. Листинг (распечатку) текста программы. Листинги должны содержать комментарий с Ф.И.О. и группой студента.

7. Листинг с результатами тестирования программы. Кроме результатов тестирования он должен содержать все значения вводимых исходных данных.

Контрольная работа выполняется в отдельной тетради (лучше в клетку) или на листах формата А4 (текст пишется только с одной стороны, все листы брошюруются в папку). Обязательно наличие полей для замечаний проверяющего преподавателя. Листинги вставляются после каждой задачи. Текст оформляется чернилами синего, фиолетового или черного цвета. Схему алгоритма лучше изображать в карандаше и с использованием линейки. При ее оформлении нужно руководствоваться ГОСТ 19.701 – 90 и методическими указаниями [2], в которых рассматриваются основные типы алгоритмов и их схемы. В конце контрольной работы приводится список литературы, которая была использована при подготовке работы, и студент проставляет свою подпись.

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

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

Теоретические сведения. Язык Visual Basic for Applications.

Назначение: VBA используется в качестве языка программирования в приложениях MS Qffice (Word, Excel, Access, Power Point, и др.). Он позволяет автоматизировать процессы обработки информации и разрабатывать свои сложные приложения, обеспечивающие удобства работы с данными. Это объектно-ориентированный язык. Объекты – это заранее разработанные программы, которые пользователь может использовать в своих программах, не программируя их заново. Он же может разрабатывать и новые объекты. Для работы со средой VBA нужно запустить основное приложение host-Приложение (например, Excel).

Данные и их типы.

Данные делятся на константы и переменные.

Типы данных: дата, числа, логический, текстовый, Variant, Object.

Числовые типы: byte, integer, long, single, double, currency.

Integer – целое число (со знаком + или -). Примеры: 1; 1566;–77. Диапазон: – 32768 ÷ +32767 (число занимает 2 байта памяти).

Byte – тоже целые, но из диапазона 0 ÷ 225 (занимает 1 байт).

Long – длинное целое, имеющее увеличенный диапазон (свыше двух миллионов), поэтому занимает 4 байта памяти.

Single – число одинарной точности (имеет 7 верных значащих цифр); это число с целой и дробной частью (занимает 4 байта памяти). Диапазон: -3,4×103 ÷ +3,4×1038. Примеры: 3.458; -100.876.

Экспоненциальная форма записи вещественных чисел:

7.5Е11 ® 750000000000 (в обычной форме);

-3.2Е-8 ® 0,0000000032 (в обычной форме).

String – текстовый (строковый) тип (для строк переменной длины занимает: 10 байт + длина строки, которая вычисляется из расчета: 1 байт=1 символ).

Примеры: "Это строка символов"; "5.1".

Boolean - логический тип (занимает 2 байта). Может принимать значения: true или false.

Правила создания имен переменных и констант:

1. Имя состоит из букв (русских или латинских), цифр и знака подчеркивания "_", набранных любым шрифтом и размером.

2. Первый символ имени – буква.

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

4. Нельзя использовать ключевые слова VBA (Sub, Dim, If, For и др.).

5. Имя должно быть уникальным в области свого действия

6. Желательно, чтобы имя имело содержательный смысл.

Примеры правильных имен: x: z1; Сумма_прибыли, Задание_1.

Неправильные: 1N, Dim, Задание 4.

Объявление переменных и констант.

Переменные и константы, используемые в программе, должны быть объявлены (описаны) с помощью конструкции, имеющей следующий синтаксис:

Dim <имя1 > As <тип1 > [, <имя2> As <тип2> ]…

где <имяn> - имя переменной, <типn> - ее тип. Скобки [ ] означают - то, что в них заключено, является необязательным элементом.

Примеры:

Dim N As integer, Сумма As Single, B As Boolean

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

Пример описания строковой переменной фиксированной длины (40 символов):

Dim строка As String*40.

Область действия переменных: процедура или модуль, в которых они описаны.

Именованные константы.

Их имена формируются по тем же правилам, что и имена переменных, а значения задаются при описании, но изменяться в программе не могут. Оператор для описания имеет вид:

Const <имя1> = < значение1]> <[, < имя2>=< значение2> …

Пример: Const Pi=3.14159: G=9.81:St="ГГТУ имени П. О. Сухого"

 

Структура программы (процедуры). Ее рассмотрим на простом примере:

 

Заголовок Комментарий Sub Pr() 'Выполнил студент Петров, гр.ЗО-11
< раздел описаний > Dim a As Single,b As Single,z As Single
< тело процедуры > z=a+b: MsgBox z
Конец процедуры End Sub

Допускается запись нескольких операторов в одной строке, разделяя их символом ":". Но длина строки не должна превышать 1024 символов. Не делайте слишком длинные строки, так как могут возникнуть проблемы с распечаткой текста программы на принтере или при просмотре (оптимально до 80 –и символов). Длинную строку можно отобразить на нескольких строках, используя в качестве символа переноса комбинацию пробела со знаком подчеркивания " _".

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

Программа может включать комментарии, поясняющие выполняемые ею действия. Комментарий начинается со знака ' (апостроф) и может содержать в себе текст с любыми символами. Он формируется в виде отдельной строки или вместе с одним из операторов. На цветном мониторе редактор VBA отображает комментарии зеленым цветом, ключевые слова VBA – синим, а остальной текст программы – черным.

Примеры использования комментариев:

' программу составил ст. гр.ЗО-11 Иванов И.И.

d=InputBox("Введи d","Окно ввода") ' Ввод иcходного значения d

Оператор присваивания (=). Он используется для присваивания значений переменным и имеет следующий синтаксис:

< имя переменной > = < выражение >.

Типы левой и правой частей должны совпадать. В ряде случаев VBA автоматически осуществляет преобразование, а когда это невозможно происходит остановка выполнения программы (Run-time error – ошибка выполнения).

Ввод данных.

Что бы ввести значение переменной нужно использовать оператор, имеющий следующую структуру:

< имя переменной > = InputBox (< строка > [, < заголовок > ]),

где InputBox – функция, использующаяся для ввода данных, <строка> - текстовая подсказка, в которой говорится о том, что требуется ввести; <заголовок> - необязательный параметр, который является заголовком окна, открывающегося при работе функции InputBox (если он отсутствует, то окно будет названо именем host-Приложения – MSExcel.

Пример:

d = Input Box ("Введите количество дней" ","Ввод данных")

При работе оператора мы увидим окно следующего вида, в текстовое поле которого нужно ввести значение d и нажать на кнопку ОК.

Примечание. При воде вещественных чисел, имеющих дробную часть, нужно обе части числа разделять символом ",", а не "."!

 

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

MsgBox < строка > [,, < заголовок > ],

где MsgBox – процедура, используемая для вывода данных. Выводимое значение должно быть представлено в виде <строки>; чаще всего VBA преобразует данные в строку символов сам, либо это делается с помощью специальных функций преобразования; <заголовок> имеет тот же смысл, что и у функции InputBox. Отдельные строки при выводе можно сцепить при помощи операции конкатенации (&).

Примечание1. Две запятые обязательны! (здесь пропущен не обязательный параметр)

Примеры: 1) MsgBox "Привет, студент",, "Приветствие"

Окно появляется в host–Приложении. После его просмотра нужно нажать на кнопку ОК.

2) K=5

Z=7.3

MsgBox "K=" & K & " Z=" & Z,, " Результаты"

 

Примечание2. Для вывода данных в несколько строк в выводимую строку нужно включать функцию Chr(13). Сделаем это для примера 2

MsgBox "K=" & K & Chr(13) & "Z=" & Z,,"Результаты"

и получим

Для распечатки этого окна необходимо:

Скопировать данное активное окно в буфер обмена (нажав вместе клавиши <Alt> - <PrintSreen>).

Нажать OK

Вернуться в Excel.

Вставить содержимое буфера на лист (командой Правка ® Вставить).

Вывод в ячейки листа рабочей книги. Для этого используется свойство Cells объекта Range

 

M=5.37

Cells (3,2) = “Результат m=”

Cells (3,3) = m

 

В результате выполнения этих операторов на листе рабочей книги мы увидим (для этого нужно переключиться на Excel):

 

 

Выражения. Они бывают: численные, строковые и логические.

Нельзя использовать несовместимые типы в одном выражении (кроме числовых).

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

Перечислим операции в порядке их выполнения в одном выражения (приоритета):

^ (степень)

– (унарный минус)

* и / (умножение и деление)

\ (целочисленное деление)

mod (деление по модулю)

+ и – (сложение и вычитание).

Операции, имеющие одинаковый приоритет (например: * и /, + и -), выполняются слава направо, а приоритет операции можно повысить, заключив ее в круглые скобки.

Функции имеют самый высокий приоритет и записываются с аргументом, заключенным в круглые скобки. Перечень основных функций: Abs(x) – модуль числа, Ant(x) - арктангенс, Cos(x) - косинус, Sin(x) - синус, Tan(x) - тангенс, Exp(x) – экспонента (число е в степени х), Log(x) –натуральный логарифм, Sqr(x) - квадратный корень. Аргумент функции – любой численный тип.

 

Примеры:

 

Математическая запись Запись на VBA
Z=sin(α2) Z=Sin(a^2) (Здесь a - это a)
b=cos2(y) b=Cos(y)^2
Fi=n^(1/7)+Log(m)/Log(10) (Так записывается десятичный логарифм)
P=(Exp(-a)+c^0.7)/(a*b*c)

 

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

 

Полная форма

IF <условие> Then

<Действие1>

Else

<Действие2>

EndIf

 

 

Сокращенная форма

If <условие> Then

<Действие>

End IF

 

В записи оператора <условие> представлено в виде логического выражения, например: Z>5, и может принимать значения True (ИСТИНА) и False (ЛОЖЬ).

<Действие> представляет собой один или несколько операторов. Действие, записанное в ветви ДА, выполняется тогда, когда условие имеет значение True, а когда значение условия False, выполняется Действие, записанное в ветви Нет (полная форма) или ничего не выполняется (сокращенная форма).

Пример.

If X>0 Then Y=Sqr(X) Else Y=X^2 EndIf

 

Имеют также место операторы If, вложенные друг в друга.

Примечание. Существует запись оператора If в одну строку, но она при всей своей компактности делает программу менее читаемой, поэтому здесь она не приводится.

Логические выражения могут включать в себя следующие элементы: логические переменные, логические константы, операции сравнения и логические операции.

Операции сравнения: <, >, < =, >=, =, < >.

Логические операции: And (умножение), Or (сложение), Not (отрицание).

Примеры:

а) 1<x≤1001 x>0 And x<=1001

б) y<0 или y>10 y<0 Or y>10

Оператор цикла For…Next.

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

 
 

 


For i=iнач. To iкон. [Step Di]

 

<Тело цикла>

 
 


Next [i]

где For (для), To (до), Next (следующий) – служебные слова, i- параметр цикла, iнач., iкон. – его начальное и конечное значения, Di – шаг изменения (может быть как положительным так и отрицательным, а если он отсутствует, то полагается равным 1); все перечисленные параметры имеют одинаковый тип (чаще всего Integer или Single). Конец цикла Next может быть записан без указания параметра i.

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

 

Цикл работает по приведенной здесь схеме следующим образом:

а) при Di>0 – параметр i последовательно пробегает все значения от iнач. до iкон. c шагом Di; при этом должно быть iнач. ≤iкон..

б) при Di<0 – параметр i последовательно пробегает все значения от iкон. до iнач. c шагом Di; при этом должно быть iнач. ≥iкон.. Увеличение или уменьшение параметра i на каждом шаге цикла (итерации) происходит автоматически и не требует программирования его изменения.

 

Примеры.

1). For i=1 To 10

Cells(i,1)=i

Next i

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

2). For m=10 To -10 Step -2

MsgBox m

Next m

Выполнение этого фрагмента приведет к появлению последовательности окон, содержащих числа 10,8,…, -10.

Массивы.

До сих пор мы имели дело с переменными, принимающими в ходе выполнения программы одно единственное значение. Но, например, в математике мы имеем дело с такими понятиями как вектор, матрица, которые включают в себя целый набор значений (элементов). В языках программирования такие величины объединяют одним понятием – массив. Таким образом, массив – это некоторый ограниченный набор величин одного типа.

Для объявления (описания) массива, позволяющего в памяти компьютера зарезервировать место для хранения значений элементов массива, используется следующий оператор, располагающийся в разделе описаний процедуры:

Dim <имя массива> (измерение(я)) As <тип элементов>, [(измерение(я)) As <тип элементов>], …

где <измерение> задается в виде целого числа, показывающего самое большое значение, которое может принять данное измерение.

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

По умолчанию начальное значение индекса равно нулю, а чтобы индекс у элементов массива изменялся, начиная с 1, нужно пред описанием всех переменных, констант и процедур, входящих в модуль, поставить директиву Option Base 1

Примеры объявлений:

Option Base 1

Dim X(5) As Single 'объявлен одномерный массив (вектор) из 5 вещественных чисел

Dim Y(100) As Integer 'то же но из 100 целых

Dim Z(7,6) As String 'двумерный массив (матрица) из 7 строк и 6 столбцов

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

 

Схема Программный фрагмент
……………………………………… Dim X(20) As Single 'фрагмент для ввода массива N=InputBox ("Сколько чисел?", "Ввод размерности") For i=1 to N X(i)=InputBox ("Введи X(" & i & ")","Ввод элементов") Next i ………………………………………..  

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

Схема Программный фрагмент
……………….. ' вывод массива Cells(1,1)="№ п/п" Cells(1,2)="X(i)" For i=1 to N Cells(i+1,1)=i Cells(i+1,2)=X(i) Next i …………………  

 

Типовые алгоритмы обработки одномерных массивов.

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

· Вычисление сумм, произведений и количества.

· Определение наименьшего или наибольшего по значению элемента и его порядкового номера.

· Перестановка и замена элементов в массиве.

· Формирование нового массива из элементов имеющихся.

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

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...