Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Тема. Программирование вычислительных процессов с ветвлением. Оператор CASE



Цель работы: научиться создавать программы для алгоритмов с ветвлением, в программе использовать оператор CASE

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

Инструкция Case используется для выбора одного из нескольких направлений дальнейшего хода программы (последовательности инструкций, которые могут быть выполнены). Эта структура обеспечивает выбор одного из ряда возможных действий, в зависимости от значения, которое принимает переменная-селектор (условие). Выбор варианта действия осуществляется во время выполнения программы в зависимости от равенства значения переменной-селектора константе, указанной перед группой инструкций. В качестве переменной-селектора можно использовать переменную скалярного типа (integer или char). Конструкция имеет следующий формат:

CASE переменная-селектор OF

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

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

- - - - - - - - - - - - - - - - - - - -

N константа: N оператор

ELSE

оператор;

END;

 

Эта конструкция имеет и укороченный формат:

CASE переменная-селектор OF

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

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

- - - - - - - - - - - - - - - - - - - - -

К константа: К оператор

END;

 

Пример 5.1. Вводится число от 0 до 21. Вывести сообщение: число меньше 10, число больше 10, число равно 10. При вводе числа больше 20 или меньше 0 должно выводиться сообщение «Ошибка ввода».

 

Program Project1; //заголовок программы

var a: integer; //раздел описания переменных

begin //начало раздела операторов

write('Введите число а='); //вывод текста на экран

readln(а); //ввод значения а

case a of

0..9: writeln(‘число меньше 10’);

11..20: writeln(‘число больше 10’);

10: writeln(‘число равно 10’);

else

writeln(‘Ошибка ввода’)

end;

readln;

end.

 

Варианты заданий

При некорректном воде исходных данных программа должна выводить сообщение «Ошибка ввода».

 

1. Вводится число от 1 до 4, определяющее пору года. Дать название этой поры года (1 — зима, 2 — весна, 3 — лето, 4 — осень).

2. Вводится число от 1 до 7, определяющее день недели. Дать название этого дня (1 — понедельник, 2 — вторник, ..., 7 — воскресенье).

3. Вводятся числа 12, 1, 2, определяющие зимний месяц года. Дать название этого месяца года (1 — январь, 2 — февраль, 12 — декабрь).

4. Вводится число от 1 до 10. Дать название этого числа (1 — один, 2 — два, …, 10 — десять).

5. Дано натуральное число A (A< 20), определяющее сумму денег в рублях. Дать для этого числа наименование: " рубль", " рубля", " рублей".

6. Дано натуральное число N (N< 100), определяющее возраст человека в годах. Дать для этого числа наименование: " год", " года", " лет".

7. Вводится число от 1 до 12, определяющее месяц года. Дать название этого месяца года (1 — январь, 2 — февраль, ..., 12 — декабрь).

8. Вводится число от 1 до 20. Дать название этого числа (1 — один, 2 — два, ..., 20 — двадцать).

9. Вводятся числа 3, 4, 5, определяющие весенний месяц года. Дать название этого месяца года (3 — март, 4 — апрель, 5 — май).

10. Вводится число от 1 до 10. Дать название этого числа (1 — один, 2 — два, ..., 10 — десять).

11. Вводится число от 2 до 10. Вывести сообщение: четное или нечетное введенное число.

12. Вводится число от – 10 до 10. Вывести сообщение: введенное число больше 0, меньше 0 или равно 0.

13. Написать программу, которая запрашивает у пользователя номер дня недели и выводит одно из сообщений: «Рабочий день», «Суббота», «Воскресенье».

14. Вводится номер месяца (1, 2, …, 12). Вывести количество дней в указанном месяце.

15. Вводится значение года в укороченной форме (от 0 по 10). Вывести значение года текущего столетия в полном формате (0 – 2000, 1 – 2001 и т.д.).

 

Контрольные вопросы

1. Как в Delphi записывается оператор выбора?

