Назначение: Позволяет передавать управление программой в зависимости от результата проверки условия. Имеет две разновидности.
Первая форма представляет собой оператор, записываемый в одну строку:
Аргумент | Описание |
Логическое выражение, принимающее значение TRUE (истина) | |
Вычисляется, если условие принимает значение TRUE, и пропускается в противном случае; | |
Вычисляется, если условие принимает значение FALSE. |
Если ELSE-часть отсутствует, а имеет значение FALSE, управление передается следующему оператору.
Вторая (блоковая) форма оператора условного перехода имеет вид:
Аргумент | Описание |
Логическое выражение, принимающее значение TRUE (ненулевое) или FALSE (нулевое) (i = 1. N). | |
, … | Последовательность операторов, занимающих одну или несколько строк. |
ELSEIF | Проверка дополнительного условия (). |
ELSE | Определяет блок операторов, получающих управление в случае, если ни одно из вышеперечисленных условий не выполнится. |
Программирование разветвляющихся алгоритмов
Оператор выбора — SELECT CASE
Назначение: Выбор и выполнение одного из нескольких блоков в зависимости от значения ключевого слова.
[ операторный блок 1>]
[ операторный блок N-1>]]
Аргумент | Описание |
Любое числовое или строковое выражение | |
, … | Операторный блок — это любое число операторов на одной или более строках |
Синтаксис аргумента :
В качестве ключа (I = 1. N) используется одна из следующих форм:
Любое числовое или строковое выражение. Тип выражения должен соответствовать типу текущего ключевого слова | |
< меньше больше >= больше или равно <> не равно = равно |
2. Описание практической части работы:
2.1. Цели лабораторной работы: Изучить последовательность написания программ с разветвляющейся структурой на алгоритмическом языке (Basic) и структуру линейного и блочного оператора IF.
2.2. Постановка задачи: В соответствии с заданием лабораторной работы №2 разработать программы с линейной и разветвляющейся структурой для нахождения заданной функции.
2.3. Порядок выполнения работы:
2.3.1. Ознакомиться с теоретической частью.
2.3.2. Получить задание у преподавателя.
2.3.3. Выполнить работу.
2.3.4. Оформить отчет:
2.3.4.1. Содержание отчета:
1. Цель работы — краткая формулировка поставленной цели.
2. Порядок выполнения — определяются действия, необходимые для выполнения данной работы.
3. Постановка задачи — формулирование задачи в соответствии с индивидуальным заданием.
C++ | Разветвляющийся алгоритм (оператор условия if)
4. Решение поставленной задачи:
4.1. Математическое описание решения поставленной задачи содержит описание связей между параметрами с использованием принятых в математике обозначений.
4.2. Описание логической структуры программы (алгоритм решения) содержит:
— краткое описание схемы программы,
— алгоритм решения (по ГОСТ) — рисунок,
— краткое описание используемых операторов языка программирования: IF (строчная и блочная формы) (при необходимости SELECT CASE).
4.3. Описание программы содержит:
— название файла, его размер,
— текст программы без комментариев (или фрагмент для решения конкретной, наиболее важной части задания).
4.4. Результат работы программы:
— значения, полученные в результате выполнения программы
— анализ полученных результатов.
Выводы — отвечают на поставленную цель.
2.4. Контрольные вопросы:
1. Каким блоком изображается в алгоритме ?
2. В чем отличие разветвляющихся структур с полной и неполной альтернативой выбора?
3. Назначение конструкции выбора, реализуемой оператором SELECT CASE?
4. Укажите синтаксис линейного оператора IF?
5. Укажите синтаксис блочного оператора IF?
6. Можно ли выйти из блочного оператора IF (из одного из выполняемых блоков) с помощью оператора GOTO?
7. Укажите виды условий, используемых в операторе IF?
8. Какое действие выполняется в операторе IF: IF A NOT B THEN PRINT ‘A’ ELSE PRINT ‘B’, если А=В?
9. Можно ли использовать оператор IF для возврата на начало программы?
10. Как изображается конструкция выбора в схемах программы?
Таблица
Задания для написания программы с разветвляющимся алгоритмом
n | задание | n | задание |
![]() ![]() ![]() |
![]() ![]() |
||
![]() ![]() |
![]() ![]() |
||
![]() |
![]() ![]() |
||
![]() ![]() |
![]() ![]() |
||
![]() ![]() |
![]() ![]() |
||
![]() ![]() |
![]() ![]() |
||
![]() ![]() |
![]() ![]() |
||
![]() ![]() |
![]() ![]() |
||
![]() |
![]() ![]() |
||
![]() ![]() |
![]() ![]() |
||
![]() ![]() |
![]() ![]() |
||
![]() ![]() |
![]() ![]() |
||
![]() ![]() |
![]() ![]() |
||
![]() ![]() |
![]() ![]() |
||
![]() ![]() ![]() |
![]() ![]() |
Лабораторная работа №7
Источник: infopedia.su
Урок «Разветвляющийся алгоритм. Операторы передачи управления IF, GOTO».
учебно-методический материал на тему
Тема урока «Разветвляющийся алгоритм. Операторы передачи управления IF, GOTO ». Цели урока. Обучающая : ввести понятие операторов передачи управления Развивающая : развить у уч-ся умение составлять программы этого вида Воспитательная : воспитание положительного интереса к изучаемому материалу.
Разветвляющийся алгоритм , операторы IF…THEN, GOTO Начало Ввод x , y x>Y Вывод х Вывод Y Конец да нет
План урока Повторение операторов Найти ошибки в программе Новые операторы IF,GOTO
Повторение операторов 1. Что означают служебные слова ? LET PRINT INPUT DATA READ RESTORE 2 . Какие из следующих операторов ошибочны ? 10 INPUT A;B;C 20 LET D+1=A+B+C 30 LET F=A*B 40 PRINT ОТВЕТ =, F 50 PRINT D
Новые операторы языка Бейсик Разветвляющийся алгоритм (ветвление, развилка)это- алгоритм, содержащий хотя бы одно условие, в результате проверки которого происходит выбор одного из двух возможных вариантов продолжения.
Последовательности действий в каждом из возможных вариантов называются ветвями Ветвление бывает двух типов
Оператор условного перехода IF (если) / THEN (тогда) / ELSE (иначе)
Оператор в общем виде : IF THEN ELSE Начало Конец Начало Конец да нет
Часто при составлении алгоритма решения задачи приходиться проводить анализ выполнения тех или иных условий. От выполнения таких условий зависит дальнейший ход решения задачи. Оператор условного перехода используется для изменения порядка выполнения программы при выполнении некоторого условия IF (если)… THEN( тогда)
ФОРМАТ ОПЕРАТОРА IF: n IF L1 * L2 THEN m1 n — номер строки IF (если) — имя оператора L1*L2 — проверяемое условие L1,L2 — арифметические выражения * — условное обозначение знака операции отношения ( >, =, , =) THEN( тогда)-служебное слово(вместо него допустимо писать GOTO) m1 — номер строки с оператором, который будет выполняться за оператором IF , если условие L1*L2 выполнено . Если условие L1*L2 нарушено , то будет выполняться следующая строчка за оператором IF. Полная форма оператора условного перехода : n IF THEN S1 ELSE S2 S1,S2 – метки , операторы или серии операторов ELSE( иначе)- служебное слово
Оператор безусловного перехода GOTO (идти к) Используется для указания того места программы, т.е. того оператора, с которого следует продолжать выполнения на данном этапе. Формат оператора : n GOTO m1 n — порядковый номер строки GOTO — имя оператора m1 — номер строки с оператором, который будет выполняться за оператором GOTO Например : 50 GOTO 120
Примеры составления программ : 1. При каких значениях a и b получится результат y , равный -2. 1) a=12, b=8 2) a=-12, b=-8 3) a=0, b=-2 4) a=-8, b=-12 5) нет верного ответа 10 REM 20 INPUT a, b 30 IF b>a THEN 60 40 LET b=a+1 50 GOTO 70 60 LET a=b-2 70 LET y=a-b 80 PRINT “y=“;y 90 END b>a a=b-2 b=a+1 y=a-b Да нет
2. Чему равен “y”, если a= — 4, b= — 6 1) -3 2) -8 3) -10 5)Нет верного ответа 4) -14 10 REM 20 INPUT a , b 30 IF a=b THEN 80 40 IF a>-5 THEN 60 50 GOTO 9 0 60 LET a=a/2 70 GOTO 9 0 80 LET a=2*a 9 0 LET y=a + b 100 PRINT “y=“;y 110 END a=b a>-5 a=2*a a=a/2 да нет да нет y=a + b
Источник: nsportal.ru
Составление разветвляющихся алгоритмов
Операторы
операторы
преобразования
операторыобъектов
операторы
управления
декларации
процессом выполнения
алгоритма
Программирование процесса преобразования объектов производится посредством
записи операторов (инструкций)
Простейший вид операторов – выражение,
заканчивающееся символом «;» (точка с
запятой). Выполнение такого оператора
заключается в вычислении некоторого
выражения
К управляющим операторам относятся:
операторы условного и безусловного
переходов, оператор выбора альтернатив
(переключатель), операторы организации
циклов и передачи управления (перехода).
Операторы языка Си записываются в
свободном
формате
с
использованием
разделителей
между ключевыми словами. Любой
оператор может помечаться меткой –
идентификатор и символ «:»
(двоеточие).
Область действия
метки – функция, где эта метка
определена
3. Условный оператор if
Условный оператор if используется для разветвления процесса выполнения кода
программы на два направления.
1. Простой условный оператор
if (выражение) оператор;
выражение – логическое или
арифметическое
выражение,
вычисляемое перед проверкой, и,
если
выражение
истинно,
то
выполняется оператор, иначе он
игнорируется;
оператор – простой или составной
(блок) оператор языка Си. Если в
случае
истинности
выражения
необходимо выполнить несколько
операторов (более одного), их
необходимо заключить в фигурные
скобки.
False
Выражение
True
Оператор
Пример
if (x > 0) x = 0;
if (i != 1) j++, s = 1; – операция «запятая»;
if (i != 1) j++; s = 1;
>
if (i>0 i
if (a++) b++;
4. Условный оператор if
False
2. Полный условный оператор
Выражение
if (выражение) оператор 1 ;
else оператор 2 ;
True
Если выражение не равно
нулю (истина), то выполняется
оператор
1,
иначе
–
оператор 2. Операторы 1 и 2
могут быть простыми или
составными (блоками).
Наличие символа «;» перед
словом else в языке Си
обязательно.
Оператор_2
Оператор_1
if (x > 0) j = k+10;
else m = i+10;
if ( x>0 k!=0 ) j = x/k;
x += 10;
>
else m = k*i + 10;
Пример
5. Условный оператор if
Операторы 1 и 2 могут быть любыми операторами, в том числе и условными. Тогда,
если есть вложенная последовательность операторов if – else, то фраза else
связывается с ближайшим к ней предыдущим if, не содержащим ветвь else.
Если же необходимо связать фразу else с
внешним if, то используются операторные
скобки:
if(n > 0) if(a > b) z = a;
>
else z = b;
В следующей цепочке операторов
последовательно:
if (выражение 1) оператор 1;
else
if (выражение 2) оператор 2;
else
if (выражение 3) оператор 3;
else оператор 4 ;
if (n > 0)
if(a > b) z = a;
else z = b;
Здесь ветвь else связана со вторым
if (a > b)
выражения
просматриваются
6. Условный оператор if
В следующей цепочке операторов
последовательно:
if (выражение 1) оператор 1;
else
if (выражение 2) оператор 2;
else
if (выражение 3) оператор 3;
else оператор 4 ;
Пример
if (x < 0) printf(«n Xelse if(x==0) printf («n X =0 n»);
else printf(«n X >0 n»);
Распространенной ошибкой при создании
условных операторов является использование в
выражении операции присваивания «=» вместо
операции сравнения «==». Здесь синтаксической
ошибки нет:
if (x = 5) a++;
но значение а будет увеличено на единицу
независимо от значения переменной х, т.к.
х = 5 является – true
выражения
просматриваются
Если какое-то выражение оказывается
истинным, то выполняется относящийся к
нему оператор и этим вся цепочка
заканчивается. Каждый оператор может быть
либо отдельным оператором, либо группой
операторов в фигурных скобках. Оператор 4
будет выполняться только тогда, когда ни
одно из проверяемых условий не подходит.
Иногда при этом не нужно предпринимать
никаких явных действий, тогда последний else
может быть опущен или его можно
использовать
для
контроля,
чтобы
зафиксировать
«невозможное»
условие
(экономия на проверке условий).
7. Условная операция «? :»
Условная операция – тернарная, т.к. в ней участвуют три операнда
Формат условной операции
Выражение 1 ? выражение 2 : выражение 3;
Если выражение 1 (условие) отлично
от нуля (истинно), то результатом
операции
является
значение
выражения 2, в противном случае –
значение выражения 3. Каждый раз
вычисляется
только
одно
из
выражений 2 или 3.
True
Выражение_2
Условное вычисление применимо к
арифметическим
операндам
и
операндам-указателям
False
Выражение_1
Выражение_3
8. Условная операция «? :»
Рассмотрим участок программы для
нахождения максимального значения z из двух
чисел a и b, используя оператор if и условную
операцию.
1. При помощи if :
if (a > b) z = a;
else z = b;
2. Используя условную операцию:
z = (a > b) ? a : b;
Условную
операцию
можно
использовать так же, как и любое
другое выражение. Если выражения
2 и 3 имеют разные типы, то тип
результата
определяется
по
правилам
преобразования.
Например, если f имеет тип double, а
n – int, то результатом операции
(n > 0) ? f : n;
по правилам преобразования типов
будет double, независимо от того,
положительно n или нет.
Использование условных выражений позволяет во многих случаях значительно
упростить программу. Например:
int a, x;
.
x = (a < 0) ? –a : a;
printf(«n Значение %d %s нулевое !», x, (x ? «не» : » «) );
9. Оператор выбора альтернатив
Оператор switch (переключатель) предназначен для разветвления процесса вычислений на несколько направлений.
Общий вид оператора
switch ( выражение ) case константа1:
case константа2:
список операторов 1
список операторов 2
.
case константаN:
список операторов N
default: список операторов N+1 – необязательная ветвь;
>
Выполнение оператора начинается с вычисления выражения, значение
которого должно быть целого или символьного типа. Это значение
сравнивается со значениями констант и используется для выбора ветви,
которую нужно выполнить
10. Оператор выбора альтернатив
В данной конструкции константы фактически
выполняют роль меток. Если значение
выражения совпало с одной из перечисленных
констант,
то
управление
передается
в
соответствующую ветвь. После этого, если выход
из переключателя в данной ветви явно не указан,
последовательно выполняются все остальные
ветви
Все константы должны иметь разные значения, но
быть одного и того же типа. Несколько меток могут
следовать подряд, и тогда переход в указанную
ветвь будет происходить при совпадении хотя бы
одной из них. Порядок следования ветвей не
регламентируется.
В случае несовпадения значения выражения ни с одной из
констант выбора происходит переход на метку default либо,
при ее отсутствии, к оператору, следующему за оператором
switch
11. Оператор выбора альтернатив
Управляющий оператор break (разрыв) выполняет выход из оператора switch. Если
по совпадению с каждой константой должна быть выполнена одна и только одна
ветвь, схема оператора switch следующая:
switch (выражение) case константа1: операторы 1; break;
case константа2: операторы 2; break;
.
case константаN: операторы N; break;
default: операторы (N+1); break;
>
void main(void)
int i = 2;
switch(i)
>
case 1: puts ( «Случай 1. «); break;
case 2: puts ( «Случай 2. «); break;
case 3: puts ( «Случай 3. «); break;
default: puts ( «Случай default. «); break;
>
12. Оператор выбора альтернатив
Структурная схема рассмотренной конструкции (с использованием оператора
break)
switch
Выражение
true
const_1
false
Операторы_1
true
const_2
false
Операторы_2
…
true
const_N
false
Операторы_N
true
default
Операторы_N+1
13. Оператор выбора альтернатив
Пример без использования оператора break :
void main()
int i = 2;
switch(i)
case 1: puts ( «Случай 1. «);
case 2: puts ( «Случай 2. «);
case 3: puts ( «Случай 3. «);
default: puts ( «Случай default. «);
>
>
В данном случае результат будет следующим:
Случай 2.
Случай 3.
Случай default.
14. Оператор выбора альтернатив
Структурная схема рассмотренной конструкции (без использования
оператора break)
switch
Выражение
true
const_1
false
Операторы_1
true
const_2
false
Операторы_2
…
true
const_N
false
Операторы_N
true
default
Операторы_N+1
15. Оператор выбора альтернатив
#include
Пример
void main(void)
double a, b, c;
char s;
m1: fflush(stdin);
// Очистка буфера ввода stdin
printf(«n Введите операнд 1, символ операции, операнд 2:»);
scanf(«%lf%c%lf», s,
switch(s) case ‘+’: c = a+b; break;
case ‘–’: c = a–b; break;
case ‘*’: c = a*b; break;
case ‘/’: c = a/b;
break;
default: printf(«n Ошибка, повторите ввод! «); goto m1;
>
printf(«n a %c b = %lf «, s, c);
printf(«n Продолжим? (Y/y) «);
s = getch();
if ( (s==’Y’) || (s==’y’) ) goto m1;
printf(«n Good bye! «);
>
Источник: ppt-online.org