Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Основы алгоритмизации и программирования. Часть 1. Учебное пособие
.pdf
.1
;22,
2
случаепротивномвх
хеслиx
y
x
у
-35
-34
-2,36
-1,36
.1
;10,
;0,0
2
2
случаяхдругихвх
xеслих
хесли
y
б
Рис. 1.9
а
Sub задание3()
'Объявление вещественных
'переменных x,y,z
Dim x As Single
Dim y As Single
Dim z As Single
'Ввод x и y
x = InputBox("Ввод х")
y = InputBox("Ввод y")
'Условный оператор с полным
'ветвлением
If x > y Then
z = x - y
Else
z = y - x + 1
End If
'Вывод результата z
MsgBox("Вывод z=" & z)
End Sub
Начало
Ввод x,y
z:=x-y
z:=y-x+1
Вывод z
Конец
Нет
Да
x>y
2. Самостоятельно составьте блок-схемы, наберите и исполните
программу для вычисления двух математических выражений с условиями,
приведенными ниже.
Дано действительное число х. Вычислить у:
1)
Ответ:
2)
21

Ответ:
х
у
-35
0
2,08
3,32
0,3
0,09
Dim x As Single
Dim y As Single
'Ввод x
x = InputBox("Ввод х")
'Условный оператор с полным
ветвлением
'и двумя условиями
If x <= 0 Then
y = 0
ElseIf (x > 0) And (x < 1) Then
y = x ^ 2
Else
y = x ^ 2 - 1
End If
'Вывод результата y
MsgBox("Вывод y=" & y)
Листинг программы для решения второй самостоятельной задачи
представлен на рис. 1.10.
Составьте процедуру на языке Basic с применением оператора Select
Case…End Select, которая по заданному числу от 1 до 3 выводит его название.
вводу процедуры на рис. 1.11, б, компиляции, отладке и выполнению
программы.
программу для двух приведенных ниже задач:
1. Перерисуйте в тетрадь блок-схему на рис. 1.11, а, затем приступите к
2. Самостоятельно составьте блок-схемы, наберите и исполните
1) по заданному номеру дня недели выведите его название;
2) по заданному номеру месяца выведите его название.
ТЕХНОЛОГИЯ РАБОТЫ
Рис. 1.10
ЗАДАНИЕ 4
22

.1
;0,
случаепротивномвхy
хеслиyx
z
.
54
1
;2,54
2
2
случаепротивномв
xx
хеслиxx
y
.2 если ,183
;2 если ,82
2
xx
xx
y
Sub задание4()
'Объявление целой переменной
'k и символьной Msg
Dim k As Integer
Dim Msg As String
'Ввод k
k=InputBox("Ввод k от 1 до 3")
'Обработка номера от 1 до 3
Select Case k
Case 1
Msg = "Один"
Case 2
Msg = "Два"
Case 3
Msg = "Три"
End Select
'Вывод текстовой перем. Msg
MsgBox(Msg)
End Sub
Msg:=«Один»
Начало
Ввод k
k=1
Msg:=«Два»
Msg:=«Три»
Вывод Msg
Конец
Да
Да
Да
Нет
Нет
Нет
k=2
k=3
а
б
Рис. 1.11
3. Создайте процедуры для решения второй группы самостоятельных
задач индивидуального варианта из табл. 1.8.
Задачи для самостоятельной работы № 2
Составить блок-схему и процедуры на Basic для определения значений
выражения, номер которого указывается преподавателем.
Даны действительные числа x и y. Вычислить значения функций.
1.
Указание: использовать пример 1.1, б.
2.
3.
23

4. Определить, имеются ли среди трех целых чисел a, b, c два положительных числа. Указание: должно выполняться условие (см. пример 1.2, г)
((a>0) И (b>0) И (c<0)) ИЛИ ((b>0) И (c>0) И (а<0)) ИЛИ ((a>0) И (c>0) И (b<0)).
Вывод словесный: “Имеются” или “Не имеются”.
5. Проверить, могут ли три положительных числа a, b, c быть длинами
сторон треугольника. Указание: сумма каждой пары чисел должна быть
больше третьего (см. пример 1.2, г), т.е. выполняется условие
((a+b)>c) И ((b+c)>а) И ((a+c)>b).
Вывод словесный: “Треугольник” или “Не треугольник”.
6. Определить, является ли треугольник со сторонами a, b, c
равнобедренным. Указание: два каких-либо числа должны быть одинаковыми
и их сумма больше третьего, т.е. выполняется условие (см. пример 1.2, г)
((a=b) И ((a+b)>c)) ИЛИ ((b=c) И ((b+c) >а)) ИЛИ ((a=c) И ((a+c)>b)).
Вывод словесный: “Треугольник равнобедренный” или “Треугольник
неравнобедренный”.
7. Подсчитать количество положительных чисел Np среди чисел a, b, c.
Указание: поскольку заранее неизвестны количество Np и/или значения
переменных a, b, c, то использовать пример 1.2, в.
8. Определить, делителем каких целых чисел a, b, c является число k.
Указание: использовать пример 1.2, д. Вывод словесный: “k делитель а” или
“k делитель b” и т.д.
9. Составить программу, позволяющую получить словесное описание
отметок (1 - плохо, 2 - неудовлетворительно, 4 - хорошо, 5 - отлично).
10. Подсчитать сумму положительных чисел Sp среди чисел a, b, c, d.
Указание: положительные числа заранее неизвестны, поэтому использовать
пример 1.2, в.
11. Подсчитать среднее арифметическое Sr положительных чисел среди
вещественных чисел a, b, c, d. Указание: положительные числа и их
количество Np заранее неизвестны, поэтому использовать пример 1.2, в.
12. Проверить принадлежность числа x интервалам [a, b] или [c, d].
24

