Цикл с заданным числом повторений

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

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

Предварительные вычисления, присваивание параметру начального значения Проверка условия окончания цикла Расчеты при текущем значении параметра цикла   Изменение параметра цикла по заданному закону и переход к блоку 2

 

Рис. 8.Развернутая схема цикла с заданным числом повторений

 

Следует подчеркнуть, что цикл с заданным числом повторений представляет собой соединение линейной структуры (начало цикла), структуры цикл-ПОКА (условие в нем заменено на противоположное) и снова линейной (последовательной) структуры в теле цикла.

Прочитать этот алгоритм можно следующим образом: «Меняя параметр от начального значения до конечного значения, повторять тело цикла».

Алгоритм, приведенный на рис. 8, принято называть развернутой схемой цикла с заданным числом повторений. Такая схема удобна для анализа алгоритма и поиска ошибок. Однако при написании алгоритма можно использовать и компактную запись. В псевдокодах она выглядит так:

Цикл по параметр от начальное значение

до конечное значение шаг приращение;

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

Конец-цикла.

Необходимо подчеркнуть, что развернутая и компактная записи после реализации в машине дают один и тот же результат. Компактная запись менее громоздка за счет того, что в ней не задаются в явном виде связи между отдельными элементами структуры.

Рассмотрим использование циклической структуры этого типа на примере: составить алгоритм печати таблицы значений х, х2, sin(х) и 1/х при изменениях х от 1 с шагом 0.1 , пока выполняется условие х ≤ 10.

Составим алгоритм в виде псевдокодов:

1. Начало;

2. Список данных:

x, fl, f2, f3 — вещественный;

3. Цикл по х от 1 до 10 шаг 0.1;

4. fl:=x2;

f2:=sin(x);

f3:=l/x;

5. Вывод(х, fl, f2, f3);

6. Конец-цикла 3;

7. Конец.

Отметим, что алгоритм состоит из 7 пунктов. Та же самая задача была решена в подразд. 1.2.1, но там в качестве циклической структуры для построения алгоритма использовался цикл-ПОКА, алгоритм состоял из 9 пунктов. Сокращение алгоритма оказалось возможным за счет использования в нашем случае цикла с заданным числом повторений, в структуре которого уже предусмотрены присваивание начального значения параметру и приращение параметра.

Для изображения компактной графической схемы цикла с параметром могут быть использованы символы «Подготовка» или «Граница цикла» (см. табл. 1), как показано на рис. 9.

Рис. 9.Компактная запись цикла с параметром:

а — с использованием символа «Подготовка»; б — с использованием

символа «Граница цикла»; i — параметр цикла; iн— начальное

значение параметра; iк — конечное значение параметра;

Δi — приращение (шаг)

 

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

 

Рис. 10.Развернутая схема цикла с заданным числом повторений: а — с возрастающим параметром; б — с убывающим параметром

 

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


Примеры выполнения заданий в контрольной работе:

 

1. Теоретическая часть. Примеры вопросов:

- Создание ярлыков в MS Windows;

- Управление окнами в MS Windows;

- Работа с дисками в MS Windows;

 

2. Практическая часть. Примеры заданий:

 

2.1 Ввод и вывод числовых значений

1 группа 2 группа 3 группа
G=10^4 H=-25 Y=-4,5 Z=42567*10^-2 Q=4,57*10^-3 R=-56,3

uses CRT;

var a:array [1..6] of real;

b:array [1..6] of char;

i:integer;

begin

ClrScr;

b[1]:='G';

b[2]:='H';

b[3]:='Y';

b[4]:='Z';

b[5]:='Q';

B[6]:='R';

writeln('vvedite G v decatichnoj forme');

readln(a[1]);

writeln('vvedite H v decatichnoj forme');

readln(a[2]);

writeln('vvedite Y v decatichnoj forme' );

readln(a[3]);

writeln('vvedite Z v decatichnoj forme');

readln(a[4]);

writeln('vvedite Q v pokazatelnoj forme');

readln(a[5]);

writeln('vvedite R v pokazatelnoj forme');

readln(a[6]);

writeln;

writeln('Resulyatu rabotu');

FOR I:=1 TO 6 DO

begin

if i in [1..4] then

writeln(' ',b[i],' v pokazatelnoj forme ',a[i]:2:4);

if i in [5,6] then

writeln(' ',b[i],' v pokazatelnoj forme ',a[i])

end;

writeln;

end.


 

Результат работы программы:


2.2 Составить схему алгоритма и программу вычисления значения функции.

 

Вид функции Исходные данные
Х Y Z
-0,643 -6,324 -

uses CRT;

var x:real;

b:real;

y:real;

begin

ClrScr;

writeln('VVedite x');

readln(x);

writeln('vvedite y');

readln(y);

b:= x+(y/(x+(y/(x+y))));

writeln('b=',b:6:3);

writeln;

end.

Выполнение программы:

2.3 Составить схему алгоритма и программу для вычисления значения функций при заданных условиях.

Вид функции Исходные данные
Х Y Z
3,75 0,22 -6,72 1,05

var x1,x2,a1,a2,b1,b2,z,y:real;

i,n:integer;

begin

writeln('vedite x1 ');

readln(x1);

writeln('vedite x2 ');

readln(x2);

writeln('vedite z');

readln(z);

writeln('vedite y');

readln(y);

if (x1>=z) or (x2>=z) then

begin

a1:= (x1+y)/(5+sqr(sin(z)));

a2:= (x2+y)/(5+sqr(sin(z)));

writeln ( 'a1=',a1:5:2);

writeln ( 'a2=',a2:5:2);

end;

if (x1<z) or (x2<z) then

begin

b1:=sqrt(abs(y+sqr(sin(z)/cos(z))));

