Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
TP_Ch_I_izm.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
1 Мб
Скачать

3. Условный оператор case...Of

Обычно при написании программы не рекомендуется использовать многократно вложенные друг в друга условные операторы, так как программа при этом становится громоздкой и трудно понимаемой. Для этих целей в языке Turbo Pascal существует специальный оператор выбора. Его синтаксис:

case N of

M1,...,Mr : S1;

K1, ...,Kp : S2;

...

D1,...,Dq : Si;

else S

end;

где N - переменная, называемая селектором или переключателем;

S1,...Si,S – операторы;

Mi, Ki,..., Di ... - метки (i=1,2,...), которые отличаются по смыслу от меток,

описываемых в разделе label;

case(выбор), of (из), else (иначе), end – служебные слова.

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

Оператор case передает управление тому оператору Si, с одной из меток которого совпало значение селектора N, а затем управление передается на оператор, следующий за end. Если значение селектора N не совпало ни с одной из меток, то исполняется оператор S.

Ветвь оператора else S является необязательной. Тогда при отсутствии в списке выбора нужной константы оператор case завершит свою работу.

II. Экспериментальный раздел работы

Пример 1. Составим программу определения наибольшего из двух чисел.

Program Example 61;

function Max(a,b:real):real;

begin

if a>b

then Max:=a

else Max:=b;

end;

var x,y:real;

begin

writeln('Введите два числа x,y=?'); readln(x,y);

writeln('max=', Max(x,y):6:2); readln

end.

Разработайте алгоритм и составьте программу определения наибольшего числа из трех, четырех чисел. Используйте для ввода чисел генератор случайных чисел Randomize; Random. Проведите вычислительный эксперимент с программой.

Пример 2. Составим программу перевода декартовых координат x,y в полярные

координаты . Формулы перевода:

0 если y=0

при x=0 если y>0

если y<0;

п ри x >0 если y>=0

если y<0;

при x <0 для любых y.

Составим программу.

Program Example62;

var x,y,r,fi,q:real;

begin

writeln('Введите декартовы координаты x,y=?');

readln(x,y);

r:=sqrt(sqr(x)+sqr(y));

if x=0 then if y=0 then fi:=0

else if y>0 then fi:=0.5*pi

else fi:=1.5*pi

else begin q:=arctan(y/x);

if x>0 then if y>=0 then fi:=q

else fi:=2*pi+q

else fi:=pi+q

end;

writeln('fi=',fi*180/pi:8:2,'grad');

readln

end.

Проведите отладку и тестирование программы. Программистами, в целях наглядности, не рекомендуется использовать вложенный оператор if..then…else после условия then, как это сделано в программе. Лучше вложение делать после служебного слова else. Измените согласно этой рекомендации порядок следования операторов. Проведите тестирование сделанных изменений.

Пример 3. Составим программу вычисления функции

Y =

Program Example63;

Function Y(x:real):real;

function F1(x:real): real

begin

if x=0 then F1:=1

else F1:=1/exp(exp(ln((abs(x))/7.0))

end;

function F2(x:real): real

begin F2:=exp(ln(x)/3.0) end;

function F3(x:real): real

begin F3:=ln(x)/ln(3.0) end;

begin

if x <=0.0 then Y:=F1(x)

else if x<1.0 then Y:=F2(x)

else Y:=F3(x)

end;

var x:real;

begin

writeln(‘ Input x=?’); readln(x);

writeln(‘Y= ’,Y(x):12:6);

readln

end.

Разберитесь с листингом программы. Сделайте отладку и проведите тестирование.

Пример 4. Проведите вычислительный эксперимент с программой, использующей оператор case:

Program Example64;

var month:byte;

begin

writeln( ‘Введите номер месяца в году:’); readln(month);

case month of

1: writeln(‘зимняя сессия’);

2,3,4,5: writeln(‘весенний семестр’);

6: writeln(’летняя сессия’);

7,8: writeln(‘летние каникулы’);

9,10,11,12: writeln(‘осенний семестр’);

end;

readln

end.

Ш. Раздел для самостоятельной работы

A.

  1. Составить программы.

1.1. Если целое число М делится нацело на целое число N, то вывести на экран частное от деления, а в противном случае вывести сообщение "М на N нацело не делится".

    1. Дано целое число. Определить:

а) является ли оно четным;