Указание: число х принадлежит интервалу [a, b], если выполняется
условие (x≥a) И (x≤b). Вывод словесный: например, “х принадлежит [a, b] ”.
13. Определить, является ли треугольник со сторонами a, b, c
прямоугольным. Указание: для какой-либо пары чисел сумма их квадратов
равна квадрату третьего числа, т.е. выполняется условие (см. пример 1.2, г)
((a2 + b2) = c2) ИЛИ ((b2 + c2) = a2) ИЛИ ((a2 + c2) = b2).
Вывод словесный: “Треугольник прямоугольный” или “Треугольник
непрямоугольный”.
14. Написать программу, которая по заданным трем числам a, b, c
определяет, является ли сумма каких-либо двух из них положительной.
Указание: должно выполняться условие (см. пример 1.2, г)
((a+b)>0) ИЛИ ((b+c)>0) ИЛИ ((a+c)>0).
Вывод словесный: “Сумма положительная” или “Сумма отрицательная”.
15. Даны три действительных числа a, b, c. Возвести в квадрат те из них,
значения которых положительные (получить соответственно a2, b2 или c2), и
в четвертую степень числа-значения которых отрицательные (получить
соответственно a4, b4 или c4).
16. Даны действительные числа x и y, не равные друг другу. Меньшее из
этих двух чисел заменить половиной их суммы (получить S05), а большее - их
удвоенным произведением (получить P2).
17. Определить, сколько N целых чисел a, b, c, d делится на число k.
Указание: использовать пример 1.2, д.
18. Определить произведение P целых чисел a, b, c, d, которые делятся
на число k. Указание: использовать примеры 1.2, б и д.
19. Определить max(a, b) + min(c, d) при заданных a, b, c, d. Указание:
использовать пример 1.1, а.
20. Определить max(max(a, b), min(c, d)) при заданных a, b, c, d.
Указание: использовать пример 1.1, а.
25

1.5. Циклы и массивы
Для многократного выполнения группы операторов служат циклы,
причем в начале или конце цикла проверяется условие окончания цикла (табл.
1.7). В зависимости от этого существуют циклы с параметром,
предусловием и постусловием, их блок-схемы, описание на псевдокоде и
языке BASIC представлены в четырёх строках табл. 1.7.
Во второй строке табл. 1.7 приводятся описания двух вложенных циклов
с параметрами. Если величина шага h = 1, то в программе не указывается
Step 1. С помощью операторов цикла удобно обрабатывать элементы
массивов.
Массивы данных представляют собой последовательность однотипных
простых переменных. Каждая отдельно взятая переменная называется
элементом массива. Каждому элементу массива может быть присвоено одно
числовое или символьное значение, поэтому различаются массивы числовые и
символьные, одномерные и многомерные.
Одномерный массив можно представить как строку или столбец из m
переменных, а двумерный - как таблицу или матрицу, в которой переменные
расположены в m строках и n столбцах.
Определение массивов. Массивы в программе должны быть определены
в операторе Dim. Запишем выражения одномерного
Dim Имя_массива(m) As {Тип элементов массива}
и двумерного
Dim Имя_массива(m,n) As {Тип элементов массива}
массивов.
Так, в операторе Dim можно определить двумерный массив a(2,2),
содержащий целые числа
Dim a(2,2) As Integer,
состоящий из четырех элементов массива:
а(1,1) а(1,2)
а(2,1) а(2,2).
26

Пример 1.3. Рассмотрим примеры ввода одномерного и многомерного
Блок-схема
Псевдокод
Basic
нц для i = n до k шаг h
[ Тело цикла ]
кц i
For i = n To k Step h
[ Тело цикла ]
Next i
нц для i = n до k шаг h
нц для j = m до k шаг r
[ Тело цикла ]
кц j
кц i
For i = n To k Step
h
For j = m To l Step r
[ Тело цикла ]
Next j
Next i
нц пока Условие
[ Тело цикла ]
кц
While Условие
[ Тело цикла ]
Wend
нц
[ Тело цикла ]
кц до Условие
Do
[ Тело цикла ]
Loop Until Условие
1
2
3
4
i = n, k, h
Тело цикла
i = n, k, h
j = m, l, r
Тело цикла
Условие
Тело цикла
Да
Нет
Условие
Тело цикла
Да
Нет
массивов:
а) задать или ввести значения n элементов одномерного ai, i = 1, 2, …, n,
массива с помощью оператора ввода InputBox
Dim a(N) As Single
N = InputBox(“N=”)
ReDim a(N)
For i = 1 To N
a(i) = InputBox(“a=”)
Next i
Таблица 1.7
27

б) задать или ввести значения n элементов одномерного ai, i = 1, 2, …, n,
массива с помощью генератора случайных чисел
Dim a(N) As Single
N = InputBox(“N=”)
ReDim a(N)
For i = 1 To N
a(i) = 10*Rnd
Next i
в) задать или ввести значения элементов двумерного aij, i = 1, 2, …, n, j =
1, 2, …, m, массива с помощью оператора ввода InputBox
Dim a(N,M) As Single
N = InputBox(“N=”)
M = InputBox(“M=”)
ReDim a(N,M)
For i = 1 To N
For j = 1 To M
a(i,j) = InputBox(“a=”)
Next j
Next i
г) задать или ввести значения элементов двумерного aij, i = 1, 2, …, n, j =
1, 2, …, m, массива с помощью генератора случайных чисел
Dim a(N) As Single
N = InputBox(“N=”)
M = InputBox(“M=”)
ReDim a(N,M)
For i = 1 To N
For j = 1 To N
a(i, j) = Rnd() * 99 + 1
Next j
Next i
Пример 1.4. Вычислим сумму S и произведение P элементов
одномерного ai, i = 1, 2, …, n, и двумерного aij, i = 1, 2, …, n, j = 1, 2, …, m,
массивов.
а) сумма S и произведение P элементов одномерного массива ai, i =1, 2,
…, n.
28

S = 0 P = 1
kn 2
For i = 1 To n For i = 1 To n
S = S + a(i) P = P * a(i)
Next i Next i
б) сумма S и произведение P элементов двумерного массива
S = 0 P = 1
For i = 1 To n For i = 1 To n
For j = 1 To m For j = 1 To m
S = S + a(i,j) P = P * a(i,j)
Next j Next j
Next i Next i
Пример 1.5. В двумерном массиве a
i = 1, 2, …, n, j = 1, 2, …, m,
ij,
подсчитаем сумму элементов S1(i) в строке i=n и сумму элементов S2(j) в
столбце j=m.
а) сумма элементов б) сумма элементов
в каждой строке в каждом столбце
S1 = S2 = 0
For j = 1 To m For i = 1 To n
S1 = S1 + a(n,j) S2 = S2 + a(i,m)
Next j Next i
Пример 1.6. Рассмотрим на Basic программы для:
а) определения среднего Sr арифметического четных элементов a2, a4, a6,
…, a2k последовательности a1, a2, …, an, где
.
S = 0
k = 0
For i = 2 To n Step 2
S = S + a(i)
k = k + 1
Next i
Sr = S/k
б) определения суммы S элементов последовательности a1, a2, …, an,
которые делятся на заданное число k.
S = 0
29

в) определения минимального элемента min последовательности a1,
a2,…, an.
For i = 1 To n
If a(i) mod k = 0 Then
S = S + a(i)
End If
Next i
min = a(1)
For i = 2 To n
If min > a(i) Then min = a(i)
Next i
ЗАДАНИЕ 5
Дано целое число m > 0. Найдите наибольшее целое k, при котором 4k <
m. Составьте процедуры задание5а() и задание5б() с использованием
циклов с предусловием (рис. 1.12, а, б) и постусловием (рис. 1.13, а, б).
ТЕХНОЛОГИЯ РАБОТЫ
1. Перерисуйте в тетрадь блок-схему на рис. 1.12, а, а затем приступите
к набору процедуры на рис. 1.12, б.
Проверьте ее работу при m = 1024. (Ответ: k = 5.)
2. Аналогичные действия проделайте с блок-схемой на рис. 1.13, а, а
затем процедурой на рис. 1.13, б.
3. Самостоятельно составьте две блок-схемы и процедуры на языке Basic
для решения задачи с использованием циклов с предусловием и постусловием:
сколько чисел нужно взять в последовательности 1 + 2 + 3 + 4 + …, чтобы
получить число, большее, чем S = 252? (Ответ: При S = 252 нужно взять k =
23 числа.) Указание: в процедуре над циклом задайте значения переменных
k = 1 и S = 0
внутри цикла
k = k + 1
S = S + k.
30
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
