- •Основы информационной культуры
- •2. Техническая база информационной технологии
- •2.1 Представление информации в эвм
- •2.2 Системы счисления
- •2.3 Форматы чисел в эвм
- •2.4 Представление символьной информации
- •Программное обеспечение Вычислительной системы
- •Архивация данных
- •Концепция Visual Basic
- •Основное меню
- •Объекты управления
- •Форма (Form)
- •Командная кнопка (CommandButton)
- •Метка (Label)
- •Текстовое окно (TextBox)
- •Типы данных
- •Переменные и константы
- •Область видимости переменных и констант
- •Выражения
- •Стандартные функции
- •Программирование линейных вычислительных процессов
- •Программирование разветвляющихся вычислительных процессов
- •Программирование циклических вычислительных процессов
- •Итерационные циклы
- •Добавление изображений в форму
- •Массивы
- •Поиск в массиве элементов, удовлетворяющих заданным условиям
- •Группировка объектов
- •Создание меню
- •Ввод информации с использованием переключателей и флажков проверки
- •Процедуры и функции
- •Информационно вычислительные сети
- •Базовая модель взаимодействия открытых сетей
- •Топология ивс
- •Сетевое по. (спо)
- •Глобальная компьютерная сеть Internet. Основы функционирования Интернет.
- •Структура Интернет
- •Адресация в сетях.
- •Адресация в Интернет
- •Основные службы Интернет
- •Многоуровневое представление средств сетевого взаимодействия.
- •Коммуникационные службы
- •Прямое общение в Интернет
- •Отложенное общение в Интернет
- •Информационные службы.
- •Поиск информации в Интернет.
Поиск в массиве элементов, удовлетворяющих заданным условиям
Задача 1
Задан массив A из 10 элементов – целые числа в диапазоне от –20 до 20. Найти в массиве все отрицательные элементы и вывести их на экран.
В общем случае в массиве может не быть отрицательных элементов. Чтобы учесть и этот случай введем переменную р, которой присвоим значение 0 (или любое другое) до просмотра элементов и изменяем каким-либо образом ее значение каждый раз, когда найдем отрицательный элемент. После просмотра всех элементов проверяем значение переменной р: если оно не изменилось – отрицательных элементов нет. Сообщение «Отрицательных элементов нет» будем вsводить в окно сообщений MsgBox.
Блок-схема алгоритма:
Фрагмент программного кода:
. . .
р = 0
For i = 1 to 10
if a(i) < 0 then ‘если элемент массива
Picture2. Print a(i); Spc(2); ‘отрицательный – выводим в
‘графическое окно
р = р + 1 ‘и применяем величину р
end if
next i
if p = 0 then
Label1 Visible = true
Label1 Caption Msg “Отрицательных элементов нет”
end if
…
Задача 2
В массиве А, содержащим 12 целых чисел в диапазоне от –100 до 100, найти 1-й отрицательный элемент. Вывести на экран этот элемент и его индекс i.
Для вывода ai и i используем текстовые окна text1 и text2. Для вывода сообщения «Отрицательных элементов нет» - встроенное окно сообщений MsgBox.
Private Sub btnStart_Click( )
Dim a (1 to 12) as Integer
Dim i as Byte, yes as Boolean ‘Ввод исходного массива
‘Поиск отрицательного элемента
yes = true ‘если отрицательных элементов нет
for i = 1 to 12
if sgn (a(i)) = -1 then
yes = false ‘отрицательные элементы есть
text1.text = CStr (a(i)) ‘вывод ai < 0
text2.text = CStr (i) ‘и его индекса
exit for ‘досрочный выход из цикла
end if
next i
if yes then ‘yes = true? Есть отрицательные элементы?
‘нет отрицательных элементов
MsgBox «Отрицательных элементов нет», , “окно сообщений”
end if
end Sub
Блок-схема алгоритма
Функция Sgn (число) проверяет знак числа
Задача 3
Поиск максимального элемента.
В массиве а найти максимальный элемент. Пусть задан массив a = {3,5, 0, 10, -1, 2}, i = 1,…,6. Введем переменную imax – индекс текущего максимального элемента, после просмотра всех элементов массива в этой переменной будет содержаться индекс максимального элемента.
Тогда элемент с индексом imax, т.е. аimax – это значение максимального элемента на каждом шаге сравнения.
Возьмем начальное значение imax = 1, т.е. за максимальный элемент примем сначала 1-й элемент - аimax = а1, и с ним будем сравнивать следующие элементы, начиная со 2-го, пока не найдем элемент аi > аimax. Тогда будем считать этот элемент максимальным, т.е. аimax = а. Следующие элементы будем сравнивать уже с найденными элементом, новым аimax и т.д.
imax = 1, аimax = а1 = 3
1. а2 > аimax, да imax = 2, аimax = а2 = 5
2. а3 > аimax, нет
3. а4 > аimax, да imax = 4, аimax = а4 = 10
4. а5 > аimax, нет
5. а6 > аimax, нет
Результат: imax = 4, аimax = а4 = 10.
Блок-схема алгоритма:
Фрагмент программного кода:
…
imax = 1
for i = 2 to 6
if a(i) > a (imax) then imax = i
next i
txta.text = Cstr (a(imax)); txti.text = Cstr (imax)
Задача 4. Найти минимальный элемент в массиве. Алгоритм аналогичен поиску максимального элемента – самостоятельно.
Упорядочение элементов массива
Задача. Расположить элементы массива А в порядке убывания их значений.
Пусть дан массив а = {3, 2, -1, 10, 0, 5}, i = 1,…,6.
Должны
получить
Рассмотрим алгоритм на примере:
1). Ищем максимальный элемент в массиве и ставим его на 1-е место, поменяв местами 1-ый и максимальный:
3
2 –1 10 0 5
10 2 –1 3 0 5
2). Ищем максимальный элемент среди элементов со 2-го по 6-й и ставим его на 2-е место, поменяв местами со 2-м элементов:
1
0
2 –1 3 0 5
10 5 –1 3 0 2
3). Ищем максимальный элемент среди элементов с 3-го по 6-й и ставим его на 3-е место.
1
0
5 –1 3 0 2
10 5 3 –1 0 2
4). Далее – аналогично:
1
0
5 3-1 0 2
10 5 3 2 0 -1
5).
1
0
5 3 2 0 –1
10 5 3 2 0 –1
После этого 5-го шага на последнем месте оказывается минимальный элемент, получен упорядоченный массив.
Просматривать и искать максимальный элемент нужно (n-1) раз (у нас 5 раз при n = 6).
Рассмотрим алгоритм обмена местами двух элементов: пусть а1 и а4 нужно поменять местами. Введем новую переменную р для временного хранения а1 (можно а4).
a
1 a4 1)
p = a1
2) a1 = a4
p 3) a4 = p
В общем виде: an и am
a
n am 1)
p = an
2) an = am
p 3) am = p
Фрагмент программного кода:
For k = 1 to 5
imax = k ‘считаем k-ый элемент максимальным
for i = k to 6 ‘поиск максимального элемента
if a(i) > a (imax) then imax = i ‘среди элементов c
next i ‘k – ого по 6-й
p = a(k) ‘меняем местами
a(k) = a(imax) ‘k-ый элемент и
a(imax) = p ‘найденный максимальный
next k
for i = 1 to 6
Picture2.Print a(i); Spc(2);
Next i
Блок-схема алгоритма:
Изменение размера массива
Задача 1. Из массива А удалить 3-й элемент.
Пусть дан массив а = {3, 5, 6, 10, -1, 2}, i = 1,…,6.
Алгоритм: нужно сдвинуть все элементы, начиная с 4-го, на место предыдущего – влево (6-ой занулить)
3
5 6 10 –1 2
1 2 3 =0
удалить
Сдвиг (i+1)-го элемента влево:
ai = ai + 1
Получим:
Блок-схема алгоритма:
Ф
for i = 3 to 5
a(i) = a(i+1)
next i
a(6) = 0
…
Задача 2. В массив вставить 0 после 3-го элемента.
а
= {3, 5, 6, 10, -1, 2}, i
= 1,…,6
i
= 1,…,7.
Алгоритм: нужно «освободить» 4-е место для вставляемого числа, для этого элементы с последнего 6-го по 4-й нужно сдвинуть вправо на одно место. Начинать сдвиг с последнего элемента; при объявлении массива в программном коде его размер нужно задать на 1 больше заданного, т.е. 7, а вводить только 6 первых элементов, оставив последнее место «свободным»:
5
6 10 -1 2
= 0 3 2 1
4
Блок-схема алгоритма:
Фрагмент программного кода:
…
for i = 6 to 4 step -1
a(i+1) = a(i)
next i
a(4) = 0
…