б) оканчивается ли оно цифрой 7;

в) оканчивается ли оно четной цифрой. Составное условие не использовать.

    1. Дано натуральное число.

а) Верно ли, что оно заканчивается нечетной цифрой?

б) Верно ли, что оно заканчивается четной цифрой?

В обеих задачах составные условия не использовать.

    1. Дано двузначное число. Определить:

а) какая из его цифр больше: первая или вторая;

6) одинаковы ли его цифры;

в) равен ли квадрат этого числа учетверенной сумме кубов его цифр. Например, для числа 48 ответ положительный, для числа 52- отрицательный.

г) является ли сумма его цифр двузначным числом;

д) больше ли числа А сумма его цифр.

е) кратна ли трем сумма его цифр;

ж) кратна ли сумма его цифр числу А;

з) входит ли в него цифра 3;

и) входит ли в него цифра А;

к) входят ли в него цифры 4 или 7;

л) входят ли в него цифры 3, 6 или 9.

    1. Даны цифры двух десятичных целых чисел: трехзначного и двузначного , где и - число единиц, и - число десятков, - число сотен. Получить:

а)цифры, составляющие сумму этих чисел;

б) цифры, составляющие разность этих чисел.

    1. Дано натуральное число п (п < 9999). Выяс­нить, является ли оно палиндромом ("перевертышем"), с учетом четырех цифр, как, например, числа 7777, 8338, 0330 и т.п. (палиндромом называется число, десятичная запись которого читается одинаково слева направо и справа налево).

    2. Даны вещественные числа a, b, c ( ).Вы­яснить, имеет ли уравнение вещественные корни.

    3. Даны три вещественных числа a, b, c. Проверить:

а) выполняется ли неравенство а < b< c;

б) выполняется ли неравенство b > а > с;

в) имеется ли среди них хотя бы одна пара равных между собой чисел;

г) сколько среди них отрицательных.

    1. Даны вещественные положительные числа a, b, c

а) выяснить, существует ли треугольник со сторона­ми a, b, c.

б) можно ли прямоугольник со сторо­нами a, b уместить внутри прямоугольника со сторо­нами c, d так, чтобы каждая из сторон одного прямо­угольника была параллельна или перпендикулярна каж­дой стороне второго прямоугольника.

    1. В подъезде жилого дома имеется п квартир, пронумерованных подряд, начиная с номера a. Опре­делить, является ли сумма номеров всех квартир чет­ным числом. Формулу суммы членов арифметической прогрессии не использовать.

  1. Составить программы.

2.1. Даны два числа. Если квадратный корень из второго числа меньше первого числа, то увеличить второе число в пять раз.

    1. Даны три целых числа. Вывести на экран те из них, которые являются четными.

    2. Даны три вещественных числа. Возвести в квад­рат те из них, значения которых неотрицательны.

    3. Даны два вещественных числа. Условно принимая, что стандартной функции определения абсо­лютной величины числа нет, найти:

а) полу сумму абсолютных величин заданных чисел;

б) квадратный корень из произведения абсолютных величин заданных чисел.

    1. Даны три вещественных числа. Вывести на экран:

а) те из них, которые принадлежат интервалу (1,6 - 3,8);

б) те из них, которые принадлежат интервалу (0,7-5,1).

    1. В чемпионатe по футболу команде за выигрыш дается 3 очка, за проигрыш — 0, за ничью - 1. Изве­стно количество очков, полученных командой за игру. Определить словесный результат игры (выигрыш, про­игрыш или ничья).

    2. Случайным образом вводятся координаты точек. Определить, сколько из них попадет в круг радиусом R с центром в точке (a,b).

    3. Даны два прямоугольники, стороны которых параллельны или перпендикулярны осям координат. Известны координаты левого нижнего угла каждого из них и длины их сторон. Один из прямоугольников назовем первым, другой — вторым.