writeln ( 'b=',b1:5:2);

end;

writeln;

readln

end.


Выполнение программы:

 

 

2.4 Вычислить таблицу значений функции для значений аргумента в заданном интервале с заданным шагом.

Вид функции Исходные данные
a b xn xk Dx
8,24 - 14,9 24,8 1,5

Uses crt;

var x,x1,x2,dx,a,y:real;

i,n:integer;

begin

clrscr;

writeln('vedite x1 ');

readln(x1);

writeln('vedite x2 ');

readln(x2);

writeln('vedite dx');

readln(dx);

writeln('vedite a');

readln(a);

while x1<=x2 do begin

y:=sqr(ln(a+x1))/sqr(a+x1);

writeln ( 'y = ',y:5:5);

x1:=x1+dx;

end;{while}

writeln;

readln

end.

 

Выполнение программы:

 

2.5 Вычислить таблицу значений функции для значений аргумента, который представляет собой массив.

Вид функции Исходные данные
a b x1 x2 x3 x4
1,38 -1,26 70,1 96,3 17,8 20,65

 

const x:array[1..4]of real=(70.1,96.3,17.8,20.65);

var i:integer;

y,a,b:real;

 

begin

a:=1.38; b:=-1.26;

writeln(' x y');

for i:=1 to 4 do

begin

y:=a*sqr(ln(x))/(b+sqrt(x));

writeln(x[i]:5:2,y:7:2);

end;

readln;

end.

 

Выполнение программы:

2.6 Для совокупности чисел Х(0.01;-27.3;0;125.27;-371.45;0;12;-5;-172.3;0.05;17.1;49.5;-0.01) при А=-5. Вычислить сумму элементов, меньших А.

 

uses crt;

const x: array [1..13] of real = (0.01,-27.3,0,125.27,371.45,0,12,-5,-172.3,0.05,17.1,49.5,-0.01);

A = -5;

Var n,i, k:integer;

sum:real;

begin

clrscr; writeln('Masiv X'); sum:=0;

for i:=1 to 13 do begin writeln(x[i]:2:2);

if x[i]<A then sum:=sum+x[i];

end;

writeln; write('Sum = ',sum:4:3); writeln

end.

Выполнение программы:

2.7 Для совокупности чисел Х(0.01;-27.3;0;125.27;-371.45;0;12;-5;-172.3;0.05;17.1;49.5;-0.01) при А=-5. Найти номер элемента с максимальным значением

 

const x:array[1..13]of real=(0.01,-27.3,0,125.27,-371.45,0,12,-5,

-172.3,0.05,-17.1,49.5,-0.01);

A=-5;

var i:integer;

max:real;

 

begin

max:=x[1];

for i:=2 to 13 do

if x[i]>max then max:=x[i];

writeln('Max=',max:3:2);

readln;

end.

2.8 Обработка двумерного массива:

uses CRT;

type q=array [1..3] of integer;

var

Q3: array [1..5] of q;

j,i,k,temp:integer;

begin

ClrScr; writeln('Vvedite masiv Q3 5 na 3');

for i:=1 to 5 do

for j:=1 to 3 do read(Q3[i,j]);

for j:=1 to 3 do begin

for i:=1 to 4 do

for k:=1 to 5-i do begin

if q3[k,j]<q3[k+1,j] then begin

temp:=q3[k,j];

q3[k,j]:=q3[k+1,j];

q3[k+1,j]:=temp;

end; end; end;

writeln ('Preobrazovanaya matrica Q3:');

for i:=1 to 5 do begin

for j:=1 to 3 do begin write (' ', Q3[i,j]);

end; writeln; end; readln end.

Выполнение программы:


2.9 Организация программ, содержащих функции пользователя.

Вероятности m событий в распределении Пуассона

 

uses CRT;

var

A,M,i:integer;

z:real;

function fact(var n:integer):integer;

var temp : integer;

begin

if n>1 then begin

temp:=n-1;

fact:=n*fact(temp);

end

else

fact:=1;

end;

 

begin

ClrScr;

writeln('vvedite M ' );

readln(M);

writeln('vvedite A ' );

readln(A);

z:=(A*exp(-A*Ln(1.27)))/(fact(M));

writeln('z=',z:6:2);

writeln;

end.

Выполнение программы:

2.10 Написать программу для работы в диалоговом режиме с файлом последовательного доступа указанной структуры.

 

Имя файла Поля записи Запрос
Polikl ФИО № Карточки № Участка Дата прививки №1 Вывести количество граждан, которые должны сделать прививку №1 М-го числа

Uses Crt;

Type Polikl=record

FIO : string;

Nk : integer;

Nuch : integer;

Priv1: string;

end;

Var

F : file of Polikl;

Polik : Polikl;

i : integer;

s,M : string;

sum : integer;

 

Begin

Clrscr;

writeln('Vvedite bazu:');

Assign(F, 'Polikl.dat');

Rewrite(F);

Repeat

write('FIO : '); Readln(Polik.FIO);

write('N kart : '); Readln(Polik.Nk);

write('N uch: '); Readln(Polik.NUch);

write('Data Privivki N1: '); Readln(Polik.Priv1);

Write('Next (Y/N): '); readln(s);

write(F,Polik);

until (s='n') or (s='N'); Writeln;

write ('Vvedite datu: '); Readln(M);

Reset(F);

sum:=0;

WriteLn('Grazhdane po privivke N1:');

while not Eof(F) do

begin

Read(F, polik);

If Polik.Priv1=M then Sum:=Sum+1;

end;

Close(F);

Writeln (Sum);

Readkey;

End.

Выполнение программы:

 








Дата добавления: 2015-03-11; просмотров: 6994;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.078 сек.