Лаб раб 6
.pdf
10
Описание структуры цикла ПОКА с постусловием на алгоритмическом (псевдоязыке) языке (знаковая модель) имеет вид:
нц
<тело цикла – операторы> пока <условие продолжения цикла> кц
Цикл ДО (с постусловием) (рис. 6)
начальные присваивания переменным
тело цикла
условие
окончания
цикла
Рисунок 6 – Условное изображение цикла ДО (образно-знаковая модель)
Структура работает так: повторять тело цикла ДО тех пор, пока условие не станет истинным, то есть пока ложно.
Описание цикла ДО с постусловием на алгоритмическом (псевдоязыке) языке (знаковая модель) имеет вид:
нц
<тело цикла – операторы> до <условие окончания цикла> кц
Условное изображение цикла ДО с предусловием приведено на рисунке 7.
11
Начальные присваивания переменным
условие
окончания
цикла
нет
тело цикла (изменение параметра цикла)
Рисунок 7 – Условное изображение цикла ДО с предусловием (образно-знаковая модель)
Описание структуры цикла ДО с предусловием на алгоритмическом (псевдоязыке) языке (знаковая модель) имеет вид:
нц до <условие окончания цикла>
<тело цикла – операторы> кц
Оба цикла ДО и ПОКА используются как с предусловием, так и с постусловием.
«Предусловие» означает, что тело цикла выполняется после проверки условия цикла и если оно ложно, цикл не выполнится ни разу. Условие интерпретируется как условие продолжения цикла в цикле ПОКА, а в цикле ДО условие окончания цикла.
«Постусловие» означает, что тело цикла выполняется прежде проверки условия цикла, то есть цикл выполнится хотя бы один раз. Условие интерпретируется как условие окончания цикла в цикле ДО или условие продолжения цикла в цикле ПОКА. Оба цикла взаимозаменяемы, условия цикла противоположны.
12
Во всех языках программирования присутствует структура цикл с параметром или цикл с определенным числом повторений (или со счётчиком). Для обозначения такого цикла используется геометрический символ модификация (рис. 8).
В циклах ДО и ПОКА число повторений неизвестно заранее и зависит от условия цикла, а в цикле с параметром число повторений задано изначально (цикл со счётчиком).
i=1, N, m
Тело цикла
Рисунок 8 – Условное изображение цикла с параметром (образно-знаковая модель)
Параметр – счетчик i изменяется от 1 до N с шагом m. При каждом вхождении в цикл параметр i увеличивается на m автоматически
– величину шага изменения параметра (i=i+m) и неявно проверяется условие: i не превысило N (i N). Если не превысило, тело цикла выполнять, в противном случае – цикл закончить.
Описание структуры на алгоритмическом (псевдоязыке) языке (знаковая модель) цикла с параметром имеет вид:
нц
для i от 1 до N шаг m
<тело цикла – операторы>
кц
Любой из рассмотренных типов цикла легко заменяется другим. Каждая структура имеет один вход и один выход. Их соединение в любом количестве и в любой последовательности дает все мно-
гообразие алгоритмов. Структура любого алгоритма имеет вид, представленный на рисунке 9.
13
начало
ввод исходных данных
обработка данных
вывод
результата
конец
алг
нач
цел [вещ …] <переменные> ввод <переменные>
<операторы – базовые структуры>
вывод <переменные>
кон
Рисунок 9 – Условное изображение алгоритма (образнознаковая модель) и соответствующее описание на алгоритмическом
(псевдоязыке) языке (знаковая модель)
3.Примеры решения задач
Пример 1. Постановка задачи. Найти минимальное и максимальное значения элементов одномерного массива a[i], составленного из целых положительных и отрицательных чисел; определить их разницу – значение переменной S. Известна знаковая модель задачи (рис. 8). Сформировать образно-знаковую модель в виде блок-схемы. Выполнить просчет алгоритма для заданных исходных данных: n=10; a[i]=35; -22; 5; 9; 28; 14; -2; -18; 33; 24.
Вычисление значения переменной S (просчет алгоритма)
Начало
1.Ввод: n=10, i=1
2.Цикл Пока
Шаг 1. i=1, i ≤ n → 1≤10→да, ввод a[1]=35: i=i+1=1+1=2 Шаг 2. i=2, i ≤ n → 2≤10 →да, ввод a[2]= -22: i=i+1=2+1=3 Шаг 3. i=3, i ≤ n → 3≤10 →да, ввод a[3]=5: i=i+1=3+1=4
14
Шаг 4. i=4, i ≤ n → 4≤10 →да, ввод a[4]=9: i=i+1=4+1=5 Шаг 5. i=5, i ≤ n → 5≤10 →да, ввод a[5]=28: i=i+1=5+1=6 Шаг 6. i=6, i ≤ n →6≤10 →да, ввод a[6]=14: i=i+1=6+1=7 Шаг 7. i=7, i ≤ n → 7≤10 →да, ввод a[7]= -2: i=i+1=7+1=8 Шаг 8. i=8, i ≤ n → 8≤10 →да, ввод a[8]= -18: i=i+1=8+1=9 Шаг 9. i=9, i ≤ n → 9≤10 →да, ввод a[9]=33: i=i+1=9+1=10
Шаг 10. i=10, i ≤ n → 10≤10→да, ввод a[10]=24: i=i+1=10+1=11
Шаг 11. i=11, i ≤ n → 11≤10 → нет → выход из цикла
3.m1=a[1] → m1=35 : m2=a[1] → m2=35
4.Цикл с параметром
Шаг1. i=2 : a[2]< m1→ -22<35→да, m1=a[2]: m1=-22, i=2 : a[2]> m2→ -22>35→ нет
Шаг 2. i=3 : a[3]< m1→ 5< -22 →нет, i=3: a[3]> m2→ 5>35→нет Шаг 3. i=4: a[4]<m1→9< -22 →нет, i=4: a[4]>m2→9>35 →нет Шаг 4. i=5: a[5]<m1→28< -22 →нет, i=5: a[5]>m2→28>35 →нет Шаг5. i=6: a[6]<m1→14< -22 →нет, i=6: a[6]>m2→14>35 →нет Шаг 6. i=7: a[7]<m1→ -2< -22 →нет, i=7: a[7]>m2→ -2>35 →нет Шаг 7. i=8: a[8]<m1→ -18< -22 →нет, i=8: a[8]>m2→ -18>35 →нет Шаг 8. i=9: a[9]<m1→ 33< -22 →нет, i=9: a[9] >m2→ 33>35 →нет
Шаг 9. i=10: a[10]<m1→24< -22 →нет, i =10: a[10] >m2→ 24> 35 →нет, i =11 → выход из цикла. 5. S = m2 - m1→ S=35+22=57.
6. Вывод S=57. Конец алгоритма.
Таким образом, для вычисления значений результативной переменной (просчет алгоритма) следует выполнить действия по шагам, подставляя текущие значения переменных в выражения на каждом шаге алгоритма.
Основные свойства алгоритмов:
а) определенность (однозначность действий); б) результативность (последовательность действий должна при-
водить к конечному результату); в) массовость (решение однотипных задач с различными исход-
ными данными); г) дискретность (пошаговое выполнение действий).
Знаковая и образно-знаковая модели задачи представлены на рисунке 10.
15
нач
цел а[10], n, i, s, m1, m2
ввод n i=1
нц
пока i<=n ввод а[i] i=i+1
кц
m1=a[1]
m2=a[1]
нц
для i от 2 до n
если а[i]<m1 то m1=a[i]
все
если а[i]>m2 то m2=a[i]
все
кц s=m2-m1
вывод s кон
Рисунок 10 – Знаковая и образно-знаковая модели задачи
|
Начало |
Ввод n |
i=1 |
Нет |
|
|
i <= n |
|
Да |
|
Ввод a[i] |
|
i = i + 1 |
|
m1 = a[1] |
m2 = a[1]
i = 2, n
нет
a[i]<m1
да
m1 = a[i]
нет
a[i]>m2
да
m2 = a[i]
S = m2-m1
Вывод S
Конец
16
Пример 2. Задана образно-знаковая модель задачи (рис. 11). Сформировать знаковую модель задачи. Определить значение переменной S – выполнить просчет алгоритма для заданных значений ис-
ходных данных: n=9, a=1, b=1.
Начало
Вввод n,a,b
X1=a
X2=b
S=X1+X2
i=1, n, 1
X3= X1+X2
S= S+X3
X1=X2
X2= X3
Вывод S
Конец
Рисунок 11 – Образно-знаковая модель задачи
17
Знаковая модель задачи
нач
цел x1, x2, x3, S, i, n ввод n, a, b
x1=a x2=b
S= x1+x2
нц
для i=1, n
x3=x1+x2 S=S+x3
x1=x2 x2=x3
кц вывод S кон
Вычисление значения переменной S (просчет алгоритма)
Начало
1.Ввод n=9, a=1, b=1.
2.x1= a=1
3.x2=b=1
4.S= x1+x2=1+1=2
5.Цикл с параметром
Шаг 1. i=1, x3=x1+x2=1+1=2, S=S+x3=2+2=4, x1=x2=1, x2=x3=2 Шаг 2. i=2, x3=x1+x2=1+2=3, S=S+x3=4+3=7, x1=x2=2, x2=x3=3 Шаг 3. i=3, x3=x1+x2=2+3=5, S=S+x3=7+5=12, x1=x2=3, x2=x3=5 Шаг 4. i=4, x3=x1+x2=3+5=8, S=S+x3=12+8=20, x1=x2=5, x2=x3=8
Шаг 5. i=5, x3=x1+x2=5+8=13, S=S+x3=20+13=33, x1=x2=8, x2=x3=13 Шаг 6. i=6, x3=x1+x2=8+13=21, S=S+x3=33+21=54, x1=x2=13, x2=x3 = 21
Шаг 7. i=7, x3=x1+x2=13+21=34, S=S+x3=54+34=88, x1=x2=21, x2=x3 =34
Шаг 8. i=8, x3=x1+x2=21+34=55, S=S+x3=88+55=143, x1=x2=34, x2=x3=55
Шаг 9. i=9, x3=x1+x2=34+55=89, S=S+x3=143+89=232, x1=x2=55, x2=x3=89
6. Вывод S=232. Конец алгоритма.
18
4. Задание для выполнения лабораторной (практической) работы
Задание 1 (на оценку «удовлетворительно»). Скорректировать знаковую (Пример 1) или образно-знаковую (Пример 2) модели согласно варианту. Номер варианта – номер логина.
Выполнить просчет алгоритма для новых исходных данных. Варианты Задания 1 приведены в таблице 2. Составить отчет в рабочей тетради в соответствии с требованиями (см. р. 5).
Таблица 2 – Варианты Задания 1
Номер ва- |
Исходные данные |
Задание |
рианта |
|
|
1. |
n=7; a[i]= 5; -12; 15; 19; |
Для ввода элементов массива |
Пример 1. |
–8; 14; -2 |
использовать цикл с парамет- |
|
|
ром |
2. |
n=10, a=2, b=3 |
Заменить цикл с параметром |
Пример 2. |
|
на цикл ДО с постусловием |
3. |
n=8; a[i]= 5; -12; 15; 19; |
Для ввода элементов массива |
Пример 1. |
–8; 14; -2; 10 |
использовать цикл ДО с по- |
|
|
стусловием |
4. |
n=6, a=2, b=5 |
Заменить цикл с параметром |
Пример 2. |
|
на цикл ПОКА с предусловием |
5. |
n=5; a[i]= 19; –8; 14; -2; |
Для ввода элементов массива |
Пример 1. |
10 |
использовать цикл ПОКА с по- |
|
|
стусловием |
6. |
n=8, a=1, b=5 |
Заменить цикл с параметром |
Пример 2. |
|
на цикл ДО с предусловием |
7. |
n=9; a[i]= 5; -12; 15; 19; |
Для ввода элементов массива |
Пример 1. |
–8; 14; -2; 10; -3 |
использовать цикл ПОКА с по- |
|
|
стусловием |
8. |
n=10, a=1, b=2 |
Заменить цикл с параметром |
Пример 2. |
|
на цикл ДО с постусловием |
9. |
n=4; a[i]= 5; -12; 15; 19; |
Для ввода элементов массива |
Пример 1. |
|
использовать цикл с парамет- |
|
|
ром |
10. |
n=6, a=2, b=4 |
Заменить цикл с параметром |
19
Пример 2. |
|
на цикл ДО с предусловием |
11. |
n=10; a[i]= 5; -12; 15; |
Для ввода элементов массива |
Пример 1. |
19; –8; 14; -2; 10; -3; 6 |
использовать цикл ДО с по- |
|
|
стусловием |
12. |
n=8, a=6, b=7 |
Заменить цикл с параметром |
Пример 2. |
|
на цикл ДО с предусловием |
13. |
n=5; a[i]=–8; 14; -2; 10; |
Для ввода элементов массива |
Пример 1. |
-3 |
использовать цикл ПОКА с по- |
|
|
стусловием |
14. |
n=11, a=6, b=2 |
Заменить цикл с параметром |
Пример 2. |
|
на цикл ПОКА с постусловием |
15. |
n=9; a[i]= 1; -10; 13; 17; |
Для ввода элементов массива |
Пример 1. |
–8; 14; -2; 10; -5 |
использовать цикл с парамет- |
|
|
ром |
16. |
n=9, a=4, b=1 |
Заменить цикл с параметром |
Пример 2. |
|
на цикл ПОКА с предусловием |
Задание 2 (на оценку «хорошо» и «отлично»).
Пусть дан одномерный числовой массив, составленный из целых чисел. Количество элементов заранее неизвестно. Решить одну задачу (оценка «хорошо») или две задачи (оценка «отлично»). Составить образно-знаковую (одна задача) и знаковую (другая задача) модели в соответствии с вариантом. Номер варианта – номер логина.
Варианты Задания 2 приведены в таблице 3. Составить отчет в рабочей тетради в соответствии с требованиями (см. р. 5).
Таблица 3 – Варианты Задания 2
Номер |
Постановка задачи |
варианта |
|
1 Найти сумму элементов, имеющих нечетные индексы. Заменить максимальный элемент на противоположный по знаку
2 Удалить из массива все элементы, в которых есть цифра
5.
Подсчитать количество элементов, больших заданного числа D
