Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы по теории.docx
Скачиваний:
4
Добавлен:
28.09.2019
Размер:
530.05 Кб
Скачать

Билет №9:

1) Обыкновенное ветвление позволяет выбрать 1 из 2х вариантов, теоретически этого достаточно чтобы выбрать из многих вариантов, например если нужно выбрать из трёх, то проверяем сначала получается ли вариант 1, если нет то получается ли вариант 2, если снова нет, то имеет место вариант 3, здесь достаточно 2х обыкновенных ветвлений: Если вариант 1, то … иначе если вариант 2, то … иначе вариант 3. Такой способ отсечения вариантов громоздкий, поэтому имеется особая структура ветвления, которая называется множественным выбором, она годится в тех случаях когда варианты закодированы некоторой величиной порядкового типа, в организации такого ветвления участвуют ключевые слова Case, of, else, end. Между Case и of пишется выражение имеющее значение порядкового типа, ниже описываются ветви, их может быть несколько, причём каждая начинается условием принадлежности этой ветви, сразу за условием пишется : и далее оператор, обрабатывающий эту ветвь. Ветви отделяются ; . Предусмотрена особая ветвь которая пишется без условия после слова else, она должна быть последней (либо может отсутствовать) и в конце End; .

2) При организации ветвления используются отдельные значения, величины или диапозоны, и те и другие могут объединяться через запятую. Если величина совпадает с одним из перечисленных значений, то она относится к данному варианту и должна быть обработана соответствующим оператором, после обработки ветвление завершается.

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

  1. Program _Case;

{$APPTYPE CONSOLE}

uses

SysUtils;

//==================================

// МНОЖЕСТВЕННЫЙ ВЫБОР

//(ветвление по значению)

//==================================

Label

Met,Met1,Met2;

Var

n,i:Integer;

b:Byte;

S:String;

Begin

//----------------------------------

// Выбор задачи

//----------------------------------

Repeat

Write(‘Number of task: ‘); ReadLn(i);

Until (i>0) And (i<3);

Case i Of

1:Goto Met1;

2:Goto Met2;

End;

//----------------------------------

//1. Склонение числительных

//----------------------------------

Met1:

Write('1. Number: '); ReadLn(n); //Ввод целого числа

S:=IntToStr(n)+' '; //Преобразование в строку

If (n Div 10) Mod 10=1 Then i:=0 //”...надцатькак 0,

Else i:=n Mod 10; //иначе как последняя цифра

Case i Of //В Ы Б О Р по значению i

0,5..9: S:=S+'негритят'; //если 0 или 5…9

1: S:=S+’негритёнок’ //если 1

Else

S:=S+’негритёнка’; //если 2..4

End;

Goto Met; //Вывести строку S

//----------------------------------

//2. Получение числа по b-ичной записи (без проверки)

//----------------------------------

Met2:

Write(‘3. Number: ‘); ReadLn(S); //Ввод записи числа

Write('Base: '); ReadLn(b); //Ввод основание системы

n:=0; S:=UpperCase(S); //Замена малых букв большими

For i:=1 To Length(S) Do //Цикл по цифрам

Case S[i] Of //В зависимости от цифры

0’..’9’:

n:=n*b+Ord(S[i])-Ord(‘0’) //-цифра обычная

Else

n:=n*b+Ord(S[i])-Ord(‘A’)+10; //-цифра не обычная

End;

S:='Значение '+IntToStr(b)+ //Готовим результат

'-ичного числа '+S+

равно ‘+IntToStr(n);

Goto Met; //Вывести строку S

//----------------------------------

// Вывод текста по-русски

//----------------------------------

Met:

For i:=1 To Length(s) Do //Цикл по символам строки

Begin

b:=Ord(s[i]); //Получение кода символа

Case b Of

192..239: s[i]:=chr(b-64); //Код большой буквы

240..255: s[i]:=chr(b-16); //Код малой буквы

168: s[i]:=chr(240); //Малая ё

184: s[i]:=chr(241); //Большая Ё

End;

End;

WriteLn(S);

//----------------------------------

ReadLn;

End.