Вопрос: Как учитывать различные варианты в программе?

Занятие № 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.

                                                     

Спасибо за внимание!

 














Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: