Оператор безусловного перехода GOTO. Пример программы с использованием ветвления

Case ch of

'A'..'Z', 'a'..'z' : WriteLn('Буква');

'0'..'9' : WriteLn('Цифра');

'+', '-', '*', '/' : WriteLn('Оператор');

else WriteLn('Специальный символ')

end;

Соответствующаяблок-схема фрагмента программы для распознавания типа одиночного символа chдана на рис.5.6.

Рис.5.6. Блок-схема фрагмента программы для распознавания типа одиночного символа ch

Оператор безусловного перехода GOTO имеет структуру:

goto метка

Оператор GOTO осуществляет переход к тому оператору программы, перед которым находится метка (обязательно описанная в данной программе или модуле). Необходимо, чтобы в программе существовал оператор, отмеченный указанной меткой.

Так как применение GOTO ухудшает "читаемость" программ и снижает их вычислительную эффективность, одним из требований структурного программирования является максимальное сокращение, а в идеале - полный отказ от данного оператора.

Пример 1программы с ветвлением. Разработать блок-схему алгоритма решения основной задачи и написать программу, в которой требуется:

1) ввести вещественные величины a,b,c;

2) рассчитать величины х и у:

3) вывести у.

Дополнительные требования к интерфейсу программы: а) вначале работы программы должна выполняться очистка экрана с заданием темно-зеленого фона, б) ввод чисел a,b,с должен выполняться с клавиатуры в одной строке, в) вывод результата производится на экран с новой строки, цвет букв - белый. Общая ширина поля вывода результата равна 10.

Решение. Блок-схема алгоритма решения основной задачи дана на рис.5.7.

Рис.5.7. Блок-схема алгоритма решения основной задачи

Ниже приведен текст программы с подробными комментариями:

program primer_5_1_3 {алгоритм решения задачи из примера 3}

uses Crt; {подключение библиотеки CRT для работы с экраном}

var a,b,c,x,y,min,max:real;{описание входных, выходных и промежуточных величин программы}

begin{начало раздела операторов}

TextBackground(Green); {Установка темно-зеленого цвета фона}

ClrScr;{ очистка экрана и заполнение его цветом фона}

Write ("Vvedite chislа а,b,с =");{выдача на экран запроса на

ввод чисел а,b,с}

ReadLn (а,b,с); {ввод чисел а,b,с с переходом на новую строку}

if a+b>c then x:=a+b else x:=c; да нет { вычисление значения x}

min=a;if b<а then min:=b;if x<min then min:=x; {определение min(a,b,x)}

max:= b;if c>b then max:=c;if x>max then max:=x;{определение max(b,c,x)}

y:=min/(max*max+1); { вычисление значения y}

TextColor(White); { установка белого цвета букв}

WriteLn("y = ",y:10);{форматированный вывод на экран величины y с шириной поля вывода 10}

ReadKey; {ожидание нажатия клавиши для перехода от пользовательского экрана в основной}

end. {конец раздела операторов и всей программы}