Конспект урока "Программирование разветвляющихся алгоритмов. Простой и составной условные операторы"
Тема урока : Программирование разветвляющихся алгоритмов. Условный оператор.Учебник: Босова Л. Л. Информатика: учебник для 8 класса – М. : БИНОМ. Лаборатория знаний, 2014. – 160 с. : ил.
Тип урока: урок изучения нового материала.
Цели урока :
обучающая : организовать деятельность обучающихся по ознакомлению с синтаксисом условного оператора (оператора if ); создать условия для формирования у обучающихся умения использовать оператор if при написании программ;
развивающая : способствовать повышению интереса к предмету; содействовать развитию алгоритмического мышления у обучающихся; способствовать развитию логического мышления, познавательного интереса, памяти обучающихся;
воспитывающая : способствовать формированию самостоятельности при решении задач; способствовать сплочению коллектива, формированию уважительного отношения друг к другу.
Формируемые универсальные учебные действия (УУД) :
фантазия и воображение при выполнении учебных действий;
желание выполнять учебные действия.
логические действия и операции;
создание и преобразование моделей и схем для решения задач.
формулирование собственного мнения и позиции.
планирование своих действий в соответствии с поставленной задачей и условиями ее реализации.
Личностные УУД :
Познавательные УУД :
Коммуникативные УУД :
Регулятивные УУД :
Оборудование : персональный компьютер (ПК), мультимедийный проектор, экран.
Программные средства : презентация «Программирование разветвляющихся алгоритмов. Условный оператор».
План урока
Ход урока.
1. Организационный моментПриветствие, проверка подготовленности к учебному занятию, организация внимания детей.
Включаются в деловой ритм урока.
2. Актуализация знаний
Здравствуйте, ребята! Сегодня мы переходим к изучению синтаксиса условного оператора в языке Pascal .
Запишите сегодняшнюю дату и тему сегодняшнего урока: «Программирование разветвляющихся алгоритмов. Условный оператор».
Теперь повторим материал из раздела «Алгоритмизация» и предыдущих занятий:
Какую алгоритмическую конструкцию называют ветвлением;
Какие формы ветвления вы знаете;
Изобразите блок-схемы полной и сокращенной форм ветвления;
Как записываются логические функции И, ИЛИ, НЕ в языке Pascal .
(Отвечают на вопросы)
Ветвление – алгоритмическая конструкция, в которой в зависимости от результата проверки условия («да» или «нет») предусмотрен выбор одной из двух последовательностей действий (ветвей).
Существуют полная и сокращенная формы ветвления.
Блок-схемы:
AND, OR, NOT соответственно.
3. Изучение нового материала
А теперь рассмотрим, какой синтаксис имеют операторы ветвления в языке Pascal . Для начала я предлагаю вам заготовить таблицу из двух колонок. Колонки таблицы назовите «Полная форма условного оператора» и «Сокращенная форма условного оператора». Теперь в соответствующие колонки занесите блок-схемы полной и сокращенной форм ветвления, которые изображены на доске.
Ниже запишем общий вид полной и сокращенной форм условного оператора.
Полная форма имеет следующий синтаксис:
if <условие>
then <оператор 1>
else <оператор 2>;
if then , после которого записывается оператор, который выполнится в случае истинности условия. Затем записывается служебное слово else , после которого записывается оператор, который выполнится в том случае, если условие окажется ложным.
Отметьте в тетрадях, что перед служебным словом else знак «;» не ставится.
Краткая форма условного оператора имеет следующий синтаксис:
if <условие>
then <оператор 1>;
Сначала записывается служебное слово if , затем – условие, от истинности которого зависит выполнение той или иной ветки условного оператора. После условия записывается служебное слово then , после которого записывается оператор, который выполнится в случае истинности условия.
Обратите внимание, что если в результате проверки условие окажется ложным, то условный оператор в краткой форме просто будет пропущен, и программа перейдет к выполнению следующих за ним операторов. Для полной формы условного оператора такое утверждение не верно – он выполнится всегда (будет выполнен оператор одной из веток условного оператора).
Также отметьте, что условие в условном операторе – это простое (записанное с помощью операций отношения) или сложное (записанное с помощью логических операций) логическое выражение.
(Составляют таблицу)
if <условие>then <оператор 1>
else <оператор 2>;
if <условие>
then <оператор 1>;
Перед else знак «;» не ставится!
(Записывают в тетрадях)
Условие в условном операторе – это простое (записанное с помощью операций отношения) или сложное (записанное с помощью логических операций) логическое выражение.
4. Закрепление изученного
Рассмотрим с вами следующую задачу (запишите её условие в своих тетрадях): пользователь вводит три различных числа, среди которых необходимо найти минимальное и вывести его на экран.
Давайте попробуем изменить прошлый алгоритм для решения этой задачи так, чтобы применить цикл с постусловием. Пока я буду набирать задачу в редакторе, записывайте её решение у себя в тетради. [ Совместно с обучающимися решаю задачу на компьютере в IDE, попутно решение проецируется на экран ].
Список возможных вопросов обсуждения задачи.
1) Сколько переменных нам необходимо описать?
2) Как последовательно найти минимальный элемент среди известных элементов?
Рассмотрим с вами следующий фрагмент кода:
a:=11;
b:=a div 3;
a:=a-b;
if a*b mod 2 = 0
then writeln(a*b)
else writeln(b-a);
Какими будут значения переменных a и b после выполнения этой последовательности операторов? Что будет выведено на экран?
А теперь пересаживайтесь за компьютеры и выполните следующие задания самостоятельно.
1) Найти значение функции y(x) и вывести его на экран с точностью до тысячных: . Значение x вводится с клавиатуры.
2) Написать программу, определяющую, принадлежит ли точка A(x , y ) закрашенной области, в том числе и границе области:
Записывают условие в тетрадях.
Участвуют в обсуждении задачи, записывают решение в своих тетрадях.
program minimum;
var
a, b, c, min: real;
begin
read(a, b, c);
min:=a;
if b < min then min:=b;
if c < min then min:=c;
writeln (" Min -> ", min );
end .
(Отвечают на вопросы)
a = 8, b = 3. На экран будет выведено число 24.
Самостоятельно оформляют решение задач на компьютере.
Код программы к задаче 1:
program func ;
var
x, y: real;
begin
read(x);
if x <= 5 then
y:=x*x*x+2*x*x-sqrt(5-x)
else
y:=sqrt((x+1)/(3*x*x*x-x));
writeln("y(", x, ") = ", y:0:3);
end .
Код программы к задаче 2:
program point;
var
x, y: real;
begin
readln(x, y);
if (x >= -1) and (x <= 3) and (y >= -2) and (y <= 4) then
writeln ("Точка принадлежит области")
else
writeln ("Точка не принадлежит области");
end.
5. Подведение итогов
Итак, чему вы научились в течение сегодняшнего занятия?
Что представляет собой условие в условном операторе?
Мы изучили синтаксис полной и сокращенной формы условного оператора.
Простое или сложное логическое выражение.
6. Домашнее задание
П. 3.5.
Задачи:
1) Даны три отрезка длиной a, b, c. Проверить, существует ли треугольник с такими сторонами. Если да, то вывести на экран сообщение «Треугольник существует!», найти его площадь и вывести её на следующей строке; если нет, то вывести на экран сообщение «Треугольника не существует».
2) Задача № 14 (учебник 2012 г., стр. 205)
Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит 8. Напишите программу, которая по введенным координатам полей (k , p ) и ( m , n ) определяет, являются ли эти поля полями одного цвета.
Пример входных данныхПример выходных данных
2 2
3 3
Поля одного цвета
2 3
3 3
Поля разного цвета
2 7
5 4
Поля одного цвета
Записывают в дневниках д/з.
Общий вид условного оператора 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 Первая точк">
Разветвляющимся называется алгоритм, в котором последовательность и количество выполняемых команд зависит от выполнения или не выполнения некоторых условий. В разветвляющихся алгоритмах используются команды ветвления и выбора из большого количества вариантов . Графическое изображение команд ветвления представлено на рис.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);