русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Оператор выбора


Дата добавления: 2014-11-28; просмотров: 823; Нарушение авторских прав


 

Для случаев, когда требуется выбор одного значения из конечного набора вариантов, оператор if удобнее заменять оператором выбора (переключателем) case:

case выражение of

список1: оператор1;

список2: оператор2;

. . .

списокN: операторN;

else оператор0;

end;

Оператор выполняется так же, как составной условный оператор.

Выражение должно иметь порядковый тип (целый или символьный). Элементы списка перечисляются через запятую, ими могут быть константы и диапазонызначений того же типа, что тип выражения. Диапазоны указываются в виде:

Мин.значение .. Макс.значение

Оператор диапазона записывается как два рядом стоящих символа точки. В диапазон входят все значения от минимального до максимального включительно.

В качестве примера по номеру месяца m определим число дней d в нем:

case m of

1,3,5,7..8,10,12: d:=31;

2: d:=28;

4,6,9,11: d:=30;

end;

Следующий оператор по заданному символу c определяет, к какой группе символов он относится:

case c of

'A'..'Z','a'..'z':

writeln ('Латинская буква');

'А'..'Я','а'..'п','р'..'я':

writeln ('Русская буква');

'0'..'9':

writeln ('Цифра');

else writeln ('Другой символ');

end;

Здесь отдельные диапазоны для русских букв от "а" до "п" и от "р" до "я" связаны с тем, что между "п" и "р" в кодовой таблице DOS находится ряд не-буквенных символов (см. Приложение 1).

Если по ветви оператора case нужно выполнить несколько операторов, действует то же правило, что для оператора if, т. е. ветвь алгоритма заключается в операторные скобки begin ... end;.

Примеры программ с условным оператором

 

Приведем несколько примеров законченных программ, использующих РВП.

1. Проверить, может ли быть построен прямоугольный треугольник по длинам сторон a, b, c.



Проблема с решением этой задачи -- не в проверке условия теоремы Пифагора, а в том, что в условии не сказано, какая из сторон может быть гипотенузой. Подходов возможно несколько -- запрашивать у пользователя ввод данных по возрастанию длины сторон, проверять все три возможных условия теоремы Пифагора и т. п. Используем наиболее естественное решение -- перед проверкой условия теоремы Пифагора упорядочим величины a, b, c так, чтобы выполнялись соотношения a≤b≤c. Для этого применим прием с обменом значений переменных из п. 4.1.

var a,b,c, {Длины сторон}

s:real;{Буферная переменная для обмена}

begin

{ Секция ввода данных }

writeln;

write ('Введите длину 1 стороны:');

readln (a);

write ('Введите длину 2 стороны:');

readln (b);

write ('Введите длину 3 стороны:');

readln (c);

{ Сортируем стороны по неубыванию }

if (a>b) then begin

s:=a; a:=b; b:=s;

end;

if (a>c) then begin

s:=a; a:=c; c:=s;

end;

if (b>c) then begin

s:=b; b:=c; c:=s;

end;

{ Проверка и вывод }

if abs(a*a+b*b-c*c)<1e-8 then writeln

('Прямоугольный треугольник ',

'может быть построен!')

else writeln('Прямоугольный треугольник ',

'не может быть построен!')

end.

 

2. Определить, попадает ли точка плоскости, заданная координатами (a, b) в прямоугольник, заданный координатами двух углов (x1, y1) и (x2, y2).

Как и в предыдущей задаче, было бы не совсем корректно требовать от пользователя вводить данные в определенном порядке -- гораздо лучше при необходимости поменять x- и y-координаты прямоугольника так, чтобы пара переменных (x1, y1) содержала координаты левого нижнего угла прямоугольника, а (x2, y2) -- правого верхнего.

var x1,y1,x2,y2,a,b:real;

begin

writeln ('Введите координаты 1 угла:');

read (x1,y1);

writeln ('Введите координаты 2 угла:');

read (x2,y2);

if x1>x2 then begin

a:=x1; x1:=x2; x2:=a;

end;

if y1>y2 then begin

a:=y1; y1:=y2; y2:=a;

end;

writeln ('Введите координаты точки:');

read (a,b);

if (x1<=a) and (a<=x2)

and (y1<=b) and (b<=y2) then writeln

('Точка попадает в прямоугольник')

else writeln

('Точка не попадает в прямоугольник');

end.

 

3. Вводится денежная сумма в рублях и копейках. Программа печатает введенную сумму с правильной формой слов "рубли" и "копейки", например, "123 рубля 15 копеек".

Окончание, используемое для слов "рубли" и "копейки", зависит от последней цифры суммы, которую можно получить, взяв остаток от деления на 10 (1058 рублей, 38 рублей и т.д.). Исключения -- суммы с последними двумя цифрами от 11 до 19 включительно, которые всегда произносятся "рублей" и "копеек" (511 рублей, но 51 рубль). Используя эту информацию, составим программу.

var r,k,o10,o100:integer;

begin

writeln;

write ('Введите количество рублей, ',

'затем пробел и количество копеек:');

read (r,k);

writeln;

o10:=r mod 10; {Взяли последнюю цифру}

o100:=r mod 100; {...и 2 последних цифры}

write ('Правильно сказать: ',r,' ');

{Печатаем число рублей, затем пробел}

if (o100>10) and (o100<20)

or (o10>4) or (o10=0) then

write ('рублей')

else if (o10>1) and (o10<5) then

write ('рубля')

else

write ('рубль');

{аналогично для копеек:}

o10:=k mod 10;

o100:=k mod 100;

write (' ',k,' ');

{печатаем число копеек с пробелами}

if (o100>10) and (o100<20) or

(o10>4) or (o10=0) then

write ('копеек')

else if (o10>1) and (o10<5) then

write ('копейки')

else write ('копейка');

end.


 



<== предыдущая лекция | следующая лекция ==>
Вложенные условные операторы | Директивы компилятора и обработка ошибок ввода


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.353 сек.