Смекни!
smekni.com

Создание программы циклической структуры. Работа с массивами (стр. 2 из 3)

Иногда необходимо выполнение одного цикла внутри другого. Такая конструкция называется вложенными циклами (см. рисунок 8).

Допускается вложение любых типов циклов друг в друга[2,c.10], а также можно вкладывать неограниченное количество циклов.

Рис. 8. Один цикл внутри другого

Мы рассмотрели блок-схемы и принципы циклических алгоритмов, теперь необходимо составить программы с их применением.

2. Решение циклических алгоритмов

Графическое отличие циклических алгоритмов мы рассмотрели, теперь попробуем создать алгоритм на примере цикла While-do.

Для организации ввода чисел необходима переменная. Объявим ее, добавив в окно программы [19]

var a:integer;

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

mult:integer;

В нашем случае для цикла while-do необходим счетчик. Объявим переменную count, для чего добавим в текст программы

count:integer;

Проинициализируем счетчик.[15] Для этого в программе появляется следующая строка

count:=1;

Результат занесенных с трок мы видим на рисунке 9.

Рис. 9. Введение счетчика в программу

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

mult:=1;

Переменная инициализируется единицей, а не нулем,[9,c.203] т.к. мы будем перемножать числа, а не складывать.

Организуем цикл while-do. Для этого создадим в программе строку

while count<11 do

Значение "11" в качестве граничного результата выбрано в связи с тем, что при невыполнении условия цикл больше не выполняется. Нам необходимо прекращение выполнения цикла после 10-й итерации.

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

begin

Введем окончание циклической составляющей

end;

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

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

write('Введите ',count,'-ое значение:');

Результат заданных строк мы видим на рисунке 10.

Рис. 10. Ввод данных с клавиатуры

Запросим переменную с клавиатуры. Для этого введем в строку ввода

readln(a);

Увеличим счетчик на 1[3,c.82]. Для этого введем с клавиатуры

count:=count+1;

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

mult:=mult*a;

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

writeln('Произведение чисел равно: ',mult);

Дошли до пункта проверки программы. Для запуска программы выберем пункт меню «Run» смотрите рисунок 11.

Рис. 11. Запуск программы

Запустим программу, введем произвольные числа в диапазоне от 1 до 5 и посмотрим результат на рисунке 12

Рис. 12. Результат программы

Аналогично изложенной программе, давайте создадим алгоритм со вложенным циклом используя цикл for-to.

Решим задачу: необходимо запросить с клавиатуры 10 чисел и найти их среднее арифметическое.

Для организации цикла for-to необходимо использование переменной-счетчика.[14,c.56] Объявим такую переменную. Для этого создадим строчку и добавим её в программу

var count:integer;

Начало написания программы смотрите на рисунке 13

Рис. 13. Введение счетчика в программу

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

a:integer;

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

sum:integer;

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

sum:=0;

Рис. 14. Ввод суммирующего элемента

Организуем цикл для ввода 10-ти значений от пользователя. Для этого вводим в программу строку

for count:=1 to 10 do

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

begin

...введите дополнительную строку, окончания данного задания

end;

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

readln(a);

В результате наш алгоритм выглядит следующим образом, рисунок 15. Продолжим запись программы.

Рис. 15. Ввод очередного значения

Однако пользователь должен понять, что за данные ему необходимо вводить.

Write (‘Введите ‘, count, ‘-тое значение:’);

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

sum:=sum+a;

В конце программы выведем результат на экран, следующей строкой

Writeln (‘Среднее арифметическое:’, sum/10);

Запустим программу, щелкнув пункт меню «Run», рисунок 16.

Рис. 16. Запуск программы

Необходимо пользователю ввести 10-ть значений (от 1 до 10). Результат работы программы видно на рисунке 17

Рис. 17. Результат работы программы

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

3. Работа с массивами

Массив — упорядоченный набор данных для хранения данных одного типа, идентифицируемых с помощью одного или нескольких индексов. В простейшем случае массив имеет постоянную длину и хранит единицы данных одного и того же типа.[1]

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

Начнем запись программы

Program TestProg;

Begin

End.

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

var a:array[1..10] of integer;

Обработка массивов очень часто производится при помощи цикла for. Для использование данного цикла необходимо определить переменную-счетчик.

i:integer;

Ввод данных с клавиатуры будет осуществляться в цикле for. Добавим в программу данный цикл. Для этого введем строку

for i:=1 to 10 do

Так как в теле цикла будет составной оператор, рисунок 18 то введем следующее:

Begin

End;

Рис. 18. Составной оператор цикла

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

Write (‘Введите’,i,’-ый элемент’);

Запросим i-ый элемент у пользователя. Для этого введите строку

readln(a[i]);

Для нахождения максимального значения нам понадобится еще одна переменная., она будет следующая

max:integer;

Инициализируем переменную числом 0. Для этого введите строку в программу

max:=0;

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

For i:=1 to 10

Begin

End;

Рис. 19. Цикл для поиска максимального значения

Проверим, больше ли очередной элемент массива, чем значение в max? Если больше, то запишем это значение в max. Для этой операции в алгоритм программы вводим следующую строку

if (a[i]>max) then max:=a[i];[16]

Выведем пользователю результат выполнения программы, рисунок 20.

Write (‘максимальное значение в массиве:’, max);

Рис. 20. Готовая программа по поиску максимального значения

Запустим программу, для чего щелкнем по меню Run для открытия меню.

Теперь, введя по запросу 10 чисел, в качестве результата получим наибольшее из этих значений, рисунок 21.

Рис. 21. Результат работы программы

На данный момент мы имеем программу, которая запрашивает у пользователя 10 чисел с клавиатуры и заполняет ими массив. Теперь необходимо организовать цикл обработки значений массива[10], начиная со 2-го

For i:=2 to 10

Begin

End.

Организуем проверку двух соседних значений массива. Для этого в алгоритм добавим условие с составным оператором (рис. 22).