- •Тема 2.5. Основные конструкции языков программирования
- •2.5.1.2. Средства программирования алгоритмов линейной структуры
- •Input [;] [подсказка { ; | , }] список_переменных
- •Input “Введите коэффициенты уравнения a, b, c “, a#, b#, c#
- •Input ;“Радиус круга”; r!
- •2.5.1.3. Средства программирования разветвляющихся структур
- •If выражение then оператор(ы) [else оператор(ы)]
- •2.5.1.4. Средства программирования регулярных циклических структур
- •2.5.1.5. Средства программирования итеративных циклических структур
- •2.5.1.6. Средства описания и работы с одномерными массивами данных
- •Dim v1([imin to] imax) as type [, . . . Vn([imin to] imax) [as type]
- •2.5.1.7. Средства описания и работы с двумерными массивами данных
- •2.5.1.8. Строковые данные и операции над строками
- •Val(строка)
- •2.5.1.9. Средства процедурного программирования в среде qb
- •Dim shared переменная [as тип][, переменная [as тип]]...
- •Intx,y;
- •Void main(void)
- •Int test_score;
- •Void main(void)
- •Void main (void)
- •Void main(void)
- •Void main(void)
- •2.5.2.2. Средства программирования алгоритмов линейной структуры и функций
- •Int main ()
- •Int main ()
- •Void main(void)
- •Voidmain(void)
- •Void main(void)
- •Void main(void) {
- •Void main(void)
- •Void main(void)
- •Void main(void)
- •Void main(void)
- •Void main (void)
- •Int rus (unsigned char r)
- •Int rus (unsignedcharr); или rus (unsignedchar);
- •2.5.2.3. Средства программирования разветвляющихся структур
- •If (выражение) оператор_1; [ else оператор_2;]
- •2.5.2.4. Средства программирования регулярных циклических структур
- •Int main ( )
- •If (br2) break;
- •2.5.2.5. Средства программирования итеративных циклических структур
- •2.5.2.6. Средства описания и работы с одномерными массивами данных
- •Int array[4]; /* array - массив из 4 элементов типа int */
- •Int minmaxel (float*mas, int n, int&min)
- •2.5.2.7. Средства описания и работы с двумерными массивами данных
- •Int w[2][3]; /* двумерный массив из двух строк и трех столбцов
- •Int minimum(int [][exams], int, int);
- •Int maximum(int [][exams], int, int);
- •Void printArray(int [][exams], int, int);
- •Int main()
- •Int minimum(int grades[][exams], int pupils, int tests)
- •Int maximum(int grades [][exams], int pupils, int tests)
- •Void printArray(int grades [][exams], int pupils, int tests)
- •2.5.2.8. Строковые данные и операции над строками
- •Int strlen(char s[])
- •Void testirovanie ()
- •Void testirovanie();
- •Void reshenie();
- •Void main (void)
- •2.5.3. Контрольные вопросы по теме «Основные конструкции языка программирования qb» (вставить из лаб.Работ!)
- •2.5.4. Тестовые задания по теме «Основные конструкции языка программирования qb»
- •End select
- •Тема 2.5. Основные конструкции языков программирования Страница 274
2.5.1.3. Средства программирования разветвляющихся структур
На практике редко встречаются задачи, решение которых представляется только в виде алгоритмов линейной структуры. Как правило, приходится решать задачи, в которых в зависимости от выполнения некоторого логического условия необходимо организовать вычисления по одной из нескольких ветвей алгоритма. Алгоритмы решения таких задач строятся с использованием разветвляющихся алгоритмических структур. В результате проверки логического выражения(“Истина” или “Ложь”) управление передается ветке “Да” или “Нет”.
Логические выражения, в отличие от арифметических, содержат операции отношения(=, <, >, <=, >=, <>), а также еще пятьлогических операций, записанных далее в порядке убывания приоритета: отрицание -NOT, логическое умножение (логическое “И”) -AND, логическое сложение (логическое “ИЛИ”) -OR, исключающее “ИЛИ” -XOR, эквивалентность -EQV.
Результатом выполнения логического выражения может быть “Истина” (не 0)или “Ложь” (0). Например,NOT 7<9всегда принимает значение “Ложь”, что соответствует значению0, а4>3 AND 7<9принимает значение “Истина”, что соответствует-1.
В табл. 2.5.1-5 приведено описание логических операций. Здесь T(true) - “Истина”, аF(false) “Ложь”.
Таблица 2.5.1-5
Значения операндов |
NOT x |
x AND y |
x OR y |
x XOR y |
х EQV y | ||||||
X |
Y |
|
|
|
|
| |||||
T |
T |
F |
T |
T |
F |
T | |||||
T |
F |
F |
F |
T |
T |
F | |||||
F |
T |
T |
F |
T |
T |
F | |||||
F |
F |
T |
F |
F |
F |
T |
Разветвляющиеся алгоритмические структуры в языках программирования реализуются операторами условного перехода.ВQBдля программирования условных переходов используются три типа операторов:однострочный IF,блочныйIFи оператор выбораSELECT CASE
Однострочный оператор IFимеет следующий формат:
If выражение then оператор(ы) [else оператор(ы)]
Порядок выполнения оператора следующий: если значение выражения не нуль (“Истина”), то выполняется оператор (или операторы), стоящий послеTHEN, в противном случае выполняются операторы, стоящие послеELSE. КонструкцияELSEможет отсутствовать (в формате она взята в квадратные скобки) – случай усеченного разветвления.
Выражениеможет быть логическим или арифметическим. Ненулевое значение арифметического выражения интерпретируется как “Истина”, а нулевое - как “Ложь”.
Особенностью однострочного оператора IFявляется то, что он должен располагаться в одной строке программы.
Приведем примеры записи однострочного оператора IF:
IF x > 0 THEN y=SQR(x) ELSE y=1
IF d THEN epsilon=0.001
IF lambda < 1 OR beta = 3 THEN PRINT lambda, beta : x=0
IF x < 10 THEN y=1 ELSE IF x < 100 THEN y=2 ELSE y=4
Если запись оператора не умещается в пределах экрана, а также при программировании вложенных разветвлений, используется блочный(многострочный) операторIF. Он имеет следующий формат:
IF выражение_1 THEN [ блок_операторов_1 ] [ ELSEIF выражение_2 THEN [ блок_операторов_2 ] . . . [ ELSE [ блок_операторов_n ] ] END IF
Отметим, что здесь и в дальнейшем операторы, записанные в квадратных скобках, могут отсутствовать.
Порядок выполнения оператора следующий: если значение выражения_1“Истина” - выполняетсяблок_операторов_1и далее управление передается оператору, следующему послеEND IF. Есливыражение_1“Ложь”, то проверяется значение следующего выражения и так далее. После выполнения любого блока операторов управление всегда передается оператору, следующему послеEND IF. Конструкций типаELSEIFможет быть несколько.Блок_операторов_n, следующий заELSE,выполняется в том случае, если последовательные проверки всех выражений выше дали значение “Ложь”. КонструкцииELSEIFиELSEмогут отсутствовать, что и отмечается в синтаксисе оператора квадратными скобками. Особенностью оператора является то, что словоTHENдолжно быть последним в строке, а словоELSE- единственным. СловоELSEIFзаписывается слитно, а словаEND IF- через пробел.
Примеры блочных операторов IF:
1) |
IF X>0 THEN y=SQR(x) z=1+y p=4 END IF |
2) |
IF x < 10 THEN y=1 ELSEIF x < 100 THEN y=2 ELSEIF x < 1000 THEN y=3 ELSE y=4 END IF
|
Оператор SELECT CASEпозволяет осуществить разветвление по любому фиксированному числу ветвей. Он имеет следующий формат:
SELECT CASE выражение CASE тест_1 [блок_операторов_1] [CASE тест_2 [блок_операторов_2]]
. . . [CASE ELSE [блок_операторов_n]] ENDSELECT
Здесь выражение– арифметическое или строковое, атест_iможет иметь одну из трех форм:
1)выражение [, выражение . . .]
2)выражение TO выражение
3)IS операция_отношения выражение
Например, строки CASEмогут содержать следующие тесты:
CASE IS >3‘проверка на превышение значения 3;CASE x^2 ‘проверка на равенство значению выражения; CASE 5 TO 7‘ проверка на принадлежность отрезку [5;7];CASE 1 TO 4, 7 TO 9, 11, 13, IS > Max.
В последнем примере через запятую перечисляются несколько тестов, при этом результат проверки выражения считается истинным, если выполняется хотя бы один из тестов.
Порядок выполнения оператора SELECT CASEследующий: если значениевыраженияудовлетворяеттеступосле конструкцииCASE, то выполняетсяблок_операторов, а затем управление передается оператору, следующему после конструкцииEND SELECT. В противном случае проверяется следующийтести так далее. Все конструкцииSELECT CASEработают аналогично.Блок_операторов_n, расположенный послеCASE ELSEвыполняется в том случае, если последовательные проверки всехтестоввыше дали значение “Ложь”.
Оператор имеет следующие особенности: тест_1,тест_2и так далее должны быть последними в строке, а конструкцияCASE ELSEдолжна быть единственной в строке.