Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алгоритмизация.doc
Скачиваний:
60
Добавлен:
26.05.2015
Размер:
364.03 Кб
Скачать

2) Цикл с постусловием цикл «повторять… до»

да

нет

условие

3) счетный цикл

FOR x=xo TO xk [STEP h]

Тело цикла

NEXT [x]

Рис. 6. Виды циклических алгоритмов.

Задача 1.

Изменить программу проверки правильности ввода пароля, предоставив три попытки ввода пароля. Если пароль вводится трижды неправильно, то выполнение программы прекращается.

Рассмотрим решение задачи 1 тремя способами.

1-ый способ – организация цикла с помощью операторов If… и Goto. Алгоритм решения см. рис 7.

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

  1. переменной P$ присваивается значение пароля, например, #$W56;

  2. значение счетчика (переменная К) обнуляется;

  3. вводится с подсказкой “Пароль” значение переменной X$;

  4. счетчику присваивается значение K=K+1 (в первом цикле - 1);

  5. проверяется значение счетчика: если оно больше 3, то выводится сообщение “Нет доступа!” и программа останавливается, так будет после третьей неправильной попытки ввода пароля;

  6. в противном случае сравнивается значение введенного пароля с заданным.

  7. если они неравны, то значение логического выражения P$<>X$ будет Истина и будет выводится сообщение “Пароль неверен. Попытка ” К и осуществляется переход к оператору ввода по метке 55, то есть будет очередная попытка ввода пароля.

  8. если же пароль введен верно, то значение логического выражения P$<>X$ будет Ложь и выполнится переход на следующую строку программы, то есть будет выводиться сообщение “Программа выполняется!” и последует выполнение любой программы записанной ниже.

Блок-схема алгоритма представлена на рис.7

Рис. 7. Алгоритм решения задачи 1 – 1ый способ

Программа

P$=”#$W56”

K=0

55 Input “Пароль”, X$

K=K+1

If K>3 Then Print“Нет доступа!”: Stop

If P$<>X$ Then Print “Пароль неверен. Попытка ”, К: Goto 55

Print “Программа выполняется!”

<<Здесь может быть любая программа>>

End

2-ой способ – организация цикла с помощью оператора While … Wend - алгоритм 2 на рис 6

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

  1. переменной P$ присваивается значение пароля, например, #$W56;

  2. значение счетчика (переменная К) обнуляется;

  3. открывается цикл, в котором все операторы будут выполняться пока значение счетчика К не станет больше 3:

  • вводится с подсказкой “Пароль” значение переменной X$;

  • сравнивается значение введенного пароля с заданным P$=X$;

  • если значение логического выражения P$=X$ Истина, то есть пароль введен верно, произойдет выход из цикла по оператору Goto 44, будет выводится сообщение “Программа выполняется!” и последует выполнение любой программы записанной ниже;

  • если же пароль введен неверно, то значение логического выражения P$=X$ будет Ложь, выполнится переход на следующую строку программы, то есть счетчику присвоится значение по формуле K=K+1 (в первом цикле - 1); затем будет выводиться сообщение “Пароль неверен. Попытка ” К

  • цикл повторится, последует очередная попытка ввода пароля;

  1. если значение счетчика: станет больше 3, то выводится сообщение “Нет доступа!” и программа останавливается, так будет после третьей неправильной попытки ввода пароля.

Блок схема алгоритма представлена на рис.8.

P$= “#$W56”

K=0

нет

да

да

нет

K=K+1

Программа

Рис.8. Блок схема алгоритма.(2-ой способ).

Программная реализация алгоритма рис.8.

P$=”#$W56”

K=0

While K<3

Input “Введите пароль”, X$

If P$=X$ Goto 44

K=K+1

Print “Пароль неверен. Попытка ” К

Wend

Print“Нет доступа!”

Stop

44 Print “Программа выполняется!”

<<Здесь может быть любая программа>>

End

3-ий способ – организация цикла с помощью оператора For - алгоритм 3 на рис 6.

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

Алгоритм отличается от предыдущего использованием оператора For K=1 To 3, который сам умеет считать циклы, поэтому счетчик К=К+1 не требуется.

Блок схема алгоритма представлена на рис.9.

P$= “#$W56”

нет

да

Программа

Рис.9. Блок схема алгоритма.(3-ой способ).

Программная реализация алгоритма рис.9.

P$=”#$W56”

For K=1 To 3

Input “Введите пароль”, X$

If P$=X$ Goto 44

Print “Пароль неверен. Попытка ” К

Next

Print“Нет доступа!”

Stop

44 Print “Программа выполняется!”

<<Здесь может быть любая программа>>

End

В рассмотренных нами задачах использовались простые переменные. Теперь попробуем разобраться с массивами.

Массивы данных

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

Массив бывает одномерным ( тогда это строка данных), двумерным (тогда это плоская таблица данных), трехмерным (объемная таблица) и т.д.

Массив характеризуется своим именем (идентификатором), количеством измерений (индексов) и верхней границей каждого из индексов. Для описания размера и размерности массива используется оператор DIM.

Синтаксис:

Одномерный массив.

DIM имя_массива(N)

где N – максимальный индекс массива. Так определяется одномерный массив действительных чисел. Нумерация индексов начинается с нуля, так что количество чисел, хранящихся в массиве, будет N+1.

DIM имя_массива(N) As тип

