Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






  • Сервис онлайн-записи на собственном Telegram-боте
    Тот, кто работает в сфере услуг, знает — без ведения записи клиентов никуда. Мало того, что нужно видеть свое расписание, но и напоминать клиентам о визитах тоже. Нашли самый бюджетный и оптимальный вариант: сервис VisitTime.
    Для новых пользователей первый месяц бесплатно.
    Чат-бот для мастеров и специалистов, который упрощает ведение записей:
    Сам записывает клиентов и напоминает им о визите;
    Персонализирует скидки, чаевые, кэшбэк и предоплаты;
    Увеличивает доходимость и помогает больше зарабатывать;
    Начать пользоваться сервисом
  • Одномерные массивы переменных величин






    Одна из типичных задач программирования формулируется примерно так. Имеется большое количество данных, например, тех же температур или высот. С этими данными компьютер должен что-нибудь сделать, например, вычислить среднегодовую температуру, количество морозных дней, максимальную взятую высоту и т.п. Раньше мы уже вычисляли подобные вещи, и при этом данные вводили в компьютер с клавиатуры одно за другим в одну и ту же ячейку памяти (см. Глава 8). Однако, программистская практика показывает, что удобно, а часто и необходимо иметь данные в оперативной памяти сразу все, а не по очереди. Тогда для задачи про температуру нам понадобится 365 ячеек. Эти 365 ячеек мы и назовем массивом. Итак, массивом можно назвать ряд ячеек памяти, отведенных для хранения значений индексированной переменной. Вопрос о том, как большое количество значений оказывается в памяти, отложим на будущее (16.2).

    Знаете, что напоминает одномерный массив? Список ListBox, который мы проходили в 15.5. Такой же аккуратный ряд пронумерованных элементов.

     

    Рассмотрим на простом примере, как Visual Basic управляется с массивами. Предположим, в зоопарке живут три удава. Известна длина каждого удава в сантиметрах (500, 400 и 600). Какая длина получится у трех удавов, вытянутых в линию?

    Обозначим длину первого удава - dlina(1), второго - dlina(2), третьего - dlina(3). Прикажем Visual Basic отвести под эту индексированную переменную массив ячеек в памяти:

    Dim dlina (1 To 3) As Integer

    Здесь 1 - нижняя граница индекса, 3 - верхняя граница индекса. Слово To обозначает до. В целом эту строку можно перевести так: Отвести в памяти под переменную dlina ряд ячеек типа Integer, пронумерованных от 1 до 3.

    Вот программа полностью:

    Dim dlina(1 To 3) As Integer

    Dim summa As Integer

    Private Sub Command1_Click()

    dlina(1) = 500

    dlina(2) = 400

    dlina(3) = 600

    'В этот момент в трех ячейках памяти уже находятся числа

    'и с ними можно выполнять арифметические действия

    summa = dlina(1) + dlina(2) + dlina(3)

    Debug.Print summa

    End Sub

    Если смысл написанного выше вам неясен, запустите отладочный пошаговый режим выполнения программы и загляните в текущие значения dlina(1), dlina(2), dlina(3), summa.

    Теперь запишем ту же программу в предположении, что длины удавов заранее неизвестны и мы их вводим при помощи InputBox:

    Dim dlina(1 To 3) As Integer

    Private Sub Command1_Click()

    dlina(1) = InputBox(" Введите длину 1-го удава")

    dlina(2) = InputBox(" Введите длину 2-го удава")

    dlina(3) = InputBox(" Введите длину 3-го удава")

    Debug.Print dlina(1) + dlina(2) + dlina(3)

    End Sub

     

    Вопрос: Что напечатает следующий фрагмент:

    i = 2: a(3) = 10: a(i) = 100: a(i + 6) = a(i) + a(5 - i): i = 0: Debug.Print a(i + 3) + a(2) + a(i + 8)

    Ответ: 220

    Пояснение: i = 2; a(3) = 10; a(2) = 100; a(2 + 6) = a(2) + a(5 - 2); i = 0; Debug.Print a(0 + 3) + a(2) + a(0 + 8)

     

     

    Теперь решим ту же задачу про удавов в предположении, что удавов не три, а тысяча:

    Dim dlina(1 To 1000) As Integer

    Dim summa As Integer

    Private Sub Command1_Click()

    'Вводим длины тысячи удавов, хоть это и утомительно и никто так не делает:

    For i = 1 To 1000

    dlina(i) = InputBox(" Введите длину " & i & " -го удава")

    Next

    'Здесь на первом выполнении цикла i=1 и поэтому компьютер вводит число в ячейку dlina(1),

    'на втором - i=2 и поэтому компьютер вводит число в ячейку dlina(2) и т.д.

    'Определяем суммарную длину тысячи удавов:

    summa = 0

    For i = 1 To 1000

    summa = summa + dlina(i)

    Next

    Debug.Print summa

    End Sub

    Отлаживая эту программу, возьмите, конечно, вместо числа 1000 число 3.

     

     

    Решим еще одну задачу. Дан ряд из 10 произвольных чисел: a(1), a(2),..., a(10). Подсчитать и напечатать суммы восьми троек стоящих рядом чисел: a(1)+a(2)+a(3), a(2)+a(3)+a(4), a(3)+a(4)+a(5),......, a(8)+a(9)+a(10).

    Dim a(1 To 10) As Integer

    Private Sub Command1_Click()

    a(1) = 23: a(2) = 28: a(3) = 4: a(4) = 0: a(5) = 12

    a(6) = 10: a(7) = 23: a(8) = 2: a(9) = 9: a(10) = 1

    For i = 1 To 8

    Debug.Print a(i) + a(i + 1) + a(i + 2)

    Next

    End Sub

     

    Задание 116:. Напишите с использованием массива программу вычисления среднегодовой температуры (Для отладки в компьютере годом можно считать неделю).

    Задание 117:. Подсчитайте количество теплых дней в году (когда температура выше 20 град.).

    Задание 118:. Каким по порядку идет самый жаркий день?

    Задание 119:. Вычислить и распечатать первые 70 чисел Фибоначчи.






    © 2023 :: MyLektsii.ru :: Мои Лекции
    Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
    Копирование текстов разрешено только с указанием индексируемой ссылки на источник.