Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
200801_Lec_02.pdf
Скачиваний:
8
Добавлен:
16.03.2015
Размер:
303.6 Кб
Скачать

if (D < 0)

{

printf ("Действительных корней нет"); exit (0);

}

else if (D == 0)

{

x1 = - b / (2 * a);

printf ("Уравнение имеет один корень. x = %f", x1);

}

else if (D > 0)

{

x1 = ( - b + sqrt (D)) / (2 * a); x2 = ( - b – sqrt (D)) / (2 * a);

printf("Уравнение имеет два корня. x1 = %f и x2 = %f", x1,

x2);

}

}

Обратите внимание на группирование конструкций else и if в приведённом примере – составной оператор else if () позволяет создавать сложные условия.

Вкачестве условных выражений в операторе if() могут выступать:

арифметические выражения;

выражения отношения;

логические выражения.

К логическим операторам относятся:

 

 

 

Оператор

 

Значение

 

 

 

 

 

 

 

 

 

 

 

 

 

&&

 

И

 

 

 

 

 

||

 

ИЛИ

 

 

Выражение a

&&

b

!

 

НЕ

 

a истинно и

истинно тогда

и только тогда, когда выражение

одновременно выражение b истинно.

 

 

 

 

Выражение a

||

b истинно в случае, когда хотя бы одно из выражений

- a или b

истинно.

 

 

 

 

 

 

 

Выражение !a истинно, если выражение a ложно.

2. Циклы

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

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

Применение того или иного оператора цикла во многом обусловливается предпочтениями программиста или принятыми в организации стандартами программирования.

2.1. Цикл с предусловием

Рассмотрим пример:

#include <stdio.h> int main (void)

{

long num;

long sum = 0L; int status;

printf ("Enter n");

status = scanf ("%ld", &num); while (status == 1)

{

sum += num;

printf ("Enter the nex number:");

status = scanf ("%ld", &num);

}

printf ("The sum is %ld", sum);

}

Вприведённом примере используются две новые для вас возможности языка C :

операция scanf() имеет возвращаемое значение, которое можно записать в переменную целого типа

оператор while() позволяет выполнять некоторую операцию (ряд операций) несколько раз.

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

Цикл while() организуется следующим образом:

1.задание значения для проверки условия

2.проверка условия, выполнение оператора, следующего за while(), в случае, если проверка успешна. Обратите внимание, что оператор должен содержать операцию изменения условия, чтобы не произошло так называемого "зацикливания", т. е. проверяемое условие обязательно должно изменяться одним из операторов цикла, дабы цикл не выполнялся бесконечно.

3.Выход из цикла, если условие не выполняется.

Вобщем виде оператор записывается так:

while (условие) оператор;

Если необходимо выполнить несколько операторов в цикле while(), используются фигурные скобки, как и в операторе if(). Фигурные скобки объединяют все операторы,

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

while (условие)

{

оператор;

оператор2;

}

В первом примере цикл используется для суммирования всех вводимых пользователем значений. Программа завершает работу и выводит результат, как только пользователь введёт не число (для проверки ввода используется возвращаемое значение функции scanf() - пока оно равно 1, т.е. успешно считано последующее число, цикл будет выполняться, иначе программа завершит работу). Обратите внимание, что переменная status, содержащая возвращаемое значение функции scanf() используется в двух местах: (1) ДО цикла, чтобы была возможность проверки условия перед первым проходом (итерацией) цикла; (2) В цикле, чтобы иметь возможность выхода из цикла.

Блок-схема оператора while() имеет следующий вид:

2.2. Возможность использования счётчика в цикле.

Удобно для контроля выполнения циклов использовать так называемые переменные-счётчики, наращивающие своё значение в каждой итерации цикла. В таком случае цикл может быть автоматически завершён по истечении определённого числа итераций.

Основные требования к использованию счётчиков таковы:

1.переменная должна быть инициализирована значением перед началом её использования;

2.переменная должна сравниваться с некоторой величиной желательно того же типа.

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

Следующий пример иллюстрирует использование счётчика:

.....

int n = 10, counter, sum = 0; counter = 1;

while (counter < n)

{

sum += counter; counter++;

}

.....

В примере ищется сумма всех чисел от 1 до 9.

2.3. Цикл с постусловием.

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

Синтаксис цикла с постусловием таков:

do

{

оператор1;

оператор2;

}

while (условие);

Изображение цикла с постусловием в блок-схеме приведено ниже:

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

#include<stdio.h>

int main (void)

{

int passwd = 567821; int usr_input = 0;

do

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]