Презентация по информатике на тему Программирование ветвлений. Оператор выбора 11 класс


Презентация по теме «Программирование ветвлений. Оператор выбора» Презентацию подготовилаШерстянкина С.Т. – преподаватель информатики ФГБОУ ВО «КГМТУ» СМТ Повторим, как графически изображается базовая структура – ветвление. Общий вид оператора 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,’ большее из двух чисел’); readlnEnd. начало Ввод а иb a>b Вывод а конец Вывод b then + else– Сокращенный вид оператора 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); readlnEnd. Составной оператор представляет собой группу операторов, размещенную между служебными словами Begin и End. При этом данная группа операторов воспринимается компилятором как один оператор. Слова Begin и End обозначают начало и конец составного оператора и называются операторными скобками. Операторы, входящие в составной оператор, отделяются друг от друга точкой с запятой. После слова begin и перед словом else точка с запятой не ставится. Структура условного оператора с составными операторами: if условие then Begin оператор1; оператор2; … оператор m; End else Begin оператор1; оператор2; … оператор n; End; Пример использования составного оператора: написать программу вычисления стоимости покупки с учетом скидки. Каждый покупатель, который приобрел товар на сумму более 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 (’Покупатель оплачивает покупку полностью’); readlnEnd. Логические переменные. В качестве условий, истинность или ложность которых проверяется, чаще всего используются операции сравнения различных величин. В языке Паскаль используется 6 таких операций:< меньше,> больше= равно<= меньше или равно>= больше или равно<> не равноРезультатом операции сравнения может быть величина, которая принимает одно из двух возможных значений: «истинно» (если указанное соотношение выполняется) и «ложно» (если соотношение не выполняется). Соответственно по-английски «истинно» и «ложно» - 1 и 0. Константы и переменные, значениями которых могут быть только эти две величины (1 и 0) называются логическими или булевскими. В Паскале для описания логических переменных существует специальный тип – Boolean. Пример описания логической переменной: Var logic: Boolean;Логическим переменным можно присваивать значения операций сравнения,например: logic:=x>=15; {если неравенство выполняется, то значение переменной logic – 1, в противоположном случае ее значение – 0}. Имя логической переменной, которой присвоено значение операции сравнения, можно подставлять в условный оператор вместо самой этой операции. Можно присваивать значения 1 и 0 логическим переменным напрямую: logic:= 1; Можно выводить значения логических переменных на экран оператором Writeln. (Ввод с помощью оператора Read не предусмотрен). Пример программы с использованием логических переменных: программа проверяет, имеется ли в ряду целых чисел хотя бы одно положительное. 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. Логические операции. Над логическими переменными можно производить логические операции. Результатом логических операций могут быть только логические переменные 1 или 0.Всего в Паскале используется 4 логические операции: Not («Нет»  логическое отрицание); And («И»  логическое умножение); Or («Или»  логическое сложение ); Xor («Исключающее Или»);Приоритет операций: 1) Not; 2) And, *, div, mod; 3) Or, xor, +, ; 4) Операции отношения. Результаты логических операций Значения операндов Результат операции X Y Not X X and Y X or Y X xor Y 0 0 1 0 0 0 0 1 1 0 1 1 1 0 0 0 1 1 1 1 0 1 1 0 Пример использования логических операций: составим программу, которая находит сумму цифр двузначного числа; если число не двузначное, программа выводит об этом сообщение.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 (’Введены неверные исходные данные’);readlnEnd. Если в программе требуется нарушить порядок выполнения операторов без предварительных проверок каких-либо условий, то применяется оператор безусловного перехода GoTo n; Здесь n – метка той строки в программе, которая должна выполняться после перехода. Метка – это либо целое число без знака в диапазоне 0…9999, либо идентификатор, определяемый программистом. Метки используются в разделе операторов. Они ставятся перед операторами и отделяются от них двоеточием. Метки должны быть объявлены в разделе описания меток прежде, чем они будут использоваться. Объявление метки начинается словом Label, за которым следует список используемых меток, разделенных запятыми. Но лучше метками и, соответственно, оператором GoTo не пользоваться, так как они усложняют программу и противоречат принципам структурного программирования. Турбо-Паскаль обладает средствами, позволяющими обходится без использования меток и оператора Goto. Рассмотрим пример Пусть необходимо для заданного Х вычислить значение a В алгоритме вычисления по данной формуле предусмотреть проверку первого условия (и вычисление по первой формуле, если оно истинно); затем проверку второго условия, но только в том случае, если первое ложно; вычисление по второй формуле, если второе условие истинно и по третьей, если ложно. Причем если истинно первое условие, то после вычисления по первой формуле происходит выход из структуры Ветвление. Решение 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. Оператор выбора CASE.Многовариантное ветвление.Структура оператора CASE: Case управляющая_переменная of набор_значений­_1: оператор_1; набор_значений­_2: оператор_2; ……………………………… набор_значений­_N: оператор_N else альтернативный_оператор end; Тип управляющей_переменной может быть стандартным типом, кроме вещественного, или определен пользователем. Типы значений должны соответствовать типу управляющей переменной. Набор_значений – это конкретное значение управляющей_переменной или выражение, при котором нужно выполнить соответствующий оператор, игнорируя остальные варианты. Набор_значений может быть задан: перечислением значений через запятую, например: 1,4,5интервалом значений, например: 1..5,20..30смешанной формой представления значений, например: 1..5,15,55 Значения в каждом наборе должны быть уникальными, т.е. ­они могут появляться только в одном варианте. Пересечение наборов значений для разных вариантов является ошибкой. Ключевое слово else может отсутствовать. Пример использования оператора 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; readlnEnd.