Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Фрагмент блок-схемы

End.

Begin

Begin

End.

Repeat

Begin

Repeat

End.

End

Begin

Begin

Begin

Примеры алгоритмов циклической структуры

REPEAT

Begin

Writeln('Цикл');

k1:=k1+1

end;

7. В этом фрагменте цикл выполнится ровно 4 раза и компьютер перейдет к следующим командам.

8. При использовании операторов цикла с предусловием и постусловием необходимо быть осторожным в тех случаях, когда в логическом выражении (условии окончания цикла) фигурируют вещественные переменные. Следует помнить, что в компьютере значения выражений вещественного типа вычисляются приближенно, т.е. с небольшой погрешностью. Например, вещественное число 1.0 в компьютере может быть представлено как 0.99999999 или как 1.00000001. Поэтому фрагмент

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

...........

UNTIL X=B;

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

где X, B: Real, будет неправильным, хотя с математической точки зрения он верен. Условие X=B скорее всего никогда не выполнится, в результате произойдет "зацикливание" программы. Не следует управлять циклом с помощью логического выражения, в котором вещественные переменные проверяются на строгое равенство.

Пример 1. Для вычисления В в 9-й степени при В < 0, когда Exp(9*Ln(B)) недопустим, можно использовать следующий цикл:

………

K:=1; P:=1;

While K <= 9 Do

P:=P*B;

K:=K+1

End;

 

Пример 2. Составить программу вычисления и вывода на печать таблицы значений функции , при Х1 <= Xi <= Хn с шагом dX. Здесь а=-105; b=-3,62e-2; c=1,1; Х1 =2,65; Хn =5,55; dX=0,15.

Program Cikl_1;

Var A,B,C: Real;

X,Xn,Xk,dX: Real;

Z: Real;

Read(A,B,C,Xn,Xk,dX);

X:=Xn;

While X <= Xk Do

Z:=A*Exp(B*X - C*X*X);

Writeln(' X=',X:5:2,' ':5,'Z=',Z:10);

X:=X+dX

 

Пример 3. Вычислить В в 9-й степени при В <0 с использованием оператора цикла Repeat.

K:=1; P:=1;

P:=P*B;

K:=K+1

Until K > 9;

Пример 4. Составить программу для вычисления и вывода на печать таблицы значений функции при х=5,6,...,25; а=15.27е-2.

Program Cikl_2;

Var A,Y: Real;

X: Byte;

A:=15.27e-2;

X:=5;

Y:=Sin(A*X) * Sqrt(X);

WriteLn(' X=',x,' Y=',y:10);

X:=X+1

Until X > 25

Операторы тела цикла будут выполняться до тех пор, пока Х не станет больше 25.

Пример 5. Н айти произведение натуральных чисел меньших 200 и кратных 7.

 

uses crt;

var m,n:word;

l:longint;

clrscr;

l:=1;

m:=1;

while m<200 do

if m mod 7 = 0 then l:=l*m;

inc(m);

end;

writeln(l);

readkey;

Пример 6. Для введенной последовательности целых чисел, признаком конца которой является ноль, определить максимальное число, сумму всех чисел и количество чисел удовлетворяющих условию: число цифр 7 в числе равно 3

uses crt;

var n,m,max,s,k,p:longint;

st:string;

begin

clrscr;

max:=-2147483647;

s:=0;

k:=0;

repeat

read (n);

if n>max then max:=n; {поиск максимального значения числа}

s:=s+n; {здесь находится счетчик чисел}

str(n,st); {преобразование целого числа в символьное значение}

repeat

p:=0;

p:=pos('7',st); {поиск значения '7' в строке st и сохранение номера позиции в Р, откуда начинается найденный символ}

if p<>0 then

begin

inc(m);

delete(st,1,p);{удалить количество символов Р из строки ST, }

{начиная с позиции 1}

end;

until p=0;

if m=3 then

begin

inc(k);

m:=0;

end;

until n=0;

writeln ('max: ',max,' summa: ',s,' k: ',k);

readkey;

end.

Пример 7. Вычислить и вывести на экран значения функции y=x3 на интервале изменения х, равном [a, b] в n равноотстоящих точках интервала. Найти:

- сумму тех значений функции, которые удовлетворяют условию –10 < y < 10;

- произведение тех значений функции, целая часть которых делится на 3 без остатка;

- количество положительных значений функции в точках с нечетными номерами;

- наибольшее из вычисленных значений функции в расчетных точках.

- наибольшее из вычисленных значений функции в расчетных точках.

Следующий рисунок иллюстрирует задачу. Требуется вычислить значения функции в n точках, изменяя переменную x от а до b с постоянным шагом

 

Исходные данные задачи:

a, b – левая и правая границы интервала изменения x;

n – количество расчетных точек.

