Практическое программирование на не вполне знакомом языке, страница 5

 Теперь мы может разобрать, что же делается в каждой строке программы.

//-------------------------------------------- bk212.cpp

#include <stdio.h>

// В текст программы  включается  заголовочный  файл 

// стандартной библиотека ввода-вывода,  в  котором 

// содержится необходимая транслятору информация о

// функциях.

double min(double A[], int nn)

// Заголовок функции min, возвращающей в  качестве 

// результата вещественное число  -  значение  мини-

// мального  элемента массива. Формальные  параметры- 

// указатель на массив А, и размерность массива - nn.

{

double  A_min;

int i;

// Локальные переменные функции, текущее минимальное

// значение элемента A_min и индекс в массиве i.

for (i=1, A_min=A[0]; i<nn; i++)

// Цикл выполняется для всех значений  переменной  i 

// от 1 до nn-1 включительно. При этом начальное

// значение  А_min устанавливается равным элементу

// массива A с индексом  0.

    if (A[i] < A_min) A_min=A[i];

// В каждом шаге цикла производится сравнение теку-

// щего элемента массива A[i] и A_min. Если текущий

// элемент меньше, то его значение становится новым

// минимумом.

return (A_min);

}

// Значение A_min возвращается в качестве результата 

// функции и выполнение тела функции завершается.

double B[10]={ 3.,6.,-5.,4.,12.,3.3,0.45,5.,4.,8.};

// Массив  из  10  вещественных  чисел,  инициали-

// зированный списком начальных значений,  которые 

// будут  установлены в нем в момент запуска про-

// граммы. Массив  является  глобальной переменной,

// то есть доступен для любой, следующей за ним

// функции (в данном случае main). 

double  C[20];

// Глобальный массив из 20  вещественных  чисел. 

// Начальных значений не имеет.

void    main()

{

// Основная функция main, вызывается при запуске

// программы.

int i,n1;

double  dd;

// Локальные переменные функции. i - теекущий  индекс 

// элемента массива. n1  -  количество  заполненных 

// элементов в массиве C[]. dd -  сохраняет

// результат,  возвращаемый функцией min при вызове.

do

// Оператор цикла с  проверкой  условия  продолжения 

// после очередного шага цикла.

    {

// Тело цикла - составной оператор, 

// последовательность из двух простых операторов

    cout << "Элементов массива:";

// Выражение содержит операцию вывода в объект - поток.

// Ограниченное символом ";", превращается в простой

// оператор. Выводит на экран текст подсказки.

    cin >> n1;

// Вводит с клавиатуры значение целой переменной n1.

    } while (n1 < 1 || n1 > 20);

// Цикл продолжается, пока введенное значение n1 не

// попадет в интервал 1..20. Условие продолжения - 

// не попадает  в интервал, то есть меньше 1 или

// больше 20.

for (i=0; i<n1; i++)

// Цикл повторяется для всех значений i, начиная от 0

// и заканчивая nn-1 включительно

    {

// Тело цикла - составной оператор

    cout << "C[" << i << "]=";

// Вывод подсказки - строка  "C[...]",  в  угловых 

// скобках значение переменной i - индекс текущего

// элемента массива.

    cin >> C[i];

// Ввод значения i-го элемента массива  в  формате 

// вещественного числа

    } 

dd = min(C,n1);

// Вызов функции min для массива C[] и количества 

// заполненых элементов в нем - n1. Результат 

// функции  присваивается переменной dd.

cout << "Минимум С[]=" <<  dd << endl;

// Вывод строки "Минимум C[i]=..." со значением пере-

// менной dd  в  формате  вещественного  числа. 

// После  вывода строки производится перевод курсора

// на экране  к  началу следующей (символ \n в

// форматной строке).

cout << "Минимум B[]=" << min(B,10)) endl;

// Вывод строки в подобном формате для массива B[]. 

// Вместо промежуточной переменной непосредственно 

// следует  вызов функции min для массива B[]  раз-

// мерностью 10  элементов (фактические параметры).

}

Надеемся, что теперь всем станет ясно, сколько нужно комментариев в программе, чтобы смысл ее был вполне понятен.