Слайд 1Презентация по теме «Программирование ветвлений.
Оператор выбора»
Презентацию подготовила
Шерстянкина С.Т. –
преподаватель
информатики
ФГБОУ ВО «КГМТУ» СМТ
Слайд 2Повторим, как графически изображается базовая структура – ветвление.
Слайд 3Общий вид оператора IF:
If условие then оператор_1 else оператор_2;
Определить максимальное из введенных чисел.
Program MAXIM;
Uses Crt;
Var a,b: integer;
Begin
ClrScr;
Write (’Введите первое число’);
Readln (a);
Write (’Введите второе число’);
Readln (b);
If a>b
then Writeln (a,’ большее из двух чисел’)
else Writeln (b,’ большее из двух чисел’);
readln
End.
Слайд 4Сокращенный вид оператора IF:
If условие then оператор ;
Пример использования сокращенного
оператора IF:
отыскать максимальное число среди введенных трех с клавиатуры.
Program max3;
Uses Crt;
Var x, y, z, max: integer;
Begin
ClrScr;
Write (’Введите первое число ’); Readln (x);
Write (’Введите второе число ’); Readln (y);
Write (’Введите третье число ’); Readln (z);
max:=x;
If y>max then max:=y;
If z>max then max:=z;
Writeln (’максимальное число равно ’, max);
readln
End.
Слайд 5 Составной оператор представляет собой группу операторов, размещенную
между служебными словами Begin и End. При этом данная группа операторов воспринимается компилятором как один оператор. Слова Begin и End обозначают начало и конец составного оператора и называются операторными скобками. Операторы, входящие в составной оператор, отделяются друг от друга точкой с запятой. После слова begin и перед словом else точка с запятой не ставится.
Структура условного оператора с составными операторами:
if условие
then Begin
оператор1;
оператор2; … оператор m;
End
else Begin
оператор1;
оператор2; … оператор n;
End;
Слайд 6 Пример использования составного оператора: написать программу вычисления стоимости
покупки с учетом скидки. Каждый покупатель, который приобрел товар на сумму более 100гр., имеет право на трехпроцентную скидку со стоимости покупок.
Program magazin;
Uses Crt;
Var sum,sumsk,skidka:real;
Begin
ClrScr;
Write (’Введите сумму покупки →’); Readln (sum);
If sum >100
then
begin
skidka:=sum*0.03;
sumsk:=sum−skidka;
writeln (’Сумма скидки составляет → ’,skidka:6:2);
writeln (’Покупатель должен заплатить → ’,sumsk:6:2);
end
else
Writeln (’Покупатель оплачивает покупку полностью’);
readln
End.
Слайд 7 Логические переменные.
В
качестве условий, истинность или ложность которых проверяется, чаще всего используются операции сравнения различных величин. В языке Паскаль используется 6 таких операций:
< меньше,
> больше
= равно
<= меньше или равно
>= больше или равно
<> не равно
Результатом операции сравнения может быть величина, которая принимает одно из двух возможных значений: «истинно» (если указанное соотношение выполняется) и «ложно» (если соотношение не выполняется). Соответственно по-английски «истинно» и «ложно» - 1 и 0. Константы и переменные, значениями которых могут быть только эти две величины (1 и 0) называются логическими или булевскими. В Паскале для описания логических переменных существует специальный тип – Boolean.
Слайд 8Пример описания логической переменной:
Var
logic: Boolean;
Логическим переменным можно присваивать значения операций сравнения,
например:
logic:=x>=15;
{если неравенство выполняется, то значение переменной logic – 1, в противоположном случае ее значение – 0}.
Имя логической переменной, которой присвоено значение операции сравнения, можно подставлять в условный оператор вместо самой этой операции.
Можно присваивать значения 1 и 0 логическим переменным напрямую:
logic:= 1;
Можно выводить значения логических переменных на экран оператором Writeln. (Ввод с помощью оператора Read не предусмотрен).
Слайд 9 Пример программы с использованием логических переменных: программа проверяет, имеется ли
в ряду целых чисел хотя бы одно положительное.
Program pozit;
Uses Crt;
Var x,y,z:integer; flag:Boolean;
Begin
ClrScr;
flag:=0;
Write (’Введите первое число’); Readln (x);
If x >0 then flag:=1;
Write (’Введите второе число’); Readln (у);
If у >0 then flag:=1;
Write (’Введите третье число’); Readln (z);
If z >0 then flag:=1;
If flag then writeln (’В ряду чисел имеются положительные’)
еlse writeln (’Все числа отрицательные’);
readln
End.
Слайд 10 Логические операции.
Над
логическими переменными можно производить логические операции. Результатом логических операций могут быть только логические переменные 1 или 0.
Всего в Паскале используется 4 логические операции:
Not («Нет» − логическое отрицание);
And («И» − логическое умножение);
Or («Или» − логическое сложение );
Xor («Исключающее Или»);
Приоритет операций:
1) Not;
2) And, *, div, mod;
3) Or, xor, +, −;
4) Операции отношения.
Слайд 12Пример использования логических операций: составим программу, которая находит сумму цифр двузначного
числа; если число не двузначное, программа выводит об этом сообщение.
Program sumcifr;
Uses Crt;
Var x,c1,c2,sum:integer;
Begin
ClrScr;
Write (’Введите двузначное число → ’); Readln (x);
If (x >=10) and (x<=99)
then
Begin
c1:=x mod 10;
c2:=x div 10;
sum:= c1+ c2;
writeln (Сумма цифр двузначного числа равна ’,sum);
End
else
writeln (’Введены неверные исходные данные’);
readln
End.
Слайд 13 Если в программе требуется нарушить порядок выполнения операторов без
предварительных проверок каких-либо условий, то применяется оператор безусловного перехода GoTo n;
Здесь n – метка той строки в программе, которая должна выполняться после перехода.
Метка – это либо целое число без знака в диапазоне 0…9999, либо идентификатор, определяемый программистом. Метки используются в разделе операторов. Они ставятся перед операторами и отделяются от них двоеточием. Метки должны быть объявлены в разделе описания меток прежде, чем они будут использоваться. Объявление метки начинается словом Label, за которым следует список используемых меток, разделенных запятыми.
Но лучше метками и, соответственно, оператором GoTo не пользоваться, так как они усложняют программу и противоречат принципам структурного программирования. Турбо-Паскаль обладает средствами, позволяющими обходится без использования меток и оператора Goto.
Слайд 14 Рассмотрим пример
Пусть необходимо для заданного Х вычислить
значение a
В алгоритме вычисления по данной формуле предусмотреть проверку первого условия (и вычисление по первой формуле, если оно истинно); затем проверку второго условия, но только в том случае, если первое ложно; вычисление по второй формуле, если второе условие истинно и по третьей, если ложно. Причем если истинно первое условие, то после вычисления по первой формуле происходит выход из структуры Ветвление.
Слайд 15Решение
Program P1;
Var a,x: real;
Label 1,2,3;
Begin
Writeln ('Введите x'); Read (x);
If x<0 Then Goto 1;
If x>=10 Then Goto 2;
a := 2*x;
Goto 3;
1: a := x+1;
Goto 3;
2: a: = 0;
3: Writeln (a);
End.
Слайд 16Оператор выбора CASE.
Многовариантное ветвление.
Структура оператора CASE:
Case управляющая_переменная of
набор_значений_1: оператор_1;
набор_значений_2: оператор_2;
………………………………
набор_значений_N: оператор_N
else
альтернативный_оператор
end;
Слайд 17Тип управляющей_переменной может быть стандартным типом, кроме вещественного, или определен пользователем.
Типы значений должны соответствовать типу управляющей переменной.
Набор_значений – это конкретное значение управляющей_переменной или выражение, при котором нужно выполнить соответствующий оператор, игнорируя остальные варианты.
Набор_значений может быть задан:
перечислением значений через запятую, например: 1,4,5
интервалом значений, например: 1..5,20..30
смешанной формой представления значений, например: 1..5,15,55
Значения в каждом наборе должны быть уникальными, т.е. они могут появляться только в одном варианте. Пересечение наборов значений для разных вариантов является ошибкой. Ключевое слово else может отсутствовать.
Слайд 18Пример использования оператора CASE:
определение времени года по номеру месяца.
Program sezon;
Uses Crt;
Var month:integer;
Begin
ClrScr;
Write (’Введите номер месяца (число от 1 до 12) → ’);
Readln (month);
Case month of
1,2,12: writeln (’Зима’);
3..5: writeln (’Весна’);
6..8: writeln (’Лето’);
9..11: writeln (’Осень’)
else writeln (’Число должно быть от 1 до 12’)
end;
readln
End.