Общий вид условного оператора 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. Вычислить значение у: 4х - 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
Учебно-методическое обеспечение урока:
- Семакин И.Г., Залогова Л.А, Русаков С.В., Шестакова Л.В. Информатика и ИКТ. Базовый курс: Учебник для 9 класса. – М.: БИНОМ. Лаборатория знаний, 2011
- Задачник-практикум по информатике в II ч. / И. Семакин, Е. Хеннер – М.:БИНОМ. Лаборатория Базовых Знаний, 2010
План урока
- Организационный момент (1 мин)
- Повторение (8 мин)
- Изучение нового материала (7 мин)
- Закрепление (8 мин)
- Практическая работа (18 мин)
- Подведение итогов урока и задание на дом (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) в противном случае”