Программирование циклических алгоритмов с предусловием

Структура оператора цикла с предусловием (с предварительной проверкой условия):

WYILE <условие-выполнения> DO <оператор>;,

пока делать

где <условие> - это любое логическое выражение, <оператор> - это произвольный оператор Турбо Паскаля, в том числе и составной.

Пример. Для трех значений a = 0.1, 0.2,

0.3 протабулировать функцию y=a. tg (x/4) при

изменении аргумента x на интервале [0.5, 0.9]

A = 0,1
с шагом, равным a.

Для ССА (рис. 1) решения данной задачи

программа может быть следующей:

Program a4_1;

var a,x,y: real;

begin

writeln (, ------------------------------ ,);

writeln (, a x y , );

writeln (, ------------------------------ ,);

a:=0.1;

while a<=0.31 do

begin

writeln (a:5:2);

x:=0.5;

while x<=0.91 do

begin

y:=a * sin (x / 4) / cos (x / 4);

writeln (x:12:2, , ,, y:10:2);

x: = x + a;

end;

writeln (, ------------------------------ ,);

a: = a + 0.1

end;

end. Рисунок И1. Схема программы

Пример. Даны три массива А(5), В(5), С(5). Найти среднее арифметическое значение наименьших элементов массивов.

До написания программы разрабатывается ССА главной программы (рис. И2а) и ССА для подпрограммы нахождения наименьшего элемента в любом массиве (рис.И2б).

а) б)

Рисунок И2. Главная программа а) и подпрограмма б)

Отлаженная программа решения задачи имеет следующий вид

Program 1r8;

type mass = array [1..5] of integer;

const a:mass = (5,2,7,1,8);

b:mass=(3,4,5,6,6);

c:mass=(3,8,5,2,6);

var

n:integer;

sr:real;

FUNCTION minim (d:mass):integer; {заголовок функции}

var

i,min:integer;

begin {начало блока операторов функции}

min:=d[1]

for i:=2 to 5 do

if d[i]<min then

min:=d[i];

else if ST>30 then SP:=300

else SP: =100+(ST-15)*10;

writeln (,зарплата=,ZP:10:2,, $) {рис. И3а}

end.

a) б)

Рисунок И3. Второй вариант

Второй вариант реализации задачи с применением оператора выбора представлен ССА (рис. И 3б) и следующей программой:

Program zarplata2;

var ST: byte; {стаж (байтовый) тип)}

ZP: real; {зарплата (вещественный тип)}

begin

writeln (,введите стаж,);

read(ST); {ввод стажа}

case ST of {выбор из}

1..4: ZP:=50;

5..15: ZP:=100;

16..29: ZP:=100+(ST-15)*10;

end.

Примечание. Приложения И составлено О. П. Шафеевой
Приложение К


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: