Краткие сведения о строковых функциях
Синтаксис функции | Описание функции | Пример | |
Вызов функции | Результат | ||
LСase(строка) | Возвращает строку, преобразуя её к нижнему регистру | LСase("xYz") | "xyz" |
UСase(строка) | Возвращает строку, преобразуя её к верхнему регистру | UСase("xYz") | "XYZ" |
Trim(строка) | Возвращает строку, удаляя из неё пробелы справа и слева (в начале и конце строки) | Trim(" xy z ") | "xy z" |
LTrim(строка) | Возвращает строку, удаляя из неё начальные пробелы | LTrim(" xz ") | "xz " |
RTrim(строка) | Возвращает строку, удаляя из неё конечные пробелы | RTrim(" xz ") | " xz" |
Left(строка, количество) | Возвращает левую часть строки из указанного количества символов | Left("123",2) | "12" |
Right(строка, количество) | Возвращает правую часть строки из указанного количества символов | Right("123",2) | "23" |
Mid(строка, позиция[, количество]) | Возвращает среднюю часть строки, начиная с заданной позиции, из указанного количества символов (если параметр опущен, то – до конца) | Mid("123",2,1) Mid("123",2) | "2" "23" |
Space(количество) | Создает строку, содержащую равное аргументу количество пробелов | Space(1) | " " |
String(количество, символ) | Создает строку, содержащую заданное количество повторяющихся символов (этот аргумент представляется как числовым кодом символа, так и строковым выражением, первый символ которого используется для создания результирующей строки) | String(3, 120) String(3, "хyz") | "ххх" "ххх" |
StrComp(строка1, строка2[, способ]) | Возвращает результат сравнения строки1 со строкой2 заданным способом. Если строка2 меньше чем строка1, то возвращается 1; наоборот – -1; при равенстве – 0; | StrComp("xYz", "хyz") StrComp("xYz", "хyz", 1) | -1 |
InStr([позиция, ]строка1, строка2[, способ]) | Поиск строки2 (подстроки), внутри строки1, начиная со стартовой позиции (если не указано, то с начала) строки1, заданным способом. | InStr ("xYz", "хyz") InStr (1, "xYz", "хyz", 1) |
Следует также пояснить, что функция InStr возвращает позицию первого вхождения (если совпадение найдено). Если строка2 – пустая, то возвращается стартовая позиция. Возвращаемое значение будет равно нулю в следующих случаях: строка1 – пустая; строка2 не найдена; стартовая позиция превышает длину строки1.
11.8 Функции преобразования данных
Среди встроенных функций VBA следует выделить такие, которые работают с различными типами данных и выполняют соответствующие преобразования строковых и числовых значений. В таблице 24 представлен синтаксис таких функций, их описание и примеры использования.
Таблица 24
Краткие сведения о функциях преобразования данных
Синтаксис функции | Описание функции | Пример | |
Вызов функции | Результат | ||
Val(строка) | Возвращает число, содержащееся от начала строки до первого символа, не распознаваемого в качестве числа. Игнорируются символы пробела, табуляции и перевода строк | Val(" 1 2.3") Val(" 1 2,3") Val("1" & chr(10) & "2") | 12.3 |
Str(число) | Возвращает строковое представление числа с учётом знака | Str(1+3) Str(1-3) | " 4" "-2" |
Len(выражение) | Возвращает размер памяти в байтах, занимаемый числовым типом данных, или длину строки-аргумента | Len(a%) Len("123") | |
Chr(код) * | Возвращает строку, состоящую из символа, соответствующего коду ANSI. | Chr(62) Chr(65) Chr(225) | ">" "A" "б" |
Asc(строка) * | Возвращает число, представляющее ASCII или ANSI код первого символа строки | Asc(">") Asc(Chr(65)) Asc("бр-р…") | |
Format(выражение[, формат]) * | Возвращает значение выражения, преобразованное согласно описанию формата. Описанию этой функции в справочной системе VBA посвящено около десяти страниц | Format(4) Len(Format(4)) Format(12.3, "##0.00") Format(0.05, "0.0%") Format("xYz", ">") | "4" "12.30" "5.0%" "XYZ" |
11.9 Вопросы и тестовые задания для самоконтроля
1. Даны выражения, записанные на алгоритмическом языке VBA. Запишите эти выражения в виде математических формул: sin(x)^2+cos(x)^2; a^2*i+exp(c*d); (b+sin(x))/(c+d); sin(x)^2+cos(x^2); a^(2*i)+exp(c)*d; b+sin(x)/c+d.
2. Укажите приоритет выполнения операций и определите значения логического выражения при X=0 и Y=1.5, а также при X=2.5 Y=0.5.
X+Y<4 AND X^2 + Y^2>=4
3. Укажите приоритет выполнения операций и определите значения логического выражения при X=0.5 и Y=0.5, а также при X=1.5 и Y=0.5.
ABS(X) + ABS(Y)<=1
4. Укажите приоритет выполнения операций и определите значения логического выражения при X=0.5 и Y=0.5, а также при X=1.5 и Y=1.5.
(ABS(X)>=1 OR ABS(Y)>=1) AND X^2+Y^2<9
5. Дан фрагмент программы:
If x<1 Then
y=x+1
Elseif x<2 Then
y=x+3
Elseif x<4 Then
y=x^2
Else
y=x-2
End If
z=2*y
MsgBox "X=" & x & " Y=" & y & " " & "Z=" & z
Укажите результат работы этого фрагмента в каждом из следующих случаев: x=0.5; x=1.5; x=3; x=5.
6. Дан фрагмент программы:
x = val(InputBox("Введите координату x”))
y = val(InputBox("Введите координату y"))
sR = "точка (" & x & " , " & y & ") находится"
If x+y<2 and x>0 and y>0 Then
MsgBox sR & "в треугольнике"
Elseif (x+1)^2+(y+1)^2<1 Then
MsgBox sR & "внутри круга"
Else
MsgBox sR & "вне областей"
End If
Укажите результат работы этого фрагмента для каждого из случаев: x=0.5 и y=0.8; x=2.5 и y=1.5; х=-0.7 и y=1; x=-0.7 и y=1.
7. Назовите операторы языка VBA, с помощью которых организуется циклический вычислительный процесс, назначение и отличительные особенности выполнения каждого из них.
8. Можно ли выйти из цикла FOR … NEXT до его завершения и если можно, то как?
9. Укажите назначение оператора WHILE … WEND?
10. Укажите, какой результат будет выведен на экран (в файл) при выполнении следующего фрагмента программы:
For t=1 To 7
Print t; t+2;
Next t
11. Укажите, какой результат будет выведен на экран (в файл) при выполнении следующего фрагмента программы:
For f=0 To 9 Step 3
Print 2*f; f*f;
Next f
12. Определите, сколько раз будет выполнено тело цикла в приведенном фрагменте программы:
For i = 2 To n Step 1
s = s + i
Next i
при n, равном: а) 2; б) 0; в) 4; г) 5.
13. Определите значение переменной a после выполнения каждого из фрагментов программы:
1) a = 0 For i =1 To 7 a = a + i Next i | 2) a = 1: n = 7 For i = n To 2 Step –1 a = a + i Next i | 3) a = 0 For i = 2 To 7 a = a + i Next i |
14. Определите значение переменной с после выполнения каждого из фрагментов программы:
1) c=0 For i=1 To 4 c=c+(i+2) Next i | 2) c=1 For i=1 To 4 Step 2 c=c*(i+1) Next i | 3) c=0 For i=2 To 5 Step 2 c=c+i^2 Next i |
15. * Укажите, какое значение примет строковая переменная N$ в результате работы фрагмента программы:
W$="Я ХОРОШО УМЕЮ РАБОТАТЬ НА IBM PC"
N$=MID$(W$,3,7)+MID$(W$,15)
1) Я УМЕЮ
2) РАБОТАТЬ УМЕЮ
3) ХОРОШО РАБОТАТЬ
4) РАБОТАТЬ ХОРОШО
5) ХОРОШО РАБОТАТЬ НА IBM PC
6) Я УМЕЮ РАБОТАТЬ НА IBM PC
вернуться к содержанию
ТЕХНОЛОГИИ ПРОГРАММИРОВАНИЯ
В данном разделе раскрываются основные понятия технологии программирования. Излагаются принципы модульного, структурного, событийно-ориентированного и объектно-ориентированного программирования.
Концепция программирования
Концепция (от лат. conceptio – понимание, система) – определённый способ понимания, трактовки какого-либо предмета, явления, процесса, основная точка зрения на предмет и др., руководящая идея для их систематического освещения. К основным понятиям, раскрывающим концепцию программирования, помимо уже рассмотренных в предыдущих разделах, можно отнести расширенное толкование процесса программирования, используемых подходов и методологий.
Программирование, в узком смысле, – это создание программ (программного обеспечения), как правило, с применением языков программирования, т.е. это процесс реализации одного или нескольких взаимосвязанных алгоритмов на некотором языке программирования. При этом прийти к единому мнению о том, к какому роду деятельности относится программирование, на сегодняшний день, пожалуй, не удалось.
Так, появление первых компьютеров породило программирование как науку. Разрабатывались первые математические теории обработки информации, средства доказательства правильности программ, оптимизации кода, создания эффективных компиляторов, формального тестирования и т. д.
Постепенно, с появлением универсальных языков программирования третьего поколения, программирование превратилось в искусство – миллионы людей, не имевших специального образования, получили возможности применять компьютеры для решения собственных прикладных задач, что потребовало от них мастерства создавать правильно работающие программы. Искусством программирование остается и сегодня для профессиональных разработчиков и любителей, создающих программы в одиночку или в небольших компаниях, где все решает индивидуальное мастерство.
С ростом спроса со стороны государственных и частных организаций на все более и более сложные системы автоматизации предприятий, надежные операционные среды, комплексы глобального телекоммуникационного управления, возникла необходимость в постановке процесса разработки программного обеспечения (ПО) на поток, превращения программирования в ремесло, а выражаясь более современно – бизнес. Для этого были разработаны методологии и стандарты, позволившие эффективно организовывать труд сотен программистов средней квалификации, точно укладываться в отпущенные сроки и средства и не зависеть от настроения нескольких талантливых ведущих специалистов. Отрицательная сторона подобных методологий – отсутствие творческого элемента в работе и своеобразная конвейерная «потогонная» система промышленного производства программ, которая, будучи внедренной в организации, в условиях жесточайшего дефицита программистов во всем мире может только отпугнуть сотрудников.
Методология (от метод и …логия) – учение о структуре, логической организации, методах и средствах деятельности. Методология в этом широком смысле образует необходимый компонент всякой деятельности, поскольку последняя становится предметом осознания, обучения и рационализации.
Методология программирования – совокупность методов, применимых в жизненном цикле программного обеспечения и объединенных общим философским подходом. Под жизненным циклом программного обеспечения понимается весь период его разработки и эксплуатации, начиная с момента возникновения замысла и заканчивая прекращением использования программы. В настоящее время широкую известность получили четыре методологии – императивного, объектно-ориентированного, логического, функционального программирования.
С понятием методологии тесно сопряжены понятия парадигмы* и, конечно же, технологии программирования. Парадигма (греч. paradeigma – пример, образец) – модель любого вида человеческой деятельности, принятая в качестве образца. Парадигма программирования – это совокупность идей и понятий, определяющая стиль написания программ. Парадигма определяет то, как программист описывает логику программы. Например, в императивном (процедурном) программировании программа описывается как последовательность действий, а в функциональном программировании представляется в виде выражения и множества функций.
В первую очередь, парадигма определяется базовой программной сущностью, в качестве которой выступают действие (императивное программирование), определение (декларативное, функциональное программирование), правило (продукционное программирование), диаграмма переходов (автоматное программирование) и др. В современной индустрии программирования очень часто парадигма программирования определяется набором инструментов программиста, а именно, языком программирования и используемыми библиотеками.
Технология (от греч. techne – искусство, мастерство, умение) – совокупность приёмов и способов получения, обработки или переработки сырья, материалов, полуфабрикатов или изделий, осуществляемых в различных отраслях, а также научное описание способов производства. Технология программирования – совокупность методов, приемов и средств для сокращения стоимости и повышения качества разработки программ, а также дисциплина, изучающая технологические процессы программирования и порядок их прохождения во времени (фазы, стадии, этапы, итерации и контрольные точки).
Понятие технологии программирования во многом сходно с трактовкой соответствующих этапов компьютерного моделирования. И чем сложнее задача, чем больше трудоёмкость создания программы, необходимой для её решения, тем большую роль играет выбор той или иной технологии программирования. В таблице 25 показано, как растёт трудоёмкость разработки программы (которая пропорциональна произведению времени создания на количество программистов) с увеличением её объёма.
Таблица 25