2. Для чего предназначен оператор выбора?

3. Что такое полная и сокращенная записи оператора выбора?

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

 

Лабораторные работы № 6 – 7

Тема. Вычисление сумм (произведений) конечного числа элементов ряда. Оператор FOR …DO (FOR... DOWNTO)

Цель работы: научиться разрабатывать блок-схему алгоритма и программу с использованием операторов цикла FOR …DO на примере вычисления сумм (произведений) элементов конечного ряда

Теоретическая часть

Оператор FOR …DO

Циклические вычисления в Delphi реализуются с помощью операторов FOR...TO(DOWNTO)...DO, WHILE...DO или REPEAT...UNTIL.

Особенностью операторов FOR...TO(DOWNTO)...DO является встроенный внутренний счетчик цикла, фиксирующий количество повторений. Форматы записи оператора:

FOR переменная цикла: = выражение 1 TO выражение 2 DO

{операторы тела цикла};

или

FOR переменная цикла : =выражение 1DOWNTO выражение 2 DO

{операторы тела цикла};

В формате: переменная цикла (управляющая переменная, счетчик цикла) – имя переменной целочисленного типа; выражения 1 и 2 — выражения, тип результата которых совпадает с типом переменной цикла; операторы тела цикла любой исполнимый оператор или блок операторов, заключенных в операторные скобки; FOR, TO, DOWNTO и DO – ключевые слова.

Использование оператора FOR регламентируется следующими правилами.

· Переменная цикла, её начальное и конечное значения должны быть одного типа.

· При выполнении оператора очередное значение параметра цикла вычисляется автоматически. В частности, для целого типа шаг изменения значения переменной цикла равен 1 при конструкции с TO и -1 при конструкции с DOWNTO.

· После служебного слова DO может стоять только один оператор. Если в цикле необходимо выполнить группу операторов, то их заключают в операторные скобки BEGIN. .. END, образуя составной оператор.

· Цикл не выполняется вообще, если начальное значение переменной цикла больше (при DOWNTO меньше), чем конечное. В этом случае управление передается оператору, следующему непосредственно за конструкцией FOR. . TO ( DOWNTO )... DO.

· В конструкции FOR. . TO ( DOWNTO )... DO используется только одна переменная цикла. При наличии вложенных циклов у каждой конструкции FOR. . TO ( DOWNTO )... DO должна быть своя, отличающаяся от других переменная.

· При организации вложенных циклов внутренний и внешний циклы не должны пересекаться. Цикл, который начинается последним, должен завершаться первым:

FOR N: = 1 TO 5 DO

BEGIN WRITELN (N: 2, '.');

FOR J: = 1 TO 5 DO WRITELN (N: 2, '.', J: 2, '.') END;

 

Пример работы циклов

Пример 6.1. Найти сумму конечного ряда. Значение x вводится с клавиатуры.

 

program Project1;

var x, s: real; i: integer;

begin

Write('x='); Readln(x);

s: =0;

for i: =1 to 10 do //начало цикла For

s: =s+x*i; //конец цикла For

Writeln('s=', s: 5: 3); //вывод результата

Readln;

end.

 

 


Варианты заданий в табл. 7, 8.

Вычислить значение суммы или произведения членов ряда. Значение x задать с клавиатуры.

Таблица 7 – Задание 1

 

Пример 6.2. Дано действительное число х. Вычислить сумму элементов ряда. Число суммируемых элементов ряда ( N ) задается во время работы программы с клавиатуры.

 

.

Program Project2; //вычисление суммы заданного числа элементов ряда

var

x, s, a: real;

f: longint;

i, n, k: integer;

begin //начало раздела операторов

write('введите значение x=');

readln(x);

write('введите значение n=');

readln(n);

//значение первого слагаемого ряда вычисляется до цикла

a: =x; //значение x в степени (2*1-1)

f: =1; //значение f=(2*1-1)! =1

s: =a; //а - значение 1-го слагаемого, s=a

