Учебное пособие предназначено для подготовки к выполнению лабораторных работ по дисциплине «Технологии и методы программирования»
Download 1.34 Mb.
|
switch (n)
{ case 1: оператор 1; break; case 2: оператор 2; break; case 3: оператор 3; break; ……………. } где n – целочисленная или символьная переменная; 1, 2, 3 – целочисленная или символьная константа; Оператор 1 – тело первого case; Оператор 2 – тело второго case; Оператор 3 – тело третьего case; вreak – (прервать) оператор завершает выполнение ветвления switch, если значение переменной в операторе switch совпадает с одним из значений констант, указанных внутри ветвления. Если значение переменной в операторе switch не совпадет ни с одним из значений констант, то управление будет передано в конец switch без выполнения каких-либо действий. В случае отсутствия оператора break управление будет передано операторам, относящимся к другим веткам switch. Условная операция Существует распространенная в программировании операция: переменной необходимо присвоить одно значение в случае выполнения некоторого условия и другое значение в случае невыполнения этого условия. С помощью конструкции if … else это будет выглядеть следующим образом: if (alfa else min=beta; Подобные действия на практике настолько распространены, что была специально разработана условная операция, выполняющая эти действия. Эта операция записывается с помощью двух знаков и использует три операнда. С помощью условной операции можно записать предыдущий фрагмент следующим образом: min = (alfa Правая часть оператора (alfa Если значение проверяемого условия истинно, то условное выражение становиться равным значению alfа, в противном случае beta. Скобки в чтобы визуально упростить читаемость этого оператора. Пример выполнения лабораторной работы: требуется разработать программу, которая вычисляет значение функции . Анализ задачи показывает, что программу можно строить как последовательность подзадач. Следовательно, на первом шаге декомпозиции с использованием метода пошаговой детализации [1] получаем следующую структурную схему программы, представленную на рис. 1а. Подзадачу Вычисление значения функции можно оформить в виде функции. Эта же программа может быть реализована и без использования функций. Выполнять детализацию алгоритма основной программы не будем из-за его очевидной простоты. Выполним детализацию алгоритма функции. Исходные данные такой функции – значения переменных a, b. Функция не должна менять их значения, поэтому значения переменных можно передать как параметры-значения или параметры-константы. На рисунках 1б, 1в приведена схема алгоритма проектируемой программы с использованием подпрограммы типа функция. На рисунке 2 приведена схема алгоритма программы без использования функции. Из-за очевидной простоты алгоритма основной программы проведем модульное тестирование по критерию комбинаторного покрытия условий [2] только одного компонента программы – вычисление значения функции m (рис. 1в). На рис.3 представлен граф передачи управления, соответствующий схеме алгоритма функции (рис. 1в). Из построенного графа видно, что для функции по критерию комбинаторного покрытия условий необходимо покрыть тестами восемь комбинаций: 1) а>1, b=0; 5) а = 2, b> 1; 2) а>1,b≠0; 6) а = 2, b≤1; 3) а≤ 1,b=0; 7) а≠2, b> 1; 4) а≤ 1,b≠0; 8) а ≠2, b≤1. а
б в Рис.1 Алгоритм программы примера с использованием функции Эти комбинации можно проверить четырьмя тестами: а = 2, b = 0 — проверяет комбинацию (1); а = 2, b=1 — проверяет комбинации (2), (6); a=2, b=3 — проверяет комбинацию (5); а = 1, b = 0 — проверяет комбинацию (3); а = 1, b = 1 — проверяет комбинации (4), (8). a=1, b=3 — проверяет комбинацию (7). Текст программы на языке С с использованием функции: //func.c #include #include float m (float a, float b, float x) { if (a==1 && b==0) x/=2; if (a==2 || b>1)x++; return x; } int main(void) { float a,b,x; setlocale(LC_CTYPE, "russian"); printf ("введите a,b\n"); scanf ("%f%f%f", &a,&b); printf ("\nm(x)=%f",m(a,b)); return (0); } x=a/2
Текст программы на языке С без использования функции: #include #include #include int main (void) { float a,b,x; setlocale(LC_CTYPE, "russian"); printf ("введите a,b,x\n"); scanf ("%f %f %f",&a,&b); if ((a==1) && (b==0)) x/=2; if ((a==2) || (b>1)) x++; printf ("\nx=%f",x); return (0); } Download 1.34 Mb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling