Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции_КС.docx
Скачиваний:
16
Добавлен:
01.07.2025
Размер:
385 Кб
Скачать
☆

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

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

Для разработки таких алгоритмов применяют условный оператор. Условный оператор может использоваться в форме полной или неполной развилки.

В случае неполной развилки если условие истинно, то блок операций выполняется, если условие ложно, то блок операций не выполняется. В случае полной развилки если условие истинно, то выполняется блок операций 1, иначе выполняется блок операций 2.

Условие может быть простым и составным.

В простых условия используются операторы сравнения:

< - меньше, чем..

> - больше, чем...

<= - меньше, чем... или равно

>= - больше, чем... или равно

<> - не равно

= = - равно

Например, простыми отношениями являются следующие:

x-y>10; k<= (a+b); s = = 0;

Составные условия строятся из простых с помощью логических операторов:

&& - И

|| - ИЛИ

! – НЕ

Например

((y>10) && (k<= a))

На языке Си условный оператор имеет вид:

Оператор условия может быть вложенным.

Примеры.

Если число больше 5, вывести информацию об этом.

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

  int k;

  printf("k= ");

  scanf("%d",&k);

  if(k >= 5) {

    printf("%d >= 5", k);

  } else {

    printf("%d < 5", k);

  }

  return 0; }

Задания для самостоятельной работы:

  1. Вычислить значение S=1/x

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

Оператор ветвления switch (оператор множественного выбора)

Оператор if позволяет осуществить выбор только между двумя вариантами. Для того, чтобы производить выбор одного из нескольких вариантов необходимо использовать вложенный оператор if. С этой же целью можно использовать оператор ветвления switch.

Общая форма записи

switch (целое выражение) {

  case константа1: блок операций1;

         break;

  case константа2: блок операций2;

         break;. . .

  case константаn: блок операцийn;

         break;

  default: блок операций по умолчанию;

         break;}

Оператор ветвления switch выполняется следующим образом:

  • вычисляется целочисленное выражение в скобках оператора switch;

  • полученное значение сравнивается с метками (константами) в опциях case, сравнение производится до тех пор, пока не будет найдена метка, соответствующая вычисленному значению целочисленного выражения;

  • выполняется оператор соответствующей метки case;

  • если соответствующая метка не найдена, то выполнится оператор в опции default.

Альтернатива default может отсутствовать, тогда не будет произведено никаких действий. Опция break; осуществляет выход из оператора switch и переход к следующему за ним оператору. При отсутствии опции break будут выполняться все операторы, начиная с помеченного данной меткой и кончая оператором в опции default.

Циклические алгоритмы

Цикл – набор команд, который выполняется многократно.

Тело цикла – последовательность выполняемых команд.

Параметр цикла – переменная управляющая выполнением цикла. Параметр изменяет свое значение при каждом прохождении тела цикла.

Шаг цикла — это значение, на которое будет увеличиваться или уменьшаться счетчик цикла при каждом проходе.

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

Блок схема:

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

while(условие)

{

Блок команд

}

Пример. Напечатать квадраты чисел от 1 до 10. Здесь переменная i является параметром цикла, она участвует в условии и она же изменяется при каждом прохождении тела цикла.

int i=1;

While (i<=10)

{

Printf(“%d\n”, i*i);

i = i +1;

}

Еще пример. Найдем сумму чисел от i до k.

int k=5; int i=1; int sum=0; while(i <=k) {

 sum = sum + i;

 i++; }

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

С начала выполняется тело цикла, затем проверяется условие, если условие истинно, то тело цикла выполняется еще раз. И так до тех пор, пока условие не станет ложным.

do      {          тело цикла      }      while (условие);

Пример.

Напечатать квадраты чисел от 1 до 10.

int i=1;

do

{ printf(“%d\n”, i*i);

i = i +1;

}

while (i<=10)

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

  1. Цикл с заданным числом повторений (параметрический цикл)

for (Параметр = НачЗн; Условие; Шаг)

{

Тело цикла;

}

Условие проверяется перед каждым повторением тела цикла. Если оно истинно, то тело цикла выполняется и так до тех пор, пока параметр цикла будет удовлетворять условию.

Пример.

Напечатать квадраты чисел от 1 до 10.

int i;

for(i=1;i<=10;i=i+1)

{ printf(“%d\n”, i*i);

}

Оператор break делает принудительный выход из цикла, даже когда условие цикла — истинно. Оператор break удобно использовать, когда необходимо выйти из цикла при особых обстоятельствах. Оператор continue нужен если необходимо пропустить какой-то блок кода, но при этом не прекращать работу цикла. 

Упражнения:

  1. Найти сумму четных чисел от 1 до 100

  2. Вывести все числа от 1 до 100 кратные пяти

  3. Организовать беспрерывный ввод чисел с клавиатуры, пока пользователь не введёт 0. После ввода нуля, показать на экран количество чисел, которые были введены, их общую сумму и среднее арифметическое.

  4. Вывести на экран таблицу вида:

1 2 3 4 5

6 7 8 9 10

11 12 13 14 15