Введем следующие обозначения:

x – изменяющийся аргумент функции;

y – вычисляемое значение функции;

dx – шаг изменения значения x;

i – номер расчетной точки, изменяющийся от 1 до n с шагом 1;

sum – сумма вычисленных значений функции, удовлетворяющих условию –10 < y < 10;

pr -произведение вычисленных значений функции, целая часть которых делится на 3 без остатка;

kol -положительных значений функции в точках с нечетными номерами;

max – наибольшее из вычисленных значений функции.

 

Используем для организации цикла оператора For.

Программа Комментарии
Program Primer5_7_1; Var a, b, dx, sum, pr, x, y, max: real; n, kol, i: integer; Объявляем переменные
Begin Writeln(‘Введите a и b’); Readln(a,b); Writeln(‘Введите количество расчетных точек N>1’); Readln(n); Вводим исходные данные
dx:=abs(b-a)/(n-1); Вычисляем шаг изменения x
x:=a; For i:=1 to n do begin Y:=x*x*x; Writeln (x:5:2, y:8:2); x:=x+dx; end; Вычисляем значения функции и выводим их на экран
sum:=0; x:=a; For i:=1 to n do begin Y:=x*x*x; If (y>-10) and (y<10) then sum:=sum+y; x:=x+dx; end; Writeln(‘Сумма=’,sum:8:3); Вычисляем сумму значений функции, удовлетворяющих условию –10<y<10Комментарий:добавляем к сумме только те значения переменной y, которые удовлетворяют условию (y>-10) and (y<10)
pr:=1; x:=a; For i:=1 to n do begin Y:=x*x*x; If (trunc(y) mod 3 =0) then pr:=pr*y; x:=x+dx; end; Writeln(‘Произведение=’,pr:8:3); Вычисляем произведение тех значений функции, целая часть которых делится на 3 без остатка Комментарий:для проверки делимости на 3 без остатка вычисляется целая часть y с помощью функции trunc(y),затем проверяется условие(trunc(y) mod 3 =0)- равен или нет нулю остаток от целочисленного деления (операция mod вычисляет остаток от целочисленного деления)
kol:=0; x:=a; For i:=1 to n do begin Y:=x*x*x; If (y>0) and (i mod 2=1) then kol:=kol+1; x:=x+dx; end; Writeln(‘Количество =’,kol); Вычисляем количество положительных значений функции в точках с нечетными номерами Комментарий:для проверки нечетности номеров точек (переменная i) используется условие i mod 2=1 Если значение переменной i нечетное, то остаток от целочисленного деления равен 1.
max:=a*a*a; x:=a; For i:=1 to n do begin Y:=x*x*x; If max<y then max:=y; x:=x+dx; end; Writeln(‘Наибольшее значение=’, max:8:3); End. Вычисляем наибольшее значение функции в расчетных точках Комментарий: за начальное значение переменной max принимается значение функции в точке x=a. В цикле вычисляются новые значения, каждое из которых сравнивается со значением max. Если новое значение функции оказывается больше чем значение max, то оно принимается за новое значение max.

Пример. Разложение целого числа Х на простые множители. Будем делить Х на p, начиная с p = 2. Если делится нацело, то p — множитель, если не делится, то увеличиваем p на 1, пока Х <> 1.

read(x);p:= 2;repeat if x mod p = 0 then begin write(p, ' '); x:= x div p; end else p:= 1+p;until x = 1;

Контрольные вопросы и задания

  1. Назовите основные виды циклов. Назовите отличия циклов друг от друга.
  2. Опишите структуру оператора цикла с предусловием. Принцип выполнения цикла с предусловием.
  3. Дайте описание типу данных, используемых в качестве параметров для цикла с предусловием.
  4. Опишите структуру оператора цикла с постусловием. Принцип выполнения цикла с постусловием.
  5. Дайте описание типу данных, используемых в качестве параметров для цикла с постусловием.
  6. Дайте объяснение выражению «Может ли один цикл быть вложен внутрь другого?».
  7. Назовите правила использования операторов цикла с пост- и предусловием.
  8. Определите сколько раз исполнится фрагмент программы и чему равно выражение K.

K:=0;

WHILE K<=10 DO

begin K:=K+2; Write('K= ',K:3) end;

  1. Определите сколько раз исполнится фрагмент программы и чему равно выражение K.

K:=0;

WHILE K<=10 DO

begin K:=K+3; Write('K= ',K:3) end;

  1. Определите сколько раз исполнится фрагмент программы и чему равно выражение K.

m:=1;

while m<20 do

<== предыдущая лекция | следующая лекция ==>
Правила использования операторов цикла | Статистика заработной платы
Поделиться с друзьями:


Дата добавления: 2014-01-03; Просмотров: 1439; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.156 сек.