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

Глава 2. Алгоритмы, реализуемые с помощью циклов типа для

Циклы типа для применяются, когда число повторений цикла известно к началу его

выполнения.

Язык

Пример

Величина шага

Алгоритмический язык

нц для i от 1 до N

тело цикла

кц

Всегда 1

Pascal

For i := 1 to N do

тело цикла;

1

For i := N downto 1 do

тело цикла;

-1

Basic

FOR I = 1 TO N STEP H

тело цикла

NEXT I

Шаг Н произвольный

(по умолчанию равен 1)

Пример 2.1. Вычислить сумму элементов числового массива A = (a1 , a2 , ... , aN ).

Тест

Данные

Результат

N=5

A=(3, 5, -2, 6, 3)

S=15.0

Алгоритмический язык Исполнение алгоритма

i

S

0

1

0 + a1 = 0+3 = 3

2

a1 + a2 = 3+5 = 8

3

a1+a2+a3 = 8-2 = 6

4

a1+a2+a3+a4 = 6+6 = 12

5

a1+a2+a3+a4+a5 = 12+3=15

алг Сумма (арг цел N, арг вещ таб A[1:N], рез вещ S)

дано N>0

нач цел i

S:=0

нц для i от 1 до N

S := S + A[i]

кц

кон

Turbo Pascal

Program Summa;

Uses Crt;

Type Mas = Array [1..20] of Real; Блок-схема

Var A : Mas;

i, N : Integer;

S : Real;

BEGIN

ClrScr; {очистка экрана }

Write('Введите N = ');

ReadLn(N); {ввод значения N}

For i := 1 to N dо {цикл по элементам массива}

begin

Write('A [ ', i , ' ] = ');

ReadLn(A[i]) {ввод элементов массива}

end;

S := 0; {присваивание начального значения}

For i := 1 to N do S := S+A[i]; {суммирование}

WriteLn;

WriteLn('Сумма равна ', S : 5 : 1);

ReadLn;

END.

Пример 2.2. Найти наибольший элемент числового массива A = (a1, a2 , ..., aN ) и его

номер.

Тест

Данные

Результат

N=4

A=(3, -1, 10, 1)

Amax=10

K=3

Алгоритмический язык

алг МаксЭлемент (арг цел N, арг вещ таб A[1:N], рез вещ Amax, рез цел k)

нач цел i

Amax := A[1]; k := 1

нц для i от 2 до N

если A[i] > Amax

то Amax:=A[i]; k := i

все

кц

кон

Исполнение алгоритма

i

2

3

4

A[i] > Amax

-

+

-

Amax

3

10

K

1

3

Turbo Pascal Блок-схема

Program MaxElem;

Uses Crt;

Type Mas = Array [1..20] of Real;

Var A : Mas;

i, N : Integer;

k : Integer;

Amax : Real;

BEGIN

СlrScr;

Write('Введите N = ');

ReadLn(N);

For i := 1 to N do {Ввод значений элементов массива А}

begin

Write('A [ ', i, ' ] = '); ReadLn(A[i]);

end;

Amax := A[1]; k:=1; {Поиск максимального элемента}

For i := 2 to N do

If A[i] > Amax then

begin

Amax := A[i]; k := i;

end;

WriteLn; WriteLn('Наибольший элемент' , k , '-й');

WriteLn('Его значение ', Amax : 5 : 1); ReadLn;

END.

Пример 2.3. В баскетбольную команду могут быть приняты ученики, рост которых

превышает 170 см. Составьте список кандидатов в команду из учеников класса.