- •Алгоритмизация и основы программирования
- •Задания на разработку линейных алгоритмов и программ.
- •If условие then оператор
- •If условие goto nc
- •If условие then
- •Задания на разработку разветвляющихся алгоритмов и программ.
- •2) Цикл с постусловием цикл «повторять… до»
- •Алгоритм 4. Нахождение минимального (максимального) элемента в массиве и его индекса.
- •Задания на разработку циклических алгоритмов и программ.
- •Обработка текстовых данных.
- •Среды программирования.
- •Краткое описание системы quick basic
- •Работа с файлами
- •Окно Open Program
- •Окно Save As
- •Редактирование файла
- •Запуск и компиляция программы
- •Установка некоторых режимов работы Quick Basic
- •Некоторые сообщения об ошибках
- •Отладка и выполнение программы на компьютере.
2) Цикл с постусловием цикл «повторять… до»
да
нет
условие
3)
счетный
цикл FOR
x=xo TO xk [STEP h]
Тело цикла
NEXT
[x]
Рис. 6. Виды циклических алгоритмов.
Задача 1.
Изменить программу проверки правильности ввода пароля, предоставив три попытки ввода пароля. Если пароль вводится трижды неправильно, то выполнение программы прекращается.
Рассмотрим решение задачи 1 тремя способами.
1-ый способ – организация цикла с помощью операторов If… и Goto. Алгоритм решения см. рис 7.
Описание алгоритма:
переменной P$ присваивается значение пароля, например, #$W56;
значение счетчика (переменная К) обнуляется;
вводится с подсказкой “Пароль” значение переменной X$;
счетчику присваивается значение K=K+1 (в первом цикле - 1);
проверяется значение счетчика: если оно больше 3, то выводится сообщение “Нет доступа!” и программа останавливается, так будет после третьей неправильной попытки ввода пароля;
в противном случае сравнивается значение введенного пароля с заданным.
если они неравны, то значение логического выражения P$<>X$ будет Истина и будет выводится сообщение “Пароль неверен. Попытка ” К и осуществляется переход к оператору ввода по метке 55, то есть будет очередная попытка ввода пароля.
если же пароль введен верно, то значение логического выражения 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
Описание алгоритма:
переменной P$ присваивается значение пароля, например, #$W56;
значение счетчика (переменная К) обнуляется;
открывается цикл, в котором все операторы будут выполняться пока значение счетчика К не станет больше 3:
вводится с подсказкой “Пароль” значение переменной X$;
сравнивается значение введенного пароля с заданным P$=X$;
если значение логического выражения P$=X$ Истина, то есть пароль введен верно, произойдет выход из цикла по оператору Goto 44, будет выводится сообщение “Программа выполняется!” и последует выполнение любой программы записанной ниже;
если же пароль введен неверно, то значение логического выражения P$=X$ будет Ложь, выполнится переход на следующую строку программы, то есть счетчику присвоится значение по формуле K=K+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) – значение Франция.
Основные алгоритмы обработки одномерных массивов.
Знание основных алгоритмов обработки одномерных массивов позволяет решать задачи любой степени сложности, где данные представлены в виде массивов.
К основным алгоритмам обработки данных в одномерных массивах можно отнести следующие:
Вычисление Σ-суммы и Π- произведения элементов массива.
Вычисление Σ, Π и количества элементов массива, удовлетворяющих заданному условию.
Формирование массива из элементов заданного массива по условию.
Нахождение min и max элемента в массиве и их координат.
Замена элемент в массиве на некоторое значение
Поменять некоторые элементы массива местами
Поиск заданного элемента в массиве.
Объединение двух массивов равного размера в один с чередованием элементов исходных массивов.
Инвертирование массива.
Циклический сдвиг элементов массива на m позиций вправо
Упорядочение (сортировка) массива
Проверка массива на упорядоченность
Поиск заданного элемента в упорядоченном по возрастанию массиве.
Алгоритм 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
Этот алгоритм можно с небольшими изменениями применить и для вычисления среднего значения.
Задача. Вводится информация о средних сентябрьских температурах в европейских странах. Вычислить среднеевропейскую температуру сентября и вывести результат
Описание алгоритма:
в нпачале значение суммы равно 0 – переменной S присваивается значение 0;
вводится с подсказкой количество стран К;
в цикле, который будет выполняться К раз
вводится значение значение температуры Т;
вычисляется сумма температур;
цикл повторяется;
после завершения цикла вычисляется среднее значение температур;
выводится результат.
Мы не будем приводить здесь блок-схему этого алгоритма, т.к. она будет отличаться от блок-схемы алгоритма рис.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