Так определяется одномерный массив с N+1 элементом заданного типа. Можно задать тип переменной, пользуясь известными вам правилами умолчания.

DIM имя_массива(N TO M)

Так определяется одномерный массив, индекс которого может меняться в интервале от N до M (естественно, N<M).

DIM имя_массива(N, M)

Так определяется двумерный массив, первый индекс которого меняется от 0 до N, а второй – от 0 до M.

Примеры:

DIM A(3,4) ‘Двумерный массив чисел с плавающей точкой

DIM Х(20) ‘описывает одномерный массив, который может состоять из 21 вещественного числа/

DIM А$(13) ‘описывает одномерный массив из 14 строк символов/

Обращение к элементам массива осуществляется по индексам. Так вышеобъявленный массив Х имеет элементы, к которым можно обращаться Х(0), Х(1),…Х(20). Массив А имеет, в частности, элементы А(0,0), А(1,3) и т.д. В памяти можно размещать массив, начиная с нулевой ячейки, но можно и с 1-ой:

DIM B$(1 TO 10)

Впрочем, нулевым элементом можно просто не пользоваться.

Как представить в виде массива 5 значений температур: 18, 24, 20, 25, 19 градусов? Пусть имя массива будет Т. Размещаем массив, начиная с 1-ой ячейки.

Для наглядности представим это в виде таблицы.

Имя элемента массива

Т(1)

Т(2)

Т(3)

Т(4)

Т(5)

Индекс элемента массива

1

2

3

4

5

Значение элемента массива

18

24

20

25

19

Как представить в виде массива названия 4-х стран: Россия, Италия, Франция, Германия. Назовем массив LEND$ и разместим его начиная с нулевой ячейки

Имя элемента массива

LEND$(0)

LEND$(1)

LEND$(2)

LEND$(3)

Индекс элемента массива

0

1

2

3

Значение элемента массива

Россия

Италия

Франция

Германия

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

Для обращения в программе к элементу массива следует указать его имя и затем в круглых скобках без пробела его индекс. Если использовать данные приведенных выше примеров, то запись Т(4) даст значение 25, а запись LEND$(2) – значение Франция.

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

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

К основным алгоритмам обработки данных в одномерных массивах можно отнести следующие:

  1. Вычисление Σ-суммы и Π- произведения элементов массива.

  2. Вычисление Σ, Π и количества элементов массива, удовлетворяющих заданному условию.

  3. Формирование массива из элементов заданного массива по условию.

  4. Нахождение min и max элемента в массиве и их координат.

  5. Замена элемент в массиве на некоторое значение

  6. Поменять некоторые элементы массива местами

  7. Поиск заданного элемента в массиве.

  8. Объединение двух массивов равного размера в один с чередованием элементов исходных массивов.

  9. Инвертирование массива.

  10. Циклический сдвиг элементов массива на m позиций вправо

  11. Упорядочение (сортировка) массива

  12. Проверка массива на упорядоченность

  13. Поиск заданного элемента в упорядоченном по возрастанию массиве.

Алгоритм 1. Вычисление суммы элементов массива.

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

Задается начальное значение суммы Sравное 0, поскольку, как известно, от прибавления 0 значение суммы не меняется.

Открывается цикл для ввода элементов массива A.

В этом же цикле производится вычисление суммы S.

После завершения цикла выводится результат – сумма элементов массива S.

Если решать задачу в общем виде, т.е. для массива с любым количеством элементов, то в самом начале программы необходимо ввести значение количества элементов в массиве К. Блок-схема алгоритма 1 представлена на рис.10.

Рис.10.Блок-схема алгоритма решения задачи 2.

Программа.

INPUT «Введите номер последнего элемента», K

DIM А(K)

FOR i=0 TO К

INPUT “Введите элемент массива”,A(i)

S=S+А(i)

NEXT

PRINT “Сумма элементов массива А равна” S

END

Этот алгоритм можно с небольшими изменениями применить и для вычисления среднего значения.

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

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

  1. в нпачале значение суммы равно 0 – переменной S присваивается значение 0;

  2. вводится с подсказкой количество стран К;

  3. в цикле, который будет выполняться К раз

  • вводится значение значение температуры Т;

  • вычисляется сумма температур;

  • цикл повторяется;

  1. после завершения цикла вычисляется среднее значение температур;

  2. выводится результат.

Мы не будем приводить здесь блок-схему этого алгоритма, т.к. она будет отличаться от блок-схемы алгоритма рис.10. только блоком вычисления среднего значения SR, который последует за циклом.

Программа вычисления среднего значения.

S=0

Input “Сколько стран”, K

DIM T(K)

For i=1 To K

Input “Значение температуры”, T(i)

S=S+T(i)

Next

SR=S/K

Print “Среднеевропейская температура сентября =”; SR

End

Очевидно, для вас не составит труда разработать алгоритм вычисления произведения элементов массива.

Алгоритм 2. Вычисление суммы, количества и произведения элементов массива, удовлетворяющих заданному условию.

Алгоритм 3. Создание на основе существующего массива нового массива по заданному условию – создание массива положительных элементов.

DIM A(10): AN(10)

FOR I = 0 TO 10

INPUT A(I)

NEXT

K = 0

FOR I = 0 TO10

IF A(I) > 0 THEN K = K + 1: AN(K)= A(I)

NEXT

PRINT “старый массив”

FOR I = 0 TO 10

PRINT “новый массив”

FOR I = 0 TO K

PRINT AN(I);

NEXT

END