//к - переменная для изменения знака очередного слагаемого с + на -

k: =1;

for i: =2 to n do //начало цикла

begin

k: =- k; //значение (-1) для i-го слагаемого

a: =a * sqr(x); //вычисление х в степени (2i+1) i-го слагаемого

f: =f * (2*i-2)*(2*i-1); //вычисление факториала i-го слагаемого

s: =s+k*a/f; //добавление i-го слагаемого к общей сумме

end; //конец цикла

//вывод результата на экран

writeln('при x=', x: 4: 2, ' сумма', n, ' элементов =', s: 7: 5);

readln;

end.

 
 

 

 


Пример 6.3. Задано число х и натуральное число N. Вычислить произведение N элементов ряда

.

 

Для вычисления произведения целесообразно использовать рекуррентные соотношения, т.е. каждую дробь в скобках, начиная со второй, выражать через предыдущую. Это позволит существенно сократить объем вычислений. Расчет N! в числителе дроби каждого множителя выполняется в программе в теле цикла по формуле f: =f*n. p: =p*(2+f/a) - формула умножения элементов ряда Р=P1*P2*…*Pi-1 на очередной Pi элемент ряда.

 

Схема алгоритма и текст программы

 

Program Project3;

//вычисление произведения заданного числа элементов ряда

 

var x, p, a: real; f: longint; i, n: integer;

begin

write('введите x=');

readln(x);

write('введите n=');

readln(n);

p: =1; //начальное значение произведения

a: =1; f: =1; //начальные значение числителя и знаменателя дроби

for i: =1 to n do //начало цикла

begin

a: = a*x;

f: =f*i

p: =p*(2+f/a);

end; //конец цикла

//вывод результата на экран

writeln('при x=', x: 4: 2, ' произведение', n: 2, ' элементов=', p: 7: 5);

readln;

end.

 

 
 

 

 


Таблица 8 – Задание 2

 

Контрольные вопросы

1. Для чего предназначен оператор цикла?

2. Какие виды циклов есть в Delphi?

3. Какой формат записи имеет оператор FOR ? Какие существуют варианты этого цикла?

4. Как работает оператор FOR ? B каких случаях применяется?

5. Что является телом цикла?

6. Как в теле цикла выполнить несколько операторов?

7. Почему перед выполнением цикла некоторым переменным нужно задавать начальные значения?

8. При каких условиях оператор for не выполнится ни разу?

 

Лабораторная работа № 8

Тема. Расчет значений функции на заданном промежутке (табулирование функции). Оператор WHILE … DO

Цель работы: научиться разрабатывать схемы и программы с использованием оператора цикла WHILE … DO

Теоретическая часть

Для организации итерационных циклов, когда заранее не известно число повторений, применяют операторы WHILE...DO и REPEAT...UNTIL. Запись оператора WHILE...DO начинается c ключевого слова WHILE, за которым следует условие выхода из цикла, ключевое слово DO и тело цикла:

WHILE логическое условие DO

{операторы тела цикла};

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

Операторы, входящие в тело цикла, выполняются до тех пор, пока при проверке условия выхода из цикла получаем результат TRUE («истина»). Как только оно принимает значение FALSE («ложь»), управление передается оператору, следующему в программе за конструкцией WHILE. .. DO. Если условие имеет значение FALSE с самого начала выполнения оператора, то операторы тела цикла не выполняются ни разу. Оператор WHILE. .. DO реализует алгоритм циклической структуры с предусловием, так как условие выхода из цикла вычисляется и анализируется перед каждым выполнением тела цикла.

Пример 8.1. Разработать схему и программу табулирования функции, заданной на отрезке [a, b], h – шаг приращения аргумента x

a = 1, b = 6, h = 0, 5. Значение d задать c клавиатуры.

 

 


Поделиться:



Популярное:

Последнее изменение этой страницы: 2016-05-03; Просмотров: 963; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.048 с.)
Главная | Случайная страница | Обратная связь