1. Какая величина называется табличной?
2. Что такое элемент табличной величины? Из чего состоит его имя?
3. Как описывается табличная величина в строке var?
ВЫЧИСЛЕНИЕ СУММЫ ЗНАЧЕНИЙ И КОЛИЧЕСТВА ЭЛЕМЕНТОВ ТАБЛИЧНОЙ ВЕЛИЧИНЫ
Рассмотрим несколько типовых задач обработки табличных величин: вычисление суммы значений всех ее элементов, суммы и количества значений элементов, которые соответствуют определенным условиям, нахождение наиболь0его и наимень0его элементов, поиск заданного элемента.
Такие задачи достаточно часто встречаются на практике. Приведем ли0ь несколько примеров. Так, синоптик определяет наиболь0ую, наи-мень0ую и среднюю температуры за сутки, среднее количество осадков в течение месяца и т.п. В процессе определения победителей в некоторых соревнованиях отбрасывают наиболь0ую и наимень0ую оценки судей и вычисляют среднее арифметическое остав0ихся оценок. Администрацию ва0его учебного заведения может интересовать, сколько учеников 9-х классов имеют семестровые оценки 10, 11 или 12 по информатике, есть ли в ва0ем классе ученики, которые получили оценку 8 за последнюю практическую работу, и т.п.
Во всех задачах, которые рассмотрим в этом пункте, будем вводить значения элементов табличной величины из многострочного текстового поля, значения других переменных — из текстовых полей. Если результатом являются значения элементов табличной величины, то будем выводить их в многострочное текстовое поле, а значения других переменных — в метке.
Будем рассматривать табличные величины из 10 элементов. Если количество элементов табличной величины иное, то необходимо внести в приведенные тексты процедур соответствующие изменения.
Задача 1. Определить сумму значений всех элементов табличной величины.
Обработка элементов табличной величины будет осуществляться с использованием цикла. Используем переменную s для накапливания суммы значений элементов табличной величины. Перед циклом присвоим ей значение 0. В цикле последовательно будем просматривать элементы табличной величины и добавлять их значения к переменной s.
Обращаем ваше внимание: если в цикле используется команда изменения значения определенной величины (в данной задаче s := s + a[i]), то перед циклом этой переменной обязательно нужно присвоить начальное значение (в данной задаче s := 0).
Задача 2. Определить, сколько раз заданное действительное число встречается среди значений элементов табличной величины.
Очевидно, что для решения этой задачи необходимо просмотреть последовательно значения всех элементов табличной величины, сравнить каждое с заданным числом и, если некоторое из них равно этому числу, увеличить счетчик таких элементов на 1.
Задача 3. Определить, есть ли заданное действительное число среди значений элементов данной табличной величины.
Эту задачу можно было бы решить аналогично предыдущей: определить, сколько элементов табличной величины равны заданному числу, и если это количество равно 0, то заданного числа среди значений элементов табличной величины нет, а если больше 0, то есть.
Но такой метод решения этой задачи является нерациональным. Представьте себе, что заданное число является значением уже первого элемента табличной величины. Тогда все другие ее элементы просматривать уже не нужно, и это значительно экономит время решения этой задачи, особенно если количество элементов табличной величины большое.
Для реализации рационального метода решения этой задачи используем переменную логического типа f и пусть ее значение false будет означать, что заданного числа среди значений элементов табличной величины нет, а значение true — что есть. Перед началом просмотра значений элементов табличной величины присвоим переменной f значение false, ведь заданное число в табличной величине пока что не встречалось. Будем сравнивать в цикле последовательно значения элементов табличной величины с заданным числом, и если одно из них равно заданному числу, то изменим значение переменной f на true и прервем выполнение цикла командой break (англ. break — прерывать). Вывод результатов реализуем в зависимости от значения переменной f.
НАИБОЛЬШИЙ И НАИМЕНЬШИЙ ЭЛЕМЕНТЫ ТАБЛИЧНОЙ ВЕЛИЧИНЫ
Задача 4. Определить наибольшее значение элементов табличной величины.
Сначала будем считать, что значение первого элемента табличной величины является наибольшим. После этого последовательно будем просматривать значения всех других элементов табличной величины, и если встретим значение, которое больше, чем наибольшее в этот момент, то будем считать теперь это значение наибольшим.
Задача 5. Дана табличная величина, значения всех элементов которой разные. Определить наибольшее и наименьшее значения среди элементов этой табличной величины и поменять их местами.
Поскольку необходимо поменять местами наибольшее и наименьшее значения среди значений элементов табличной величины, то следует определить не только сами эти значения, а еще и номер элемента, значение которого наибольшее, и номер элемента, значение которого наименьшее. Определим все это, просматривая значения элементов табличной величины только один раз.
Сначала будем считать, что значение первого элемента и наибольшее, и наименьшее, а номер наибольшего и наименьшего элементов — 1. После этого последовательно будем просматривать все другие элементы массива. Если значение очередного элемента табличной величины больше, чем наибольшее в этот момент, то заменяем наибольшее значение среди уже просмотренных и номер наибольшего элемента. Если нет, то может это значение меньше, чем то, которое пока что считаем наименьшим. И если это так, то заменяем наименьшее значение среди уже просмотренных и номер наименьшего элемента.
Внимание! При работе с компьютером соблюдайте правила безопасности и санитарно-гигиенические нормы.
Задача 6. Многострочное текстовое поле содержит действительные числа. Известно, что их количество не превышает 20. Ввести эти числа как значения элементов табличной величины. Определить сумму значений и количество ее элементов, которые имеют положительные значения. Определить среднее арифметическое значений этих элементов. Вывести значения этих элементов в другое многострочное текстовое поле.
1. Откройте окно среды Lazarus.
2. Разместите на форме:
• два многострочных текстовых поля высотой 400 пикселей;
• две надписи: над первым многострочным текстовым полем с текстом Элементы и над вторым — с текстом Положительные элементы;
• три текстовых поля;
• три надписи по одному слева от каждого текстового поля с текстами соответственно Сумма, Количество, Среднее арифметическое;
• кнопку с текстом Положительные элементы.
Примерный вид формы с компонентами на ней приведен на рисунке 6.4.
3. Сохраните проект в папке с именем Упражнение 6.2, созданной в вашей папке.
4. Создайте обработчик события Click для кнопки для вычисления суммы положительных значений элементов табличной величины.
Поскольку по условию задачи количество элементов табличной величины неизвестно, и знаем только, что оно не превышает 20, то в строке var опишем табличную величину максимально возможного количества элементов (20) с номерами от 0 до 19. Это даст возможность во время выполнения проекта вводить в первое многострочное текстовое поле произвольное количество чисел, которое не превышает 20.
Для определения реального количества элементов для каждого такого ввода воспользуемся свойством Memol.Lines.Count.
5. Введите следующий текст процедуры:
6. Сохраните обновленную версию проекта.
7. Запустите проект на выполнение.
8. Введите в первое многострочное текстовое поле числа: 3,4; -7; 0; -13; 8,75; 23; 15. Выберите кнопку Положительные элементы. Проанализируйте полученный результат.
9. Удалите числа из первого многострочного текстового поля и введите другие: -16; 98,43; 45; 0; 45; -1; 29; -2,67; 55. Выберите кнопку Положительные элементы. Проанализируйте полученный результат.
10. Закройте окно выполнения проекта.
11. Добавьте к тексту процедуры следующий фрагмент:
а также переменную k к списку переменных типа integer в строке var.
12. Сохраните обновленную версию проекта.
13. Введите свой набор чисел в первое многострочное текстовое поле. Выберите кнопку Положительные элементы. Проанализируйте полученные результаты.
14. Закройте окно выполнения проекта.
15. Добавьте к тексту процедуры следующий фрагмент:
а также переменную sa к списку переменных типа real в строке var.
16. Сохраните обновленную версию проекта.
17. Введите свой набор чисел в первое многострочное текстовое поле. Выберите кнопку Положительные элементы. Проанализируйте полученные результаты. Обратите особое внимание на числа, которые будут выведены во второе многострочное текстовое поле.
18. Закройте окно выполнения проекта.
19. Закройте окно среды Lazarus.
Фрагмент процедуры для вычисления суммы значений всех элементов табличной величины:
Фрагмент процедуры для нахождения количества значений элементов табличной величины, которые равны заданному числу:
Фрагмент процедуры для определения, встречается ли заданное число среди значений элементов табличной величины:
Фрагмент процедуры для определения наибольшего значения среди элементов табличной величины:
Фрагмент процедуры для определения наибольшего и наименьшего элементов в табличной величине, значения всех элементов которой разные, их номеров и перестановки этих значений местами:
Дайте ответы на вопросы
1*. Для решения каких задач обработки табличной величины можно использовать приведенные фрагменты?
2*. С какой целью в приведенном фрагменте использована переменная f?
Какого типа эта переменная? Можно ли было с этой же целью использовать переменную другого типа? Ответ объясните.
3*. Как необходимо изменить приведенный фрагмент, чтобы в нем определялось наименьшее значение элементов табличной величины?
4*. Если в табличной величине несколько элементов имеют наибольшее значение среди значений всех элементов этой табличной величины, то какой из них определяет данный фрагмент max := a[1];
Изменится ли что-то, если в ветвлении заменить знак > на знак >=?
5*. Для решения какой задачи обработки элементов табличной величины можно использовать приведенные фрагменты? Сравните их эффективность.
6*. Для чего используют свойство Memol.Lines.Count многострочного текстового поля?
7*. Для решения какой задачи обработки элементов табличной величины можно использовать следующий фрагмент?
В каких случаях при выполнении проекта с этим фрагментом может возникнуть ошибка?
Выполните задания
1*. Создайте проект, в котором вводятся значения элементов табличной величины из 7 целых чисел в многострочном текстовом поле, вычисляется сумма отрицательных из них и результат выводится в метку. Сохраните проект в папке с именем Задание 6.2.1, созданной в вашей папке.
2*. Создайте проект, в котором вводятся значения элементов табличной величины из 8 действительных чисел в многострочном текстовом поле, определяется количество тех, которые больше 5, и результат
выводится в метку. Сохраните проект в папке с именем Задание 6.2.2, созданной в вашей папке.
3*. Создайте проект, в котором вводятся значения элементов табличной величины из 9 целых чисел в многострочном текстовом поле, определяется, встречаются ли среди значений элементов числа, которые меньше 3, и результат выводится в метку. Сохраните проект в папке с именем Задание 6.2.3, созданной в вашей папке.
4*. Выпускник 11-го класса может получить Грамоту за особые успехи в обучении по определенному предмету, если его годовая оценка по этому предмету — 12. Годовые оценки учащихся класса по информатике введены в многострочное текстовое поле. Создайте проект для определения количества Грамот, которые могут получить ученики этого класса. Сохраните проект в папке с именем Задание 6.2.4, созданной в вашей папке.
5*. Создайте проект, в котором вводятся значения элементов табличной величины из разных действительных чисел в многострочном текстовом поле, количество которых не превышает 50, определяется наименьший и он переставляется местами с первым элементом. Полученная табличная величина выводится в многострочное текстовое поле. Сохраните проект в папке с именем Задание 6.2.5, созданной в вашей папке.
6*. Создайте проект, в котором вводятся значения элементов табличной величины из 10 действительных чисел в многострочном текстовом поле, определяется наибольшее среди значений ее элементов и сколько в этой табличной величине встречается элементов с таким же значением. Полученный результат выводится в метку. Сохраните проект в папке с именем Задание 6.2.6, созданной в вашей папке.
7*. Создайте проект, в котором вводятся значения элементов табличной величины с 15 разных действительных чисел в многострочном текстовом поле, определяется наименьшее среди значений ее элементов и переставляется местами со значением элемента, расположенного посредине. Значения новой табличной величины выводятся в другое многострочное текстовое поле. Сохраните проект в папке с именем Задание 6.2.7, созданной в вашей папке.
ПРАКТИЧЕСКАЯ РАБОТА № 6
«Нахождение суммы и количества значений элементов табличных величин по заданным условиям»
Внимание! При работе с компьютером соблюдайте правила безопасности и санитарно-гигиенические нормы.
1. Откройте среду визуального проектирования.
2. Создайте проект для решения задачи: В многострочном текстовом поле содержатся значения средней температуры воздуха каждого дня недели. Определите среднюю температуру воздуха за всю неделю. Выясните, сколько раз в неделю средняя дневная температура была выше 0.
В проекте:
а) Разместите на форме необходимые элементы управления: многострочное текстовое поле, метки, кнопки.
б) Составьте обработчик события Click для первой кнопки, выполнение которого приведет к выводу в метку средней температуры воздуха за неделю.
в) Составьте обработчик события Click для второй кнопки, выполнение которого приведет к определению, сколько раз в неделю средняя дневная температура воздуха была выше 0, и вывода результата в метку.
г) Выполните проект и убедитесь, что результаты его работы правильны.
3. Сохраните проект в папке с именем Практическая 6, созданной в вашей папке.
ПРАКТИЧЕСКАЯ РАБОТА № 7 «Поиск значений в табличной величине»
Внимание! При работе с компьютером соблюдайте правила безопасности и санитарно-гигиенические нормы.
1. Откройте среду визуального проектирования.
2. Создайте проект для решения задачи: В многострочном текстовом поле содержится время, которое показал каждый участник соревнований вашего учебного заведения по бегу на дистанцию 100 м. Определите наибольшее и наименьшее время. Определите, сколько спортсменов показали наибольшее время. Обновлен ли на этих соревнованиях рекорд вашего учебного заведения?
3. Сохраните проект в папке с именем Практическая 7, созданной в вашей папке.
Это материал учебника Информатика 9 класс Ривкинд