Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Составной оператор
Вот фрагмент программы, которая складывает два числа: WriteLn ('Введите два числа'); Вот фрагмент программы, которая возводит число в квадрат: WriteLn ('Введите число'); Пусть мы хотим сделать программу, которая бы по желанию пользователя или складывала два числа, или возводила одно число в квадрат, то есть выполняла или первый или второй фрагмент. Начинаться наша программа могла бы примерно так: VAR Otvet: String;..... BEGIN WriteLn ('Чем займемся – сложением или возведением в квадрат?'); ReadLn (Otvet); if Otvet = 'сложением' then.... else.... Здесь после then мы должны бы вставить первый фрагмент, а после else второй. Однако, тут возникает проблема. Каждый из фрагментов состоит из нескольких операторов, а синтаксис оператора if разрешает ставить после then и else только по одному оператору. Чтобы преодолеть эту трудность, в Паскале есть средство превратить последовательность записанных друг за другом операторов формально в один оператор. Для этого последовательность заключается между словами begin и end и получившаяся конструкция называется составным оператором. Вот первый фрагмент в виде составного оператора: begin Компьютер выполняет составной оператор неотличимо от последовательности операторов, из которых он состоит, однако титул составного оператора позволяет ему считаться одним оператором и поэтому быть вхожим в те места программы, в которые разрешен вход только единичным операторам, а не их последовательностям, как, например, имеет место в нашем случае с оператором if. Вот какая получится программа для нашей задачи: VAR Otvet:String; a,b:Integer; BEGIN WriteLn ('Чем займемся - сложением или возведением в квадрат?'); ReadLn (Otvet); if Otvet = 'сложением' Then begin WriteLn ('Введите два числа'); ReadLn (a,b); WriteLn ('Сумма равна ',a+b) End Else begin WriteLn ('Введите число'); ReadLn (a); WriteLn ('Квадрат числа равен ',a*a) end; WriteLn ('Счет завершен') END. У нашей программы есть недостаток. Если при ответе на вопрос компьютера мы чуть-чуть ошибемся, например, ответим не "сложением", а "сложение", компьютер будет выполнять возведение в квадрат, так как в условии оператора if сравниваемые строки должны совпадать полностью. Научившись выполнять операции над строками, вы научитесь избегать таких ситуаций. Задание 24: Видоизменить диалог с компьютером, начатый в 4.15. Пусть компьютер, узнав возраст человека, дальнейшую беседу ведет по двум вариантам. Если возраст больше 17, то компьютер должен задать вопрос: "В каком институте ты учишься?" и получив ответ, глубокомысленно заметить "Хороший институт". Если же возраст меньше или равен 17, то соответственно - "В какой школе ты учишься?" и "Неплохая школа". После этого, каков бы ни был вариант, компьютер должен попрощаться: "До следующей встречи!". Date: 2015-09-17; view: 444; Нарушение авторских прав |