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

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

Формат оператора:

Case Селектор of

<Список констант>: < оператор>;

<Список констант>: < оператор>;

<Список констант>: < оператор>; …

Else < оператор>

End;

Здесь <селектор> — это выражение любого порядкового типа; <константа> — постоянная величина того же типа, что и селектор; <оператор> — любой простой или составной оператор.

Выполнение оператора выбора происходит так: вычисляется выражение-селектор; затем в списках констант ищется такое значение, которое совпадает с полученным значением селектора; далее исполняется оператор, помеченный данной константой. Если такой константы не найдено, то происходит переход к выполнению оператора, следующего после оператора выбора.

Задача 1. Дана символьная строка, которая имеет следующий вид:

‘a  b=’

На месте а и b стоят десятичные цифры; значком  обозначен один из знаков операций: + , - , * . Иначе говоря, записано арифметическое выражение с двумя однозначными числами и знак равенства, например '5 + 7 ='. Нужно, чтобы машина вычислила это выражение и после знака равенства вывела результат. Операция деления не рассматривается для того, чтобы иметь дело только с целыми числами.

Программу решения такой задачи назовем интерпретатором.

Интерпретатор должен расшифровать содержание строки и выполнить соответствующую арифметическую операцию. От исходной символьной информации он должен перейти к работе с числовой информацией.

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

Program Interpretator;

Var Str: String[4];

A, B: 0. .9;

С: -100. .100

Begin

{ввод исходной строки}

WriteLn('Введите выражение!');

WriteLn;

Read(Str);

{преобразование цифровых символов в числа}

A:=Ord(Str[l])-Ord('0') ;

B:=Ord(Str[3])-Ord('0');

{выполнение арифметической операции}

Case Str[2]

'+': С:=a+b;

'-': С:=a-b;

'*': С:=a*b;

End;

{вывод резут

WriteLn(C:2)

End.

  1. Для целого случайного числа k от 1 до 100 напечатать фразу «Мне k лет», учитывая при этом, что при некоторых значениях k слово «лет» надо заменить на «год» или «года».

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

  3. Написать программу, позволяющую по последней цифре числа определить последнюю цифру его квадрата.

  4. Составить программу, которая по заданным году и номеру ме­сяца т определяет количество дней в этом месяце.

  5. Для каждой введенной цифры (0-9) вывести соответствующее ей название на английском языке (0 — zero, 1 — one, 2 — two,

  6. Составить программу, которая по данному числу (1-12) выво­дит название соответствующего ему месяца.

  7. Составить программу, позволяющую получить словесное опи­сание школьных отметок (1 — плохо, 2 — неудовлетворитель­но, 3 — удовлетворительно, 4 — хорошо, 5 — отлично).

  8. Пусть элементами круга являются радиус (первый элемент), диаметр (второй элемент) и длина окружности (третий эле­мент). Составить программу, которая по номеру элемента за­прашивала бы его соответствующее значение и вычисляла бы площадь круга.

Циклы.