Оператор безусловного перехода 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. {конец раздела операторов и всей программы}