Занятие № 5 «Структура разветвляющего алгоритма»
Ключевые слова: условие, ветвление, полная форма ветвления и неполная
Вопросы для повторения |
Введены следующие данные с клавиатуры ‘доброе утро’; 23; 13; ‘погода замечательная’. Как следует описать данные, чтобы программа не выдавала ошибок? Напишите фрагмент программы с описанием данных и вводом. |
Дан фрагмент программы. Исправьте ошибки. Var a,b:integer; S: string; Begin; readln(a,b) read(s); writeln(a+b) writeln(s-a); writeln (s + ’хорошо’); writeln(число + а) end. |
Давайте вспомним, что уже умеет делать наша программа. По году рождения мы определяем возраст человека, вычитая его год рождения из текущего года.
А если подумать, ведь у человека на момент разговора могло еще не быть дня рождения в этом году, и тогда его возраст будет на единицу меньше! Получается, наш алгоритм будет как бы разветвляться: если день рождения в этом году уже состоялся, возраст будет вычисляться по одной формуле, а если еще не состоялся - то по другой.
Компьютер: В каком году ты родился?
Человек: 2005
Компьютер: У тебя был День рождения?
Человек: Да
Компьютер: Я думаю, тебе 15 лет
|
|
Компьютер: В каком году ты родился?
Человек: 2005
Компьютер: У тебя был День рождения?
Человек: Нет
Компьютер: Я думаю, тебе 14 лет
Вопрос: Как учитывать различные варианты в программе?
Цель:
Научиться составлять разветвляющиеся алгоритмы и применять их в программе
Как правильно определить возраст собеседника?
Правильно, нужно знать, был уже в этом году день рождения или нет.
Если в этом году уже был день рождения, то для вычисления возраста надо из текущего года вычесть твой год рождения.
А если нет, то из полученного числа надо еще вычесть единицу
На алгоритмическом языке Вы уже проходили блок схемы и разветвляющийся алгоритм, давайте попробуем составить блок-схему к нашей задаче и переведем ее на язык Pascal.
Давайте теперь попробуем описать блок-схему словами. Если есть какое-то условие, то существует 2 пути решения, пойти по стрелочке «да» и выполнить действие или пойти по стрелочке «нет» и выполнить другое действие. Схематично можно записать в следующем виде:
Как же выглядит такая структура в Pascal?
Cлово "если" по-английски "if", слово "то" будет обозначаться "then",
а "иначе" - "else".
В языке Паскаль есть специальная структура - разветвляющийся алгоритм (или ветвление), с помощью которого можно в зависимости от истинности условия выполнять то или иное действие.
Например, если мы хотим выяснить, совершеннолетний ли человек, фрагмент алгоритма может быть таким:
|
|
if age>=18
then s:='совершеннолетний'
else s:='несовершеннолетний';
Здесь if, then, else - служебные слова, которые означают соответственно "если", "то", "иначе".
age - переменная целочисленного типа (значение возраста человека),
s - строка ответа, которая будет выводиться затем на экран.
После слова if идет условие: выражение так называемого логического типа. Оно может принимать значение "истина" (true) или "ложь" (false).
Если значение этого выражения истинно, то будет выполняться оператор после слова then, а если ложно - оператор после слова else.
Обратите внимание, как записывается знак "больше или равно": пишутся подряд символы "больше" и "равно" (>=). Ведь на клавиатуре нет специального символа "больше или равно"!
А как вы думаете, как можно было бы записать "меньше или равно"?
А как можно было бы записать "не равно", используя только символы, которые есть на клавиатуре?
Обратите внимание, что точка с запятой ставится только в самом конце!
Тогда разветвляющийся алгоритм на языке Pascal можно записать в следующем виде:
if <условие>
then <оператор 1>
else <оператор 2>
Если условие принимает значение true (истина), выполняется оператор 1, помещенный за ключевым словом then. Иначе выполняется оператор 2, записанный за ключевым словом else (в этом случае оператор 1 опускается).
Когда указанные операторы выполнены, то программа переходит к выполнению команды, стоящей после оператора if.
Помните, что никогда не ставится символ «;» перед else (иначе возникает синтаксическая ошибка). Такая форма ветвления называется полной формой ветвления.
Ключевое слово else может как присутствовать, так и отсутствовать в операторе if
Если слово else отсутствует, то такая структура называется неполная структура ветвления и имеет следующий вид:
if <условие>
then <оператор 1>
Пример
if age>=18
then s:='совершеннолетний';
Как прописываются условия, и что такое условие?
Простым условием называется выражение, составленное из двух арифметических выражений или двух текстовых величин (иначе их еще называют операндами), связанных одним из знаков:
Название | Язык Pascal | Математический язык |
меньше, чем… | < | < |
больше, чем... | > | > |
меньше, чем... или равно | <= | ≤ |
больше, чем... или равно | >= | ≥ |
не равно | <> | ≠ |
равно | = | = |
Пример 1
a:integer;
if a=12
then writeln(‘школьник’);
Пример 2
s:string;
if s=’Привет’
then writeln(‘Привет’);
Давайте попробуем написать программу, которая спрашивает год рождения, спрашивает про день рождения и точно выводит Ваш возраст.
Подсказка. Если у собеседника был день рождения то программы из текущего года должна вычитать год рождения. Если дня рождения не было, то программа из текущего года вычитает год рождения и единицу.
Ответы на задания |
var s,s1:string; a,b: integer; readln(s,s1); readln(a,b) s1=‘доброе утро’; a=23; b=13; s2= ‘погода замечательная’; |
Var a,b:integer; S: string; Begin; readln(a,b) read(s); writeln(a+b) writeln(s-a);//невозможно из строки вычесть число writeln (s + ’хорошо’); writeln(число + а) // невозможно складывать числа и строки, строка стоит без кавычек, компилятор выдаст ошибку end. |
Спасибо за внимание!