а) Определить, принадлежат ли все точки первого прямоугольника второму.

б) Определить, принадлежат ли все точки одного из прямоугольников другому.

в) Определить, пересекаются ли эти прямоугольники.

    1. Даны два прямоугольника, стороны которых параллельны или перпендикулярны осям координат. Известны координаты левого нижнего угла каждого из них и длины их сторон. Один из прямоугольников назовем первым, другой — вторым. Найти координаты левого нижнего и правого верхнего углов минимального прямоугольника, содержащего указанные прямоугольники.

    2. Проверить, принадлежит ли число, введенное с клавиатуры, интервалу ( ).

  1. Составить программы.

3.1. Определить, попадает ли точка с вводимыми координатами (x,y) внутрь прямоугольника, заданного уравнениями y=a, y=b, x=c, x=d (a>b, c>d).

    1. Определить находится точка с координатами (x,y) выше или ниже прямой, заданной уравнением y=ax+b.

    2. Определить находится точка с координатами (x,y) в кольце с радиусами R = 5, r = 3 с центром в точке (2,-1).

    3. Является ли случайным образом введенный год високосным. У високосного года номер года делится на 4 или на 400, но не делится на 100.

    4. Известны год и номер месяца рождения человека, а также год и номер месяца сегодняшнего дня (январь – 1 и т.д.). Определить возраст человека (чис­ло полных лет). В случае совпадения указанных месяцев считать, что прошел полный год.

    5. Дано целое число п (1 < п < 99), определяю­щее возраст человека (в годах). Для этого человека напе­чатать фразу “мне п лет ”, учитывая при этом, что при некоторых значениях п слово “лет” надо заменить на слово “год” или “года”.

    6. Дано натуральное число п ( 1 п 1188), определяющее возраст человека (в месяцах). Выразить возраст в годах и месяцах, например, 21 год 10 меся­цев, 52 года 1 месяц, 46 лет ровно и т.п.

    7. Известны год и номер месяца рождения двух человек. Опреде­лить, возраст каждого человека (число полных лет).

    8. Известны год, номер месяца и день рождения человека, а также год, номер месяца и номер те­кущего дня месяца (1 — январь и т.п.). Определить возраст человека (число полных лет).

    9. Известны год и номер месяца рождении человека, а также год и номер месяца сегодняшнего дня (1 январь и т.п.). Определить возраст челове­ка (число полных лет и число полных месяцев). При определении числа полных месяцев дни месяца не учитывать, а использовать разность между номерами месяцев. Например, если месяц рождения февраль, а текущий (сегодняшний) месяц май, то число полных месяцев равно трем независимо от дней рождения и сегодняшнего.

  1. Составить программы, используя оператор case.

4.1. Написать программу, которая бы переводила слова «ДОБРЫЙ ДЕНЬ» по выбору на один из пяти языков.

4.2. Найти остаток от деления целой части значения функции z=ln(x3+y3) на семь и в зависимости от его величины напечатать сообщение об одном из дней недели, пронумеровав их от 0 до 6.

4.3. Вычисления значения функции

y= ax+bx2+cx3, если 1<=x<2,

y= [a sin(x b)]c, если 2<=x<3,

, если 3<=x<4,

, если 4<=x<5,

если 5<=x<6.

4.4. Составить программу, которая в зависимости от порядкового номера дня недели (1, 2, ..., 7) выводит на экран его название (понедельник, вторник, .... воскресенье).

4.5. Составить программу, которая в зависимос­ти от порядкового номера месяца (1,2, .... 12) выво­дит на экран его название (январь, февраль,…, декабрь).

4.6. Составить программу, которая в зависимости от порядкового номера месяца (1,2, …, 12) выводит на экран количество дней в этом месяце. Рассмотреть 2 случая:

год не является високосным (см. задачу 4.48);

год високосный (информация об этом вводится с клавиатуры).

4.7. Мастям игральных карт условно присвоены следующие порядковые номера: масти "пики"—1,масти трефы - 2, масти "бубны" — 3, масти "червы" — 4. По заданному номеру масти т ( ) определить название соответствующей масти.

4.8. Игральным картам условно присвоены следу­ющие порядковые номера в зависимости от их досто­инства: "валету" — 11, "даме" — 12, "королю" — 13, "тузу" 14. Порядковые номера остальных карт со­ответствуют их названиям ("шестерка", "девятка" и т.д.). По заданному номеру карты k ( ) определить достоинство соответствующей карты.

4.9. С начала 1990 года по некоторый день про­шло п месяцев и 2 дня ( ). Определить название месяца (январь, февраль и т.п.) этого дня.

4.10. Дата некоторого дня определяется двумя на­туральными числами: т (порядковый номер месяца) и п (число). По заданным п и т определить:

а) дату предыдущего дня (принять, что п и т не определяют 1 января);

б) дату следующего дня (принять, что п и т не определяют 31 декабря).

В обеих задачах принять также, что год не является високосным.

B.

  1. Составить программы.

1.1. Дано трехзначное число. Определить, какая из его цифр больше:

а) первая или последняя;

6) первая или вторая;

в) вторая или последняя;

г)равен ли квадрат этого числа сумме кубов его цифр;

д) является ли сумма его цифр двузначным числом;

е) является ли произведение его цифр трехзначным числом;

ж) больше ли числа А произведение его цифр;

з) кратна ли пяти сумма его цифр;

и) кратна ли сумма его цифр числу А;

к) верно ли, что все его цифры одинаковые?;

л) есть ли среди его цифр одинаковые;

м) Выяснить, является ли оно палиндромом ("перевертышем"), т.е. таким числом, десятичная запись которого читается одинако­во слева направо и справа налево;

н) входит ли в него цифра 6;

о) входит ли в него цифра N.

п) входят ли в него цифры 4 или 7;

р) входят ли в него цифры 3, 6 или 9.

    1. Дано четырехзначное число. Определить:

а) равна ли сумма двух первых его цифр сумме двух его последних цифр;

б) кратна ли трем сумма его цифр;

в) кратно ли четырем произведение его цифр;

г) кратно ли произведение его цифр числу А;

д) входит ли в него цифра 4;

е) входит ли в него цифра В.

ж) входят ли в него цифры 2 или 7;

з) входят ли в него цифры 3, 6 или 9.

1.2. Дано натуральное число п (п < 9999). Выяс­нить, верно ли, что это число содержит ровно три оди­наковые цифры, если оно записано четырьмя цифра­ми, как, например, числа 3363, 4844, 0300 и т.п.

1.3. Дано натуральное число п (п < 9999). Выяс­нить, различны ли все четыре цифры этого числа (если оно записано четырьмя цифрами). Например, в числе 3678 все цифры различны, в числе 0023 — нет.

1.4. Даны вещественные положительные числа a, b, c, x, у. Выяснить, пройдет ли кирпич с ребрами a, b, c в прямоугольное отверстие со сторонами x и у. Просовывать кирпич в отверстие разрешается только так, чтобы каждое из его ребер было параллельно или перпендикулярно каждой из сторон отверстия.

1.5. Работа светофора для пешеходов запрограм­мирована следующим образом: в начале каждого часа в течение трех минут горит зеленый сигнал, затем в течение двух минут — красный, в течение трех ми­нут - опять зеленый и т.д. Дано вещественное число t, означающее время в минутах, прошедшее с нача­ла очередного часа. Определить, сигнал какого цвета горит для пешеходов в этот момент.

