Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
методичка по информатике.doc
Скачиваний:
70
Добавлен:
29.05.2015
Размер:
1.14 Mб
Скачать

3Способ: Организация цикла с постусловием (repeat…until) Общий вид алгоритма цикла с постусловием

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

Общий вид записи:

Repeat

«Тело цикла»;

until «Условие окончания цикла»;

«Тело цикла» − произвольная последовательность операторов;

«Условие» − выражение логического типа.

Процесс завершается тогда, когда после очередного выполнения заданной последовательности операторов тела цикла условие примет (впервые) значение истина. Проверка условия производится после выполнения тела цикла.

Repeat until − зарезервированные слова («Повторять», «пока не [выполнится условие]»).

Program Name3;

Var

X, А: integer; Y: real;

Begin

A:=5;

X:=1;

repeat

Y:=X*X+sin(X+A);

Writeln ('X=',X,'; Y=',Y:4:1);

X:=X+2;

until X>10;

readln;

end.

4 Способ: Организация цикла с параметром (for) Общий вид алгоритма цикла с параметром

Предписывает выполнять тело цикла для всех значений некоторой переменной (параметра цикла) в заданном диапазоне между начальным и конечным значениями. Используется в том случае, если параметр цикла имеет целочисленный тип и значение параметра увеличивается (уменьшается) на 1.

iпараметр цикла

i1 – начальное значение,

i2 – конечное значение

Общий вид записи:

for «Параметр цикла»:=«Начальное значение» to (downto) «Конечное значение» do

«Тело цикла»;

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

for, to, downto, do – зарезервированные слова («для», «до», «уменьшить до», «выполнить»).

Порядок выполнения действий:

До разработки алгоритма решения задачи необходимо вычислить количество повторений цикла К.

К – в данной программе будет означать конечное значение цикла.

1) Присвоение значения переменной А.

2) Присвоение переменной К значения, полученного до разработки алгоритма решения задачи.

3) Присвоение значения 1 переменной Х (начальное значение).

4) Организация цикла с параметром по переменной i (целое число).

5) Вычисление значения функции Y.

6) Вывод значения функции Y.

7) Добавление шага к переменной Х.

Program Name4;

Var

X, А, К i: integer; Y: real;

Begin

A:=5; K:=5;

X:=1;

for i:=1 to K do begin

Y:=X*X+sin(X+A);

Writeln ('X=',X, ';Y=',Y:4:1);

X:=X+2;

end;

readln;

end.

Задание 4. Циклические вычислительные процессы. Решение задач, содержащих вычисление конечных сумм и произведений

Условие задачи:

Вычислите конечное значение суммы функции

Для решения задачи использовать разные способы организации цикла:

1) Цикл с предусловием (WHILE);

2) Цикл с постусловием (REPEATUNTIL);

3) Цикл с параметром (FOR) со счётчиком (с шагом 1).

Пояснение:

1 способ: Цикл с предусловием (WHILE)

Обозначения:

А – вспомогательная переменная, в которой вычисляется слагаемое;

S – переменная, в которой происходит накапливание значений сумм.

Первое значение переменной S=0.

Program Summa1;

Var

X: integer; S, A: real;

Begin

X:=1;

S:=0;

While X<=20 do begin

A:=1/(X*X);

S:=S+A;

X:=X+1;

end;

Writeln ('S=', S:4:2);

readln;

End.

2 способ: Цикл с постусловием (REPEATUNTIL)

Program Summa2;

Var

X: integer; S, A: real;

Begin

X:=1;

S:=0;

repeat

A:=1/(X*X);

S:=S+A;

X:=X+1;

until Х>20;

Writeln ('S=', S:4:2);

readln;

End.

3 способ: Цикл с параметром (FOR) со счётчиком (с шагом 1)

Program Summa3;

Var

X: integer; S, A: real;

Begin

S:=0;

for X:=1 to 20 do begin

A:=1/(X*X);

S:=S+A;

end;

Writeln ('S=', S:4:2);

readln;

End.

Условие задачи:

Вычислите конечное значение произведения функции

Пояснение:

1способ: Цикл с предусловием (WHILE)

