Задание на лабораторную работу




Разветвляющиеся (условные) алгоритмы

 

Не всем алгоритмам достаточно для выполнения конструкции следования. Рассмотрим следующий пример: . Алгоритм решения этой задачи может быть следующим:

алг Функция нач

ввод х

если х =0 то f:= 1 иначе f:= .

рез f

кон

Эта управляющая конструкция носит название развилка (проверка условия, условная конструкция)

если условие то действия при истинном условии иначе действия при ложном условии.

Условная конструкция в языке Си

Для организации ветвления алгоритма в Си используется оператор проверки условия if ( логическоевыражение ) { действия при истинном значении выражения }else { действия при ложном значении выражения }. Оператор else может отсутствовать, если это обусловлено алгоритмом.

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

- «И» (конъюнкция), в Си оператор &&, все логическое выражение считается истинным только в том случае, если истинны все простые выражения.

- «ИЛИ» (дизъюнкция), в Си оператор ||, все логическое выражение считается ложным только в том случае, если ложны все простые выражения.

Например, запишем следующее условие «Если переменная x меньше переменной y и переменная x меньше переменной z »: x<y && x<z. Следующее условие демонстрирует операцию дизъюнкции «Если переменная m < 10 или переменная m равна переменной x »: m<10 || m == x.

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

- Если x<y, то вывести на экран значение суммы x и y, значение переменной x заменить на 10.

if (x<y)

{ printf(“Сумма ==> %d”,x+y);

x = 10;

}

- Если x не равно y вывести на экран соответствующее сообщение, в противном случае вывести на экран значения переменных переменную x увеличить в два раза.

 

if(x!=y)

printf(“Переменные имеют неравные значения”);

else {

printf(“x = %d, y = %d\n”,x,y);

x*=2;

}

3. Возможности функции scanf()

 

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

 

int y,n;

printf(“Введите значение переменной n: ”);

y = scanf(“%d”,&n);

if (y!=1) {printf(“Введены неверные данные…\n ”);

system(“pause”);

exit(0);

}

else { …}

 

В рассмотренном примере количество вводимых полей – 1 (вводится одна переменная n). Следовательно, если переменная y не принимает значение один – произошла ошибка ввода. На экран выводятся соответствующие сообщения. Программа ожидает нажатия клавиши и заканчивает работу (exit). В случае успешной работы выполняется часть программы, описанная в блоке else.

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

float x,y,z;

printf(“Введите значения переменных x,y и z: ”);

int m = scanf(“%f%f%f”,&x,&y,&z);

После успешного выполнения программы значение переменной m примет значение 3.

Задание на лабораторную работу

 

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



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-10-25 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: