Ошибки

Программирование разветвляющихся алгоритмов условный оператор. Конспект урока "Программирование разветвляющихся алгоритмов. Простой и составной условные операторы". Планируемы образовательные результаты


Общий вид условного оператора else Перед else знак «;» не ставится. Полная форма условного оператора: ifthenelse if then else Сокращённая форма условного оператора: ifthen if then Операции отношений Операции отношений Логические операции Логические операции Простые Сложные Условия - логические выражения!


>"); readln (a, b); write ("Введите x>>"); readln (x); if (x>=a) and (x=a) and (x" title="Условный оператор program n_9; var x, a, b: real; begin writeln ("Определение принадлежности точки отрезку"); write ("Введите а, b>>"); readln (a, b); write ("Введите x>>"); readln (x); if (x>=a) and (x=a) and (x" class="link_thumb"> 4 Условный оператор program n_9; var x, a, b: real; begin writeln ("Определение принадлежности точки отрезку"); write ("Введите а, b>>"); readln (a, b); write ("Введите x>>"); readln (x); if (x>=a) and (x=a) and (x >"); readln (a, b); write ("Введите x>>"); readln (x); if (x>=a) and (x=a) and (x"> >"); readln (a, b); write ("Введите x>>"); readln (x); if (x>=a) and (x=a) and (x"> >"); readln (a, b); write ("Введите x>>"); readln (x); if (x>=a) and (x=a) and (x" title="Условный оператор program n_9; var x, a, b: real; begin writeln ("Определение принадлежности точки отрезку"); write ("Введите а, b>>"); readln (a, b); write ("Введите x>>"); readln (x); if (x>=a) and (x=a) and (x">
>"); readln (a, b); write ("Введите x>>"); readln (x); if (x>=a) and (x=a) and (x" title="Условный оператор program n_9; var x, a, b: real; begin writeln ("Определение принадлежности точки отрезку"); write ("Введите а, b>>"); readln (a, b); write ("Введите x>>"); readln (x); if (x>=a) and (x=a) and (x">


>"); readln (a, b, c); y:=a; if (b>y) then y:=b; if (c>y) then y:=c; writeln ("y=", y) end. " title="Сокращённая форма условного оператора program n_10; var y, a, b, c: integer; begin writeln ("Нахождение наибольшей из трёх величин"); write ("Введите а, b, с>>"); readln (a, b, c); y:=a; if (b>y) then y:=b; if (c>y) then y:=c; writeln ("y=", y) end. " class="link_thumb"> 5 Сокращённая форма условного оператора program n_10; var y, a, b, c: integer; begin writeln ("Нахождение наибольшей из трёх величин"); write ("Введите а, b, с>>"); readln (a, b, c); y:=a; if (b>y) then y:=b; if (c>y) then y:=c; writeln ("y=", y) end. Y:=A B>Y Y:=B Y:=C C>Y данет данет >"); readln (a, b, c); y:=a; if (b>y) then y:=b; if (c>y) then y:=c; writeln ("y=", y) end. "> >"); readln (a, b, c); y:=a; if (b>y) then y:=b; if (c>y) then y:=c; writeln ("y=", y) end. Y:=A B>Y Y:=B Y:=C C>Y данет данет"> >"); readln (a, b, c); y:=a; if (b>y) then y:=b; if (c>y) then y:=c; writeln ("y=", y) end. " title="Сокращённая форма условного оператора program n_10; var y, a, b, c: integer; begin writeln ("Нахождение наибольшей из трёх величин"); write ("Введите а, b, с>>"); readln (a, b, c); y:=a; if (b>y) then y:=b; if (c>y) then y:=c; writeln ("y=", y) end. ">
>"); readln (a, b, c); y:=a; if (b>y) then y:=b; if (c>y) then y:=c; writeln ("y=", y) end. " title="Сокращённая форма условного оператора program n_10; var y, a, b, c: integer; begin writeln ("Нахождение наибольшей из трёх величин"); write ("Введите а, b, с>>"); readln (a, b, c); y:=a; if (b>y) then y:=b; if (c>y) then y:=c; writeln ("y=", y) end. ">


Составной оператор thenelse В условном операторе и после then, и после else можно использовать только один оператор. then else Если в условном операторе после then или после else нужно выполнить несколько операторов, то используют составной оператор – конструкцию вида: begin end


0 да Начало Введите коэффициенты a, b, c d:=b*b-4*a*c d 0 да Начало Введите коэффициенты a, b, c d:=b*b-4*a*c d 7 Блок-схема решения КВУР Конец Вывод «Корни уравнения: х1=», х1, «х2=», х2 х1:=(-b+sqrt(d))/2/a d>0 да Начало Введите коэффициенты a, b, c d:=b*b-4*a*c d 0 да Начало Введите коэффициенты a, b, c d:=b*b-4*a*c d 0 да Начало Введите коэффициенты a, b, c d:=b*b-4*a*c d 0 да Начало Введите коэффициенты a, b, c d:=b*b-4*a*c d 0 да Начало Введите коэффициенты a, b, c d:=b*b-4*a*c d title="Блок-схема решения КВУР Конец Вывод «Корни уравнения: х1=», х1, «х2=», х2 х1:=(-b+sqrt(d))/2/a d>0 да Начало Введите коэффициенты a, b, c d:=b*b-4*a*c d


Begin x1:=(-b+sqrt(d))/2/a; x2:=(-b-sqrt(d))/2/a; writeln ("Корни уравнения:"); writeln ("x1=", x1:9:3); writeln ("x2=", x2:9:3) end; begin x1:=(-b+sqrt(d))/2/a; x2:=(-b-sqrt(d))/2/a; writeln ("Корни уравнения:"); writeln ("x1=", x1:9:3); writeln ("x2=", x2:9:3) end; begin x:=-b/2/a; writeln ("Корень уравнения x=", x:9:3) end; begin x:=-b/2/a; writeln ("Корень уравнения x=", x:9:3) end; program n_11; var a, b, c: real; var d: real; var x, x1, x2: real; begin writeln ("Решение квадратного уравнения"); write ("Введите коэффициенты a, b, c >>"); readln (a, b, c); d:=b*b-4*a*c; if d0 then end. >"); readln (a, b, c); d:=b*b-4*a*c; if d0 then end.">




>"); readln (a, b); if a0 then begin x:=-b/a; writeln ("Корень уравнения x=", x:9:3) end else if b0 then wri" title="Решение линейного уравнения program n_12; var a, b, x: real; begin writeln ("Решение линейного уравнения"); write ("Введите коэффициенты a, b>>"); readln (a, b); if a0 then begin x:=-b/a; writeln ("Корень уравнения x=", x:9:3) end else if b0 then wri" class="link_thumb"> 10 Решение линейного уравнения program n_12; var a, b, x: real; begin writeln ("Решение линейного уравнения"); write ("Введите коэффициенты a, b>>"); readln (a, b); if a0 then begin x:=-b/a; writeln ("Корень уравнения x=", x:9:3) end else if b0 then writeln ("Корней нет") else writeln ("x – любое число"); end. Корней нет Список данных a, b, x - вещ a, b a0 x:=-b/a b0 Любое число нет да нет >"); readln (a, b); if a0 then begin x:=-b/a; writeln ("Корень уравнения x=", x:9:3) end else if b0 then wri"> >"); readln (a, b); if a0 then begin x:=-b/a; writeln ("Корень уравнения x=", x:9:3) end else if b0 then writeln ("Корней нет") else writeln ("x – любое число"); end. Корней нет Список данных a, b, x - вещ a, b a0 x:=-b/a b0 Любое число нет да нет"> >"); readln (a, b); if a0 then begin x:=-b/a; writeln ("Корень уравнения x=", x:9:3) end else if b0 then wri" title="Решение линейного уравнения program n_12; var a, b, x: real; begin writeln ("Решение линейного уравнения"); write ("Введите коэффициенты a, b>>"); readln (a, b); if a0 then begin x:=-b/a; writeln ("Корень уравнения x=", x:9:3) end else if b0 then wri">
>"); readln (a, b); if a0 then begin x:=-b/a; writeln ("Корень уравнения x=", x:9:3) end else if b0 then wri" title="Решение линейного уравнения program n_12; var a, b, x: real; begin writeln ("Решение линейного уравнения"); write ("Введите коэффициенты a, b>>"); readln (a, b); if a0 then begin x:=-b/a; writeln ("Корень уравнения x=", x:9:3) end else if b0 then wri">


Самое главное При записи на языке Паскаль разветвляющихся алгоритмов используют условный оператор: if then else Для записи неполных ветвлений используется сокращённый условный оператор: if then Если при некотором условии требуется выполнить определённую последовательных операторов, то их объединяют в один составной оператор, имеющий вид: begin end.


>3, 4 Первая точк" title="Вопросы и задания Как на языке Паскаль записывается полное и неполное ветвление? Является ли условным оператором последовательность символов? а) if x=y then x:=0; y:=0 else write (z) в) if xb then d:=2; if a1, 2 Координаты 2-й точки>>3, 4 Первая точк" class="link_thumb"> 12 Вопросы и задания Как на языке Паскаль записывается полное и неполное ветвление? Является ли условным оператором последовательность символов? а) if x=y then x:=0; y:=0 else write (z) в) if xb then d:=2; if a1, 2 Координаты 2-й точки>>3, 4 Первая точка ближе Пример входных данныхПример выходных данных a b c>> 1 2 1Не существует a b c>> 2 2 2Равносторонний a b c>> Равнобедренный a b c>> 3 4 5Разносторонний Даны три натуральных числа. Напишите программу, определяющую, существует ли треугольник с такими длинами сторон. Если такой треугольник существует, то определите его тип (равносторонний, равнобедренный, разносторонний). Имеются данные о количестве полных лет трёх призёров спартакиады. Напишите программу, выбирающую и выводящую возраст самого младшего призёра. Пример входных данныхПример выходных данных k, 1>>-1 5 xa, ya >>1 2 Точка лежит под прямой k, 1>>-1 5 xa, ya >>1 10 Точка лежит над прямой k, 1>>-1 5 xa, ya >>1 4 Точка лежит на прямой Напишите программу, определяющую, лежит ли точка А(ха, ya): а) на прямой y = kx + 1, над ней или под ней; б) на окружности x 2 + y 2 = r 2, над ней или под ней. Примеры входных данных и соответствующих им выходных данных разработайте самостоятельно. Пример входных данныхПример выходных данных x >> 5 y >> 6 x = 5 y = 6 x >> 6 y >> 5 x = 5 y = 6 Напишите программу, которая производит обмен значений переменных x и y, если x больше y. Дан условный оператор: If a5 then c:=2 else c:=3 Какое значение имеет переменная а, если в результате выполнения условного оператора переменной с присваивается значение 3? Пример входных данныхПример выходных данных -5y = - 1 0y = 0 5y = 1 Напишите программу, вычисляющую значение функции: -1 при x 0 y = Составьте программу для решения задачи: Известно, что 31 января 2011 года приходится на понедельник. Какие значения должны быть присвоены литерной переменной y в алгоритме, определяющем день недели для любого числа (chislo) января 2011 года? chislo:= chislo mod 7 если chislo=3 то у:="… если chislo=4 то у:="… если chislo=5 то у:="… если chislo=6 то у:="… если chislo=0 то у:="… если chislo=1 то у:="… если chislo=2 то у:="… Пример входных данныхПример выходных данных Координаты 1 – го поля >> 2 2 Координаты 2 – го поля >> 3 3 Поля одного цвета Координаты 1 – го поля >> 2 3 Координаты 2 – го поля >> 3 3 Поля разного цвета Координаты 1 – го поля >> 2 7 Координаты 2 – го поля >> 5 4 Поля одного цвета Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит 8. Напишите программу, которая по введённым координатам двух полей (k, l) и (m, n) определяет, являются ли эти поля полями одного цвета. Напишите программу, в которой пользователю предлагается дополнить до 100 некоторое целое число а (а - случайное число, меньшее 100). Ответ пользователя проверяется и комментируется. >3, 4 Первая точк"> >3, 4 Первая точка ближе Пример входных данныхПример выходных данных a b c>> 1 2 1Не существует a b c>> 2 2 2Равносторонний a b c>> 20 20 30Равнобедренный a b c>> 3 4 5Разносторонний Даны три натуральных числа. Напишите программу, определяющую, существует ли треугольник с такими длинами сторон. Если такой треугольник существует, то определите его тип (равносторонний, равнобедренный, разносторонний). Имеются данные о количестве полных лет трёх призёров спартакиады. Напишите программу, выбирающую и выводящую возраст самого младшего призёра. Пример входных данныхПример выходных данных k, 1>>-1 5 xa, ya >>1 2 Точка лежит под прямой k, 1>>-1 5 xa, ya >>1 10 Точка лежит над прямой k, 1>>-1 5 xa, ya >>1 4 Точка лежит на прямой Напишите программу, определяющую, лежит ли точка А(ха, ya): а) на прямой y = kx + 1, над ней или под ней; б) на окружности x 2 + y 2 = r 2, над ней или под ней. Примеры входных данных и соответствующих им выходных данных разработайте самостоятельно. Пример входных данныхПример выходных данных x >> 5 y >> 6 x = 5 y = 6 x >> 6 y >> 5 x = 5 y = 6 Напишите программу, которая производит обмен значений переменных x и y, если x больше y. Дан условный оператор: If a5 then c:=2 else c:=3 Какое значение имеет переменная а, если в результате выполнения условного оператора переменной с присваивается значение 3? Пример входных данныхПример выходных данных -5y = - 1 0y = 0 5y = 1 Напишите программу, вычисляющую значение функции: -1 при x 0 y = Составьте программу для решения задачи: Известно, что 31 января 2011 года приходится на понедельник. Какие значения должны быть присвоены литерной переменной y в алгоритме, определяющем день недели для любого числа (chislo) января 2011 года? chislo:= chislo mod 7 если chislo=3 то у:="… если chislo=4 то у:="… если chislo=5 то у:="… если chislo=6 то у:="… если chislo=0 то у:="… если chislo=1 то у:="… если chislo=2 то у:="… Пример входных данныхПример выходных данных Координаты 1 – го поля >> 2 2 Координаты 2 – го поля >> 3 3 Поля одного цвета Координаты 1 – го поля >> 2 3 Координаты 2 – го поля >> 3 3 Поля разного цвета Координаты 1 – го поля >> 2 7 Координаты 2 – го поля >> 5 4 Поля одного цвета Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит 8. Напишите программу, которая по введённым координатам двух полей (k, l) и (m, n) определяет, являются ли эти поля полями одного цвета. Напишите программу, в которой пользователю предлагается дополнить до 100 некоторое целое число а (а - случайное число, меньшее 100). Ответ пользователя проверяется и комментируется."> >3, 4 Первая точк" title="Вопросы и задания Как на языке Паскаль записывается полное и неполное ветвление? Является ли условным оператором последовательность символов? а) if x=y then x:=0; y:=0 else write (z) в) if xb then d:=2; if a1, 2 Координаты 2-й точки>>3, 4 Первая точк"> title="Вопросы и задания Как на языке Паскаль записывается полное и неполное ветвление? Является ли условным оператором последовательность символов? а) if x=y then x:=0; y:=0 else write (z) в) if xb then d:=2; if a1, 2 Координаты 2-й точки>>3, 4 Первая точк">



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

Условный оператор

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

Краткая форма оператора ф. Краткая форма условного оператора записывается следующим образом:

где - это выражение логического типа, про которое можно сказать, что оно «истина» или «ложь» (фактически, это вопрос, предполагающий только 2 варианта ответа - «Да» или «Нет»), В зависимости от (от ответа на вопрос) происходит дальнейшее выполнение программы.

Описание работы краткой формы оператора ф. Оператор И” в краткой форме работает следующим образом:

  • вычисляется выражение, записанное в условии (формулируется ответ на вопрос, записанный в условии);
  • если получили результат - «истина» (не равно 0 - ответ «Да»), то выполняется;
  • если «ложь» (равно 0 - ответ «Нет»), то выполняется следующая за условным оператором строка программы.

На схеме алгоритма краткая форма ії представлена следующим образом (рис. 4.1).

Рис. 4.1.

Пример программы с краткой формой оператора 1/. Вычислить ш = тт(с,б).

1. Схема алгоритма

Пояснение. Входными данными являются переменные с и б. После ввода входных данных (переменных с и б) переменной ш (предполагаемый минимум) присваивается значение переменной с. Затем проверяется условие б

2. Программа

#include //подключ, стандартной библиотеки

//ввода-вывода

int main () { //заголовок функции main(9

int с, d, m; //описание переменных с, d, m типа int

printf ("Введите через пробел с и d "); /* вывод на экран

приглашения к вводу с и d и перевод курсора на начало следующей строки экрана */ scanf (" %d%d" , &с, &d) ; //ввод значений переменных с и d

m=c; //оператор присваивания переменной m значения переменной с

if (d //если d

m=d; //то присваиваем переменной m значение переменной d

printf("m=%d ",m);

//вывод m и перевод курсора на начало следующей строки экрана getchar () ;

Полная форма оператора if. Полная форма условного оператора записывается следующим образом:

; else ; if и else - ключевые слова;

Это выражение логического или арифметического типа, про которое можно сказать, что оно «истина» (арифметическое выражение не равно нулю) или «ложь» (арифметическое выражение равно нулю) - фактически, это вопрос, предполагающий только 2 варианта ответа - «Да» или «Нет». В зависимости от происходит дальнейшее выполнение программы.

Оператор, который выполняется, если условие истинно (не равно нулю);

Оператор, который выполняется, если условие ложно (равно нулю).

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

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

На схеме алгоритма полная форма ії представлена следующим образом (рис. 4.2).

Рис. 4.2.

х + 0,5, если х

Задача 2. Дано х. Вычислить у -

- + 1, если х > 0,6.

1. Схема алгоритма


Пояснение. Входным данным является переменная X. Перед вычислением У проверяется условие «X

2. Программа

ttinclude

main () //описание переменных х, у типа double

scanf("%lf",&x); if (x

х

//ввод значения переменной х

//если х//то вычисляем у=х+0.5 //иначе вычисляем у=х/2+1

printf("y=%lf ",у);

//остановка работы программы до нажатия любой клавиши

Пояснение. Так как у вычисляется по одной из двух формул в зависимости от значения х, то в программе используется условный оператор if. После вычисления у по одной из формул значение у выводится на экран по форматной спецификации %lf, так как у имеет тип

В качестве одного из операторов, «встроенных» в условный оператор, можно также использовать новый условный оператор.

Задача 3. Вычислить значение у: - 2, если х

х + 4, если х > -210.

1. Схема алгоритма


Пояснение. Входным данным является X. Перед вычислением у проверяется условие «X

то происходит вычисление значения У по формуле У = 4 X - 2 (X -2). После вычисления У (по одной из формул) на экран выводится результат (значение У).

2. Программа

double x, у; printf("Введите

scant("%lf",&x); if (x

//подключ, стандарт, библиотеки

//ввода-вывода //заголовок функции main(9 //описание переменных х, у типа double

//вывод на экран приглашения к вводу переменной х

//ввод значения переменной х

//если х//то вычисляем у=4 * х+2 //иначе если х//то вычисляем у=10*х+5 //иначе вычисляем у = х+4

printf("y=%lf ",у);

//выводу и перевод курсора на начало следующей строки экрана get char () ; //остановка работы программы до нажатия любой

клавиши

Пояснение. Так как у вычисляется по одной из трех формул в зависимости от значения х, то в программе используются два условных оператора if (с вложением). После ввода значения х с клавиатуры выполняется проверка условия «х

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

Пример 1. Даны а, Ь, с - коэффициенты квадратного уравнения ах 2 + Ьх+ с = 0. Найти корни этого уравнения или вывести сообщение «корней нет», считая, что а Ф 0.

1. Схема алгоритма

Пояснение. Входными данными являются коэффициенты квадратного уравнения - переменные а, Ь, с. Сначала вычисляется дискриминант квадратного уравнения б = Ь 2 - 4 а с. Если дискриминант больше или равен нулю (б > 0), то вычисляются два корня квадратного уравнения по следующим формулам:

, -Ь - л1ь 2 -4ас Л -Ь + у!ь 2 -4ас х1 =-; х2 - -.

2а 2 а

Затем на экран выводятся результаты (значения переменных х1 и х2).

Если дискриминант меньше нуля (б

2. Программа

/1подключение стандартной библиотеки ввода-вывода #include Цподключение библиотеки математических

//функций

int main () { //заголовок функции main$

double a ,b, с, xl ,х2 , d; //описаниепеременных

printf("Введите через пробел а,Ь,сп");

//вывод приглашения к вводу значений переменных а, b, с scant (" %lf %lf %lf", &a, &b,&c) ; //ввод значений переменных a ,b, c

d=b*b-4*a*c; //вычисление дискриминанта (д.)

if (d>=0) //если d>=0

(xl=(-b-sqrt(d))/(2*a);

//то вычисляем корни квадратного уравнения xl и х2 х2 =(-b+sqrt(d))/(2*а);

printf ("xl = %lf x2 = %lf " , xl, х2) ; //и выводим их на экран

else //если d

printf ("Корней нетп") ; //выводим текст «Корней нет»

getchar (); return 0;

Пример 2. Вычислить значение у - - + -. Если у вычислить

нельзя, то вывести на экран сообщение об этом. Значение х вводится с клавиатуры.

Данную задачу можно решить двумя способами: а) используя логическое И (&&); б) используя логическое ИЛИ 1-й способ (использование логического И).

1. Схема алгоритма

Вывод Y

Нельзя вы-

числить Y!»

Пояснение. Входным данным является X. На нуль делить нельзя, поэтому знаменатели дробей не должны быть равны нулю (в условии задачи даны две дроби: 1/Х и 3/(Х+ 1)). Таким образом, для вычисления Y надо проверить, что знаменатели обеих дробей одновременно не равны нулю. Для этого проверяется сложное условие «X Ф 0 и X + 1 Ф 0». Если оно истинно (ответ «Да» на оба вопроса), то происходит вычисление значения Y и вывод его на экран. Если условие ложно (ответ «Нет» хотя бы на один из вопросов), то выводится сообщение «Нельзя вычислить Y!».

2. Программа

#include int main() {

double x,y; printf("Введите x ");

if ((x!=0)&&(x+3!=0)){ //если одновременно хФО их+1^0

у=1/х+3/ (х+1) ; //вычисляем у

printf ("y=51f " ,у) ; //ивыводим у на экран

else printf("Нельзя вычислить у!п"); getchar(); return 0;

Пояснение. Для вычисления у необходимо, чтобы одновременно знаменатели обеих дробей были не равны нулю. Для этого используется операция && (логическое И). В операторе И"проверяется сложное условие «х ф 0 и х+1 ф 0» (в С++ оно записывается в виде ((х! =0) && ((х+1) 1=0), причем каждое простое условие заключается в отдельные круглые скобки).

  • 2-й способ (использование ИЛИ).
  • 1. Схема алгоритма

^ Начало ^

Z1 Ввод X 3^

Вывод У З 7

Пояснение. При решении задачи с помощью «логического ИЛИ» проверяется невозможность вычисления Y. Для этого надо проверить, что хотя бы один из знаменателей дробей равен нулю. Для этого проверяется сложное условие «X = 0 или X -г 1 = 0». Если оно истинно (ответ «Да» хотя бы на один из вопросов), то выводится сообщение «Нельзя вычислить Y!». Если условие ложно (ответ «Нет» на оба вопроса), то происходит вычисление значения Y и вывод его на экран.

2. Программа

printf("Введите x ");

scant("%lf",&x);

if ((x==0) I I (x+l==0))

printf("Нельзя вычислить y! ");

else (y=l/x+3/(x+1);

printf("y=%lf ",y);

getchar(); return 0;

Пояснение. В программе используется операция | | (логическое ИЛИ). В операторе if проверяется сложное условие «х=0 или х+1=0» (в C++ оно записывается в виде ((х==0) I I ((х+1) ==0)).

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

Рис. 3.1 Команды ветвления: а) – в полной форме; б) , в) – в сокращенной– форме

Для программирования ветвлений используется оператор if , а для программирования выбора – операторы switch и break .

3.2 Операторы управления разветвляющимся вычислительным процессом

3.2.1 Логические выражения

Логическое выражение (условие) - выражение, которое содержит знаки операций отношения и/или знаки логических операций . Значением логического выражения может быть только 1, если логическое выражение есть ИСТИНА (true), или 0, если логическое выражение ЛОЖЬ (false).

Операции отношения являются бинарными и обозначаются следующим образом (приведены в порядке уменьшения приоритета):

< (меньше);

<= (меньше или равно);

> (больше);

>= (больше или равно);

== (равно);

!= (не равно).

Примеры: a=8.1, d<>(w-c).

Логические операции – это операции:

&& - логическое И (бинарная операция);

|| - логическое ИЛИ (бинарная операция);

! - логическое НЕ (унарная операция).

Логические операции имеют более низкий приоритет, чем операции отношения. Результаты выполнения логических операций приведены в таблицах 3.1-3.3.

Таблица 3.1 Таблица3.2 Таблица 3.3

Например, логическое выражение a>3 && c<7 при a=5, c=6 будет иметь значение ИСТИНА, а при a=3, c=8 – ЛОЖЬ; логическое выражение a>3 || c<7 при a=5, c=6 будет иметь значение ИСТИНА, при a=2, c=6 – ЛОЖЬ; при a=7 логическое выражение!a>2 будет иметь значение ЛОЖЬ.

При составлении логических выражений следует учитывать приоритет выполнения операций.

Примеры записи логических выражений приведены в таблице 3.4.

Таблица 3.4

Таблица записи логических выражений

Условие

Логическое выражение

x>=a && x<=b

xb

или

x>=a && x<=b || x>=c && x<=d

Хотя бы одно из чисел x, y положительное

x>0 || y>0

Только одно из чисел x, y положительное

(x>0 && !y>0) || (y>0 && !x>0)

Ни одно из чисел x, y не является четным

x % 2 !=0 && y % 2 !=0

Точка (x,y) принадлежит заштрихованной области

x>=0 && x<=a && y>=0 && y<=b/a*x

Для программирования разветвляющихся алгоритмов используются: условный оператор , оператор выбора иоператор безусловного перехода .

1. Условный оператор имеет полную и сокращенную форму записи. Полная форма условного оператора имеет вид:

if логическое выражение then оператор_1 else оператор_2 ;

Вычисляется значение логического выражения оператор_1 , если же - false - оператор_2.

Сокращенная форма условного оператора имеет вид:

if <логическое выражение> then <оператор> ;

Вычисляется значение логического выражения ; если оно равно true, то выполняется оператор , записанный после then, если же - false, то этот оператор не выполняется.

Примеры :

if x>y

then z:=sqr(x)else z:=y;

Здесь в результате выполнения условного оператора переменная z в любом случае получает новое значение.

if (x>=2) and(x<4)then b:=sin(x);

Здесь, например, при x = 5 переменная b сохраняет то значение, которое она имела до выполнения условного оператора.

В условном операторе после служебных слов then или else записывается лишь один оператор; если необходимо выполнить несколько действий, то соответствующие операторы объединяются в составной оператор, который имеет вид: begin оператор_1 ;

оператор_2 ;

оператор_n

Пример : if x>y then begin min:=y; max:=x end

else begin min:=x; max:=y end;

2. С помощью оператора выбора можно выбрать один из любого количества вариантов. Оператор выбора имеет вид:

case < выражение> of

< константа_1 > : < оператор_1 > ;

< константа_2 > : < оператор_2 > ;

< константа_ n> : < оператор_ n> ;

else оператор

end ;

Сначала вычисляется значение выражения (имеющего порядковый тип), затем среди констант отыскивается константа, равная вычисленному значению. Выполняется оператор , записанный после найденной константы, и оператор выбора завершает работу. Если в списке выбора не будет найдена константа, соответствующая вычисленному значению выражения, то выполняется оператор , стоящий за словом else . Если же часть else оператор отсутствует, и в списке выбора нет нужной константы, то выполнение оператора выбора завершается.

Пример :case mof

12,1,2: writeln(‘зима’);

3,4,5: writeln(‘весна’);

6,7,8: writeln(‘лето‘);

9,10,11: writeln(‘осень’)

else writeln(‘ошибка в данных’)

end ;

3. Оператор безусловного перехода позволяет перейти к нужному оператору, при этом нарушается естественный порядок выполнения операторов. Оператор имеет вид: goto метка ;

В качестве метки используется идентификатор или целое число без знака (0-9999). Метка описывается в разделе label:

label метка _1,метка _2, метка_ n ;

Например: label 1,ab;

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

метка:оператор ;

Например: ab: writeln(‘переход по метке’);

Пример : label t;

var x,y:real;

begin goto t; …..

t: y: =sqr(x); …..

Программирование циклических алгоритмов

Для программирования циклических алгоритмов используются операторы цикла. В языке Pascal различают три вида операторов цикла: for , while , repeat . Оператор цикла for имеет вид:

for параметр цикла := выражение_1 to выражение_2 do оператор ;

for параметр цикла :=выражение_1 downto выражение_2 do оператор;

параметр цикла - переменная порядкового типа;

выражение_1 - начальное значение параметра цикла;

выражение_2 – конечное значение параметра цикла.

Сначала вычисляются и запоминаются значения выражения_1 и выражения_2 . Далее проверяется: значение выражения_1 меньше или равно (для downto - больше или равно) значению выражения_2 . Если нет, то выполнение оператора цикла завершается, если же - да, то параметр цикла получает значение выражения_1 , выполняется оператор и параметр цикла получает следующее значение (для downto – предыдущее значение). Затем проверяется: параметр цикла меньше или равен (для downto - больше или равен) значению выражения_2 . Если да, то снова выполняется оператор и параметр цикла получает новое значение, если же - нет, то выполнение оператора цикла завершается.

Примеры :

for i:=1to 10do writeln(‘i=’,i);

for i:= 10downto 1do writeln(‘i=’,i);

Оператор цикла while имеет вид:

while логическое выражение do оператор ;

Пока значение логического выражения true, выполняется оператор , записанный после служебного слова do, как только значение станет false, оператор цикла завершит свою работу. Если значение выражения с самого начала false, то указанный в цикле оператор не выполнится ни разу.

Пример : i:=1;

while i<=10 do

begin writeln(‘i=’,i);

е nd;

Оператор цикла repeat имеет вид:

операторы

until логическое выражение ;

Операторы выполняются до тех пор, пока значение логического выражения не станет true. Поэтому, независимо от значения логического выражения , операторы , указанные в цикле repeat, выполнятся, по крайней мере, один раз.

Пример : i:=1;

repeat writeln(‘i=’,i);

Разделы: Информатика

Класс: 9

Тип урока: комбинированный, изучение нового материала.

Место урока в теме : 1 урок

Цели урока:

  • Повторить и закрепить материал по теме “Алгоритм”
  • Ввести понятие “условный оператор”
  • Познакомить со способами записи разветвляющегося алгоритма на языке Pascal
  • Применить полученные знания при решении жизненных ситуаций и различных задач

Задачи урока:

  • Воспитательная – развитие познавательного интереса, логического мышления
  • Учебная – освоение умений составления разветвляющихся алгоритмов
  • Развивающая – развитие алгоритмического мышления, памяти, внимательности

Материально-техническое обеспечение урока:

  • Наглядные и дидактические материалы
  • Презентация для интерактивной доски, выполненная в программе Notebook (см. <Приложение 1 >)
  • Карточки с текстом задач

Технические средства обучения

  • ПК учителя
  • Мультимедийный проектор
  • Интерактивная доска SMART Board
  • ПК учащихся

Программные средства

  • Операционная система Windows ХР
  • Система программирования Free Pascal
  • Программное обеспечение интерактивной доски SMART Board

Учебно-методическое обеспечение урока:

  1. Семакин И.Г., Залогова Л.А, Русаков С.В., Шестакова Л.В. Информатика и ИКТ. Базовый курс: Учебник для 9 класса. – М.: БИНОМ. Лаборатория знаний, 2011
  2. Задачник-практикум по информатике в II ч. / И. Семакин, Е. Хеннер – М.:БИНОМ. Лаборатория Базовых Знаний, 2010

План урока

  1. Организационный момент (1 мин)
  2. Повторение (8 мин)
  3. Изучение нового материала (7 мин)
  4. Закрепление (8 мин)
  5. Практическая работа (18 мин)
  6. Подведение итогов урока и задание на дом (3 мин)

Ход урока

1. Организационный момент

2. Повторение

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

Проверим, как вы усвоили этот материал.

Работаем устно.

<Рисунок1>.

Рисунок1

Задание№1

1) Прокомментируйте каждую строку программы (см. <Рисунок1>):

Дополнительные вопросы:

Перечислите целые типы Pascal;

Перечислите операторы ввода;

Для чего служит оператор присваивания;

Перечислите операторы вывода;

Какие переменные будут входными, какие выходными.

2) Определите результат выполнения программы при следующих входных данных.

На доску проецируется слайд презентации, содержащий <Рисунок2>.

Рисунок2

Задание№2

Установите соответствие между математической записью алгебраического выражения и записью алгебраического выражения на языке Pascal (см. <Рисунок2>).

Какое алгебраическое выражение соответствует пункту а?

Назовите математический смысл функций sqr и sqrt.

Как записываются на Pascal арифметические операции над целыми числами и вещественными числами?

На доску проецируется слайд презентации, содержащий <Рисунок3>.

Рисунок3

Задание№3

1) Найдите 5 ошибок в программе вычисления значения переменной y (см. <Рисунок3>).

2) Перечислите вещественные типы Pascal.

Изучение нового материала

На доску проецируется слайд презентации, содержащий <Рисунок4 >.

У всех рассмотренных нами до сих пор программ была линейная структура

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

Однако не любую задачу можно решить с помощью линейного алгоритма

Например, значение переменной y, заданной формулой ,

в зависимости от значения переменной x будет вычисляться либо по формуле , либо по формуле 2.

В данном случае мы имеем дело с другой алгоритмической структурой – разветвлением.

Сегодня на уроке:

  • вы узнаете, как решаются подобные задачи;
  • научитесь составлять программы разветвляющихся алгоритмов на языке Pascal

Запишите тему урока

“Программирование разветвляющихся алгоритмов на языке Pascal”

Вспомним:

1) Какой алгоритм называется разветвляющимся?

2) Что означает структура ветвления? (выбор одного из альтернативных путей работы алгоритма в зависимости от результата проверки условия)

Существуют две формы ветвления: полная и неполная (<Рисунок5>)

В полной форме при истинности условия выполняется действие 1, при ложности условия – действие 2.

(Пример – Если у меня повысилась температура, то я вызываю врача,…иду на работу)

В неполной форме действие выполняется только при истинности условия.

(Пример – Если на улице дождь – то я беру с собой зонт)

Для реализации структуры “ветвления” на языке Pascal используется условный оператор.

Запись в тетрадях:

1) Полная форма условного оператора

IF условие THEN действие1 ELSE действие2;

2) Неполная форма условного оператора

IF условие THEN действие;

Русский перевод условного оператора: IF-если, THEN- то, ELSE – иначе.

Условия могут быть простыми и сложными.

Для составления простых условий используют операции сравнения: <, >, <=, >=, <>, =.

Слева и справа от знака сравнения записывают арифметические выражения.

Рассмотрим примеры записи условных операторов.

Закрепление материала

На доску проецируется слайд презентации, содержащий <Рисунок6>.

Задание№4

Дано ветвление (см. <Рисунок6>):

1) Назовите условие

2) Назовите действие, которое будет выполняться в случае Истинности условия; в случае Ложности условия.

3) Запишите условный оператор (записи ведутся на интерактивной доске и в тетрадях учащихся).

4) При каких значениях x выполняется действие y:= x-1? (x4)

Условия x>4 и x4 два взаимоисключающих условия в нашем случае

1 – Истинно 2 – Ложно

1 – Ложно 2 – Истинно

Во второй блок-схеме в качестве условия укажем x4

5) Заполните действия во второй блок-схеме (записи ведутся на интерактивной доске и в тетрадях учащихся).

6) Заполните условный оператор для второй блок-схемы (записи ведутся на интерактивной доске и в тетрадях учащихся).

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

Практическая работа

Выполнение практического задания.

На доску проецируется слайд презентации, содержащий <Рисунок7>

Карточка №1

Задание№5

Составьте программу вычисления значения переменной

= ; x, y – целые числа

Этапы работы:

Составление блок-схемы (см. <Рисунок7>)

(записи ведутся на интерактивной доске и в тетрадях учащихся)

Составление компьютерной модели (учащиеся работают за ПК)

На доску проецируется слайд презентации, содержащий <Рисунок8>

Компьютерный эксперимент (тестирование программы)(см. <Рисунок8>)

Анализ результатов компьютерного эксперимента

Самостоятельное выполнение практического задания.

На доску проецируется слайд презентации, содержащий <Рисунок9>, содержащий тест для программы.

Подведение итогов урока и задание на дом

Оценивание работы учащихся на уроке, оценивание практической работы.

Мы познакомились с условным оператором

Научились составлять программы для разветвляющихся алгоритмов

На следующем уроке мы продолжим изучения данной темы

Рассмотрим правила составления сложных условий, познакомимся с логическими операциями

Задание на дом:

Параграф 37, записи в тетради, решить задачу:

“Даны числа x и y. Вычислите число z, равное (x+y), если x y и (1-x+y) в противном случае”