Обозначения:

А – вспомогательная переменная, в которой вычисляется множитель;

P – переменная, в которой происходит накапливание значений произведения.

Первое значение переменной P=1.

Program Summa1;

Var

N: integer; P, A: real;

Begin

N:=1;

P:=1;

While N<=10 do begin

A:=N*N/(3+N);

P:=P*A;

N:=N+1;

end;

Writeln ('P=', P:4:2);

readln;

End.

Остальные способы аналогично вычислению конечной суммы.

Задание 5. Разветвление в цикле

Разветвление в цикле означает, что тело цикла содержит разветвляющийся процесс.

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

Общий вид алгоритма разветвляющегося процесса

Общий вид записи с условным оператором:

If «Условие» then «Оператор_1» else «Оператор_2»;

«Условие» − логическое выражение.

if, then, else − зарезервированные слова («если», «то», «иначе»).

Условие задачи:

Найдите значения функции ,

если

Порядок выполнения действий:

1. Присвоение значений переменным A и B.

2. Организация цикла по переменной Х.

3. Вычисление функции D в зависимости от условия.

4. Вычисление значений функции F.

5. Вывод значения функции F.

1 способ: Цикл с предусловием (WHILE)

Program funk_F1;

Var

а, b, d, x, F: real;

begin

a:= 2.7; b:= -0.3;

x:=1;

While x<=8 do begin

if x<2.3 then d:=(a+x)/x else

if x>=5 then d:=a*x*x+b*x else

d:=(a+b)/(x+1);

F:=b*d+ln(d);

writeln('F(',x:2:1, ')= ',F:6:2);

x:=x+0.5;

end;

readln;

end.

2 способ: Цикл с постусловием (REPEATUNTIL)

Program funk_F2;

var

a, b, d, x, F:real;

begin

a:= 2.7; b:=-0.3;

x:=1;

repeat

if x<2.3 then d:=(a+x)/x else

if x>=5 then d:=a*x*x+b*x else

d:=(a+b)/(x+1);

F:=b*d+ln(d);

Writeln ('F(',x:2:1, ')= ',F:6:2);

x:=x+0.5;

until x>8;

readln;

end.

Задание 6. Обработка одномерных массивов

Одномерный массив − это фиксированное количество элементов одного и того же типа, объединенных одним именем, где каждый элемент имеет свой номер.

Например, A(8) – одномерный массив, где А – имя массива, 8 – количество элементов.

Общий вид записи:

А1, А2 , А3……., Аn – это одномерный массив,

где Аi – элементы массива, i=1, 2, 3……n – индекс представляет собой переменную целого типа. Запись элемента массива на языке Паскаль А[i].

Общий вид записи описания одномерного массива:

Var «Имя массива»: Array[n1..n2] Of «Тип элементов»;

n1 − номер первого элемента;

n2 − номер последнего элемента.

Array, ofзарезервированные слова («массив», «из»).

Задача 1. В массиве X(15) вычислите максимальный элемент массива и его порядковый номер.

Обозначения:

MAX – максимальный элемент массива;

K – порядковый номер максимального элемента массива.

Program Massiv1;

Var

{Описание используемых переменных}

K, i, MAX: integer;

{Описание массива X}

X: array [1..15] of integer;

begin

{Организация цикла для ввода элементов массива с клавиатуры}

for i:=1 to 15 do

readln (X[i]);

{Присвоение начальных значений максимальному элементу и его порядковому номеру}

MAX:=X[1]; K:=1;

{Организация цикла для поиска максимального элемента массива и его порядкового номера}

for i:=2 to 15 do

if X[i]>MAX then begin MAX:=X[i]; K:=i; end;

{Вывод результатов вычисления на экран}

writeln ('MAX=', MAX:2, ';K=', K);

readln;

end.

Задача 2. В массиве R(8) найдите минимальный элемент и замените его на 5.

Обозначения:

MIN – минимальный элемент массива;

N – порядковый номер минимального элемента.

Program Massiv2;

Var

R: array[1..8] of integer;

i, n, MIN: integer;

begin

for i:=1 to 8 do

readln (R[i]);

{Присвоение начальных значений минимальному элементу и его порядковому номеру}

MIN:= R[1]; n:=1;

{Организация цикла для поиска минимального элемента массива и его порядкового номера}

for i:=2 to 9 do

if R[i]<MIN then begin

MIN:= R[i]; n:=i;

end;

{Вывод результатов вычисления на экран}

writeln ('MIN=',MIN);

{Замена минимального элемента массива на 5}

R[n]:=5;

{Вывод нового массива на экран}

for i:=1 to 8 do

write (R[i]:5);

readln;

end.

Задача 3. В массиве А(8) определите количество положительных и отрицательных элементов.

Обозначения:

p – количество положительных элементов;

ot – количество отрицательных элементов.

Program Massiv3;

Var

p, ot, i: integer;

a: array[1..8] of integer;

begin

writeln ('Введите элементы массива А');

for i:=1 to 8 do

readln (А[i]);

{Присвоение начальных значений количеству положительных и отрицательных элементов}

p:=0; ot:=0;

{Организация цикла для подсчёта количества положительных и отрицательных элементов массива}

for i:=1 to 8 do

if А[i]>0 then p:=p+1 else ot:=ot+1;

{Вывод результатов вычисления на экран}

writeln ('Количество положительных элементов=', p:2);

writeln ('Количество отрицательных элементов=', ot:2);

readln;

end.

Задача 4. В массиве X(15) вычислите сумму элементов массива меньших 10 и произведение элементов массива больших нуля.

Обозначения:

S – сумма элементов массива, меньших 10;

P – произведение элементов массива, больших нуля.

Program Massiv4;

Var

i, S, P: integer;

X: array [1..15] of integer;

begin

for i:=1 to 15 do

readln (X[i]);

{Присвоение начальных значений сумме и произведению}

S:=0; P:=1;

{Организация цикла для вычисления суммы и произведения элементов массива}

for i:=1 to 15 do begin

if X[i]<10 then S:=S+X[i];

if X[i]>0 then P:=P*X[i];

end;

{Вывод результатов вычисления на экран}

writeln ('S=', S);

writeln ('P=', P);

readln;

end.

Задача 5. В массиве D(15) найдите все положительные элементы и замените их на среднее арифметическое отрицательных элементов.

Обозначения:

S – сумма отрицательных элементов массива;

SA – среднее арифметическое отрицательных элементов массива;

Kколичество отрицательных элементов массива.

Program Massiv5;

Var

K, I: integer;

S, SA: real;

D: array [1..15] of real;

Begin

write ('Введите элементы массива D');

for i:=1 to 15 do

readln (D[i]);

{Присвоение начальных значений сумме и количеству элементов}

S:=0; K:=0;

{Организация цикла для вычисления суммы и количества отрицательных элементов массива}

for i:=1 to 15 do

if D[i]<0 then begin S:=S+D[i]; K:=K+1;

end;

{Вычисление среднего арифметического элементов массива}

SA:=S/K;

{Вывод среднего арифметического элементов массива на экран}

writeln ('SA=',SA:7:2);

writeln ('Вывод нового массива D');

{Организация цикла для определения положительных элементов массива и замена их на среднее арифметическое и вывод нового массива на экран}

for i:=1 to 15 do begin

if D[i]>0 then D[i]:=SA;

writeln ('D(',i, ')= ', D[i]:5:2);

end;

readln;

end.

Задача 6. В массиве С(7) отсортируйте все элементы по возрастанию.

Обозначения:

m – вспомогательная переменная для перестановки элементов массива.

Данные массива задаются типизированной константой, значения элементов массива выбираются произвольно

Program Massiv6;

Var

k, i, M: integer;

{Описание массива С с помощью типизированной константы}

const c: array[1..7] of integer =

(5,-4,2,7,-1,88,9);

begin

{Сортировка массива}

for k:=1 to 7 do

for i:=k+1 to 7 do

if c[i]<=c[k] then begin M:=c[i]; c[i]:=c[k]; c[k]:=M;

end;

{Вывод нового массива на экран}

for i:=1 to 7 do

writeln ('c[',i,']=',c[i]:2);

readln;

end.