Опубликован: 09.12.2017 | Доступ: свободный | Студентов: 737 / 31 | Длительность: 02:06:00
Специальности: Программист
Лекция 1:

Вычисление суммы, максимального и минимального элементов небольшого множества

Лекция 1: 12
Аннотация: Вычисление суммы, максимального и минимального элементов небольшого множества На этом уроке рассматриваются простые, но крайне важные алгоритмы вычисления суммы и максимального (минимального) элемента небольшого множества переменных. Рассматриваются два алгоритма. Первый из них кажется естественным и учитывает тот факт, что множество элементов небольшое и его можно явно перечислить. Второй алгоритм, возможно, менее естественен, но зато он легко обобщается на произвольное число элементов рассматриваемого множества. Рассмотрение ведется на примере простой задачи. Показано, как написать соответствующие процедуры для вычисления суммы и максимума, и как построить интерфейс, учитывающий специфику задачи.

Наша цель - научиться алгоритмическому мышлению. Как часть этой непростой задачи – научиться программировать в процедурах и функциях. Сегодня мы рассмотрим, как написать функцию, вычисляющую сумму небольшого числа элементов, как написать функцию, вычисляющую максимальный элемент этого множества. Потребность в таких функциях появляется в самых разнообразных задачах. Написав один раз такую функцию, ее с успехом можно использовать в разных задачах.

Рассмотрим конкретную задачу:

Задача:

Аня, Витя и Саша пошли в лес. Аня собрала m грибов, Витя – n, Саша – p грибов.

Вот вопросы, которые можно задать в связи с этой задачей:

  1. Сколько грибов собрали дети?
  2. Какое максимальное число грибов было найдено одним подростком?
  3. Какое минимальное число грибов было найдено одним подростком?
  4. Кто собрал больше всех грибов?
  5. Кто собрал меньше всех грибов?
  6. Сколько в среднем грибов, собирали дети?

Ответы на эти вопросы так или иначе требуют вычисления суммы элементов, нахождения максимального (минимального) элемента.

Давайте напишем функцию, вычисляющую сумму трех переменных, которую будем использовать при решении нашей задачи:

/// <summary>
        /// Сумма трех аргументов
        /// </summary>
        /// <param name="x1">аргумент1</param>
        /// <param name="x2">аргумент2</param>
        /// <param name="x3">аргумент3</param>
        /// <returns>сумма x1 + x2 + x3</returns>
        int Sum(int x1, int x2, int x3)
        {
            // return x1 + x2 + x3;
            int sum = 0;//вводим переменную для суммы с начальным значением 0
            sum = sum + x1; //прибавляем первое слагаемое
            sum = sum + x2; //прибавляем второе слагаемое
            sum = sum + x3; //прибавляем третье слагаемое
            return sum;		//возвращаем результат
        }

Заголовок функции и заголовочный комментарий

Заголовок функции:

int Sum(int x1, int x2, int x3)

начинается с указания типа значения, возвращаемого функцией. Поскольку функция находит сумму трех переменных типа int, то и возвращаемое значение принадлежит тому же типу.

В качестве имени функции выбрано содержательное имя, - для суммы это обычно Sum или Summa. Имя указано в латинице, хотя можно использовать и имя, заданное кириллицей, например, - Сумма. Латиница предпочтительнее, поскольку не требует частых переключений с одного алфавита на другой при работе с программой. Конечно, когда речь идет о вводе и выводе сообщений, предназначенных пользователю, то здесь нужно использовать родной язык, для нас – это русский язык.

Далее в заголовке функции в скобках перечисляются имена аргументов функции и их типы.

Каждую функцию также, как и процедуру, следует сопровождать заголовочным комментарием. Предпочтительно задавать его сразу после того, как написан заголовок, еще до того, как написано тело функции. В заголовочном комментарии указывается, что делает функция. Тело функции выполняет эту работу, показывая, как это делается. Для тех, кто вызывает функцию, важнее знать, что делает функция, но не обязательно знать, как она это делает. Если заголовочный комментарий написан, то, поскольку он является документируемым комментарием, в момент вызова функции доступна информация, записанная в комментарии, - она показывается в точке вызова.

Для задания заголовочного комментария достаточно в строке, предшествующей заголовку, набрать три слеша. Тогда по заголовку автоматически строится шаблон комментария. Вначале идет тэг summary, в котором следует указать, что делает функция. Затем для каждого параметра функции строится тэг param, в котором следует указать смысл каждого параметра. Затем идет тэг returns, в котором следует задать описание возвращаемого значения.

Заголовочные комментарии играют крайне важную роль в понимании того, что делает ваш проект и отдельные его части. Помимо того, что они обеспечивают то, что называют intellisense, - интеллектуальную подсказку, комментарии составляют важную часть отчета о работе программы, который автоматически строится по тексту программы.

В приведенном тексте функции используются и другой вид комментариев, - так называемые строчные комментарии, которые начинаются с двух слешей, позволяя комментировать код данной строки.

Заметьте, комментариев в нашей простой программе больше чем исполняемого кода. Такая ситуация характерна для профессионального программирования, где понимают, что, конечно, программа должна быть понятна компьютеру, исполняющему программу, но, не менее важно, чтобы она была понятна человеку, работающему с программой. Программы живут долго и к ним приходится возвращаться спустя месяцы или годы после момента первоначального создания программы.

Отсутствие комментариев свидетельствует о непрофессионализме разработчика, о спешке, в которой программа создавалась. В хорошо сделанной программе комментарии обязательны, особенно, когда речь идет о заголовочных комментариях.

Лекция 1: 12