Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
4 Pascal1.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
3.95 Mб
Скачать
  1. Ветвление на несколько направлений (оператор – переключатель, или оператор выбора или оператор варианта):

Позволяет выбрать из любого числа возможностей.

case <переменная или выражение> of

<список значений выбора1>:<оператор1>;

<список значений выбора2>:<оператор2>;

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

<список значений выбора N>:<оператор N>;

[else <оператор>]

end;

Переменная может быть любого порядкового типа, кроме longint (word, boolean, integer, char или перечисляемый тип). (см.приложение 1, СТРУКТУРА ТИПОВ ДАННЫХ)

Список значений выбора - это значения, которые могут принимать переменная или выражение, перечисленные через запятую или, если значения принадлежат какому-либо интервалу, с использованием лексемы " . . " (1..7 или 'а' ..'м')

Оператор - любой оператор, в том числе составной.

Принцип работы оператора:

  • Значение переменной или выражения сравнивается с предложенными списками значений

  • Если найдено нужное значение, выполняется соответствующий оператор

  • Если нужное значение не найдено в перечисленных списках, выполняется оператор после else

  • Если else отсутствует, то, когда нужное значение не найдено, выполняется следующий за case оператор.

Ветви здесь представлены элементами выбора, разграниченными точкой с запятой, а слово else с последующим оператором могут отсутствовать. Элемент выбора – это оператор, например составной, снабжённый одной или несколькими константами выбора:

Пример использования оператора:

Написать программу, которая за­пра­шивает номер месяца и вы­во­дит название времени года

uses crt;

var month : integer;

begin

writeln (‘введите номер месяца от 1 – 12’);

readln (month);

case month of

1,2,12 : writeln(‘зима’);

3,4,5 : writeln(‘весна’);

6,7,8 : writeln(‘лето’);

9,10,11 : writeln(‘осень’);

else writeln (‘ошибка ввода!’);

end;

repeat until keypressed;

end.

  1. Операторы безусловного перехода goto и halt:

goto <метка>

перейти к

halt [<код>]

выход из программы

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

Метка - это любое целое число от 0 до 9999 или идентификатор

Метки необходимо описывать в разделе описаний перед описанием переменных.

Например, LABEL 1, 2, lab3;

Метки ставятся в программе перед операторами в начале строки, после метки - двоеточие.

Например, 1: repeat until keypressed;

ЗАМЕЧАНИЕ:

  • Нельзя входить и выходить из функций и процедур с помощью операторов goto и halt

  • Нельзя входить в циклы с помощью операторов goto и halt, но можно досрочно их заканчивать

  • Из программы можно выйти оператором halt

Пример использования оператора:

Составить программу проверки знания таблицы умножения.

program pt1;

uses crt;

label 1;

var a,b:integer;x,y,z:integer;t:char;

begin

clrscr;

writeln ('ПРОГРАММА ПРОВЕРКИ ТАБЛИЦЫ УМНОЖЕНИЯ.');

writeln ('Выход из программы - Q, продолжение - любая другая клавиша');

randomize;

1: x:= random(10);y:= random(10);

write(' ',x,' x ',y,' = ?');

read(z);

if z=x*y then writeln ('правильно!')

else writeln ('неправильно! ');

writeln ('продолжить?(y/n)')t:=readkey;

if (t='N') or (t='n') then halt else goto 1;

end.

Практические задания:

  1. Отработка навыков использования операторов ветвления

Составить программу движения символа * под управлением клавиш 2,4,6,8. Q – выход из программы.

uses crt;

label 1;

var x,y:word;q:char;

begin

clrscr;

x:=40;y:=12;

1:textcolor(14);gotoxy(x,y);write('*');

q:=readkey;

textcolor(0);gotoxy(x,y);write('*');

if q='2' then y:=y+1;

if q='8' then y:=y-1;

if q='4' then x:=x-1;

if q='6' then x:=x+1;

if (q='q') or (q=’Q’) then halt;

goto 1;

readkey;end.

Составить программу подсчета суммы введенных с клавиатуры чисел. Признак конца ввода – число 0.

program pt1;

uses crt;

label 1;

var x,z:integer;t:char;

begin clrscr;

writeln ('ПРОГРАММА ПОДСЧЕТА СУММЫ ВВЕДЕНЫХ ЧИСЕЛ.');

gotoxy(50,22);writeln ('Выход из программы - число 0');

1: write('Введите число'); read(x);

if х=0 then goto 2 else begin z:=z+x; goto 1;end;

2: writeln('сумма введенных чисел - ',z);

readkey;end.

Написать программу, которая проверяет, является ли четным введенное с клавиатуры число

Uses crt;

Var n:integer;

Begin

Readln(n);

Write(‘число’, n,’-‘);

If n mod 2=0 then writeln(‘четное’)

else writeln(‘нечетное’);

readkey; End.

Написать программу, которая запрашивает номер месяца и выводит название времени года.

Uses crt;

Var month: integer;

Begin

Writeln (‘Введите номер месяца от 1 – 12);

Readln(month);

Case month of

1,2,12: writeln(‘Зима’);

3..5: writeln(‘Весна’);

6..8: writeln(‘Лето’);

9..11: writeln(‘Осень’);

else writeln(‘число д.б. от 1 до 12’);

end;

readkey;end.

  1. Задача. Развивая предельно возможную скорость своего движения, жираф пробегает за 23 с 335,8 м. Заяц пробегает за 55 с 918,5 м. Кому из этих животных вы присвоите звание чемпиона, сопоставляя их скорости?

А лгоритм решения задачи в виде блок-схемы приведен ниже. Программу составить самостоятельно.