1.6. Даны вещественные числа а, b, с ( ). Вы­яснить, имеет ли уравнение веще­ственные корни. Если такие корни имеются, то найти их. В противном случае ответом должно служить сообщение, что вещественных корней нет.

  1. Составить программы.

    1. Даны две тройки вещественных чисел. В каж­дой тройке все числа различные. Найти среднее арифметическое средних чисел каждой тройки (средним назовем такое число в тройке, которое больше наименьшего из чисел данной тройки, но меньше наибольшего).

    2. Даны целые числа х и у. Написать программу определения знака разности х – у. Саму разность при этом не вычислять. Разрешается сравнивать числа х и у с нулем, а между собой можно сравнивать только модули чисел х и у.

    3. Считая, что стандартные функции sin и cos применимы только к аргументам из отрезка [0,/2], вычислить у = sin x для произвольного числа х.

    4. Даны числа a1, b1, c1, a2, b2, c2. Напечатать координаты точки пересечения прямых a1*x + b1*y = c1 и a2*x + b2*y = c2, либо сообщить, что эти прямые совпадают, не пересекаются или вовсе не существуют.

    5. Даны числа a, b и c (a­ ≠ 0).Найти вещественные корни уравнения a x4 + b x2 + c=0. Если корней нет, то сообщить об этом.

    6. Решить систему неравенств

a x > b,

c x > d.

a, b, c, d вводятся с клавиатуры.

    1. Даны три вещественных числа, Используя только два неполных условных оператора, определить:

а) максимальное значение заданных чисел;

б) минимальное значение заданных чисел.

  1. Составить программы.

3.1. Даны отрезки А,B,C. Составить программу для определения возможности построения треугольника и вида этого треугольника.

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

3.3. Определить попадает ли точка с координатами (x,y) внутрь треугольника, заданного координатами (x1,y1), (x2,y2), (x3,y3).

3.4. Вводятся три числа: g – год, m – месяц, n – число. Найти номер этого дня в году.

3.5. Известны год и номер месяца рождения двух человек. Опреде­лить, возраст каждого человека (число полных лет). Определить, кто из них старше.

3.6. Известны год, номер месяца и день рождения человека, а также год, номер месяца и номер те­кущего дня месяца (1 — январь и т.п.). Определить возраст человека (число дней).Учитывать неправильность в вводе дат. Так если первое число "больше" второго должно выводится соответствующее предупреждение.

3.7. Поезд прибывает на станцию в а часов b минут и отправляется в с часов d минут. Пассажир пришел на платформу в п часов m минут. Будет ли поезд стоять на платформе? Числа а, b, с, d, п, т — целые, 0 < а 23, 0 < b 59, 0 < c 23, 0 < d , 0 < n 23, 0 < т 59.

  1. Составить программы, используя оператор case.

4.1. Дана последовательность цифр, представляю­щая собой записанные подряд ноль и 20 первых нату­ральных чисел. Найти цифру с номером п в этой последовательности ( ).

4.2. Даны целое число k ( ) и последо­вательность цифр 505152... 9899100101... 149150, в ко­торой выписаны подряд все натуральные числа от 50 до 150. Определить k -ю цифру.

4.3. Даны целое число k ( ) и после­довательность цифр 123…91011…9899100101…109110, в которой выписаны подряд все натуральные числа от

1 до 110. Определить k -ю цифру.

4.4. В старояпонском календаре был принят 60-летний цикл, состоящий из пяти 12-летних подциклов. Подциклы обозначались названиями цветов: зеле­ный, красный, желтый, белый и черный. Внутри каждого подцикла годы носили названия животных: крыса, корова, тигр, заяц, дракон, змея, лошадь, овца, обезьяна, курица, собака и свинья. Например, 1984 год — год начала очередного цикла — назывался Годом Зеленой Крысы.

Составить программу, которая по заданному номеру года нашей эры п печатает его название по старояпонскому календарю. Рассмотреть два случая:

а) значение п 1984;

б) значение п может быть любым натуральным числом.

4.5. Дано целое число k ( ). Определить, каким будет kдень года: выходным (суббота и воскресенье) или рабочим, если 1 января — понедельник.

4.6. Дано число типа Word. Определить номер самого старшего бита отличного от нуля(Оператор Case должен содержать 16 меток).

4.7. Решите предыдущую задачу, с условием, что оператор Case должен содержать не более 8 меток.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]