2. Как это делается
“При трогании с места на ровном участке дороги в безветренную погоду необходимо преодолеть лишь силу сопротивления качению колес и силу инерции”. С.Сабодахо. За рулем легкового автомобиля.
2.1. Если все сразу
С чего начать практическое программирование на не вполне знакомом языке? Можно со справочника: идентификаторы, константы, служебные слова. Скучно. Можно с примера: написать программу из одного оператора, печатающего "Hello, world", а затем долго обсуждать, как ее редактировать, транслировать, выполнять, какие она включает заголовочные файлы, библиотечные функции. Слишком много сложных вещей сразу для такой простой программы. А можно написать простую программу примерно на 20 строчек и попытаться выжать из нее комментариев страниц на 10: что обозначает каждый элемент программы, как он пишется, зачем нужен и что делает. Думается, что после такого обсуждения возникнет знание языка на уровне “банальной эрудиции”: есть такой тип, операция, выражение, библиотечная функция. После чего можно будет перейти к систематическому его изучению. Итак, программа, которая находит минимальный элемент в массивах.
#include <iostream.h>
double min(double A[], int nn)
{
double A_min;
int i;
for (i=1, A_min=A[0]; i<nn; i++)
if (A[i] < A_min) A_min=A[i];
return (A_min);
}
double B[10]={ 3.,6.,-5.,4.,12.,3.3,0.45,5.,4.,8.};
double C[20];
void main()
{
int i,n1;
double dd;
do {
cout << "Элементов массива:";
cin >> n1;
} while (n1 < 1 || n1 > 20);
for (i=0; i<n1; i++)
{
cout << "C[" << i << "]=";
cin >> C[i];
}
dd = min(C,n1);
cout << "Минимум С[]=" << dd << endl;
cout << "Минимум B[]=" << min(B,10)) endl;
}
Программа нарочно построена “без единого гвоздя”, то есть без единого комментария, поскольку на первый раз их потребуется слишком много и малая их часть проблемы не решит. Попробуем разобрать эту программу в несколько подходов. Для этого каждый раз будем приводить необходимый ее фрагмент.
Шаг 1. Простые переменные и массивы
double min(...
{
double А_min;
int i;
}
double B[10] = { 3.,6.,5.,4.,12.,3.3,0.45,5.,4.,8.};
double C[20];
void main()
{
int i,n1;
double dd;
...i=0; i<n1;...
{
...
cin >> C[i];
}
1. В программе в разных частях присутствуют имена простых переменных А_min, i, n1, nn, причем i повторяется внутри двух конструкций -min и main. Имя переменной (идентификатор) состоит из больших и маленьких латинских букв, цифр и знака "_" (подчеркивание) и начинается с буквы. Отмеченные здесь конструкции "вводят" в программу (или ее часть) эти переменные и называются определением переменной.
2. Определение переменной "создает" переменную, выделяя под нее память, задавая имя, тип и, возможно, начальное значение. В определениях мы видим два служебных слова - double и int, которые обозначают два различных типа переменных (типа данных). В первом приближении тип данных переменной -это способ ее представления, основные свойства и операции над ней.
3. Тип данных int задает свойства целой переменной: она может принимать только целые значения в определенном диапазоне, зависящем от разрядности процессора, например, -32767...+32767. Все арифметические операции над целыми числами не выходят за рамки этого представления, то есть дают также целый результат.
4. Тип данных double задает свойства переменной с плавающей точкой (двойной точности -отсюда double). Число с плавающей точкой (или вещественное число) может принимать значения десятичной дроби ( например, 48.22) и имеет ограничения на количество значащих цифр (точность представления). Все операции над переменными типа double не выходят за рамки этой формы представления. Если же в операции присутствуют переменные int и double, то первый тип преобразуется во второй (целое число в вещественное).
5. Массив также определяется как упорядоченное множество переменных, относящемуся к одному из типов данных. В нашем примере использованы массивы вещественных чисел. Номер элемента массива называется также индексом.
6. Количество элементов в массиве (размерность) задается целой константой и не может меняться во время работы программы.
7. Переменные и массивы могут быть инициализированы. Инициализация переменных - это установка начальных значений во время трансляции. Это значит, что в момент начала работы программы содержимое массива B уже будем установлено согласно приведенного списка.
8. Судя по фрагменту программы, работа с массивами начинается с нулевого элемента, то есть массив размерности n включает в себя элементы с номерами (индексами) от 0 до n-1.
Шаг 2. Функции и общая структура программы
double min(double A[], int nn)
{
double А_m in;
int i;
...
return (А_min);
}
double B[10]=...
double C[20];
void main()
{
int i,n1;
double dd
... ,min(B,10)...
}
1. Основная структурная единица программы - функция. Она выполняет некоторое законченное действие и имеет "стандартный интерфейс" с набором параметров, через который она вызывается из других функций. Программа представляет собой набор функций.
2. "Интерфейс" функции описан в ее заголовке функции. В нем имеется имя функции, по которому она известна далее в программе, формальные (входные) параметры и результат.
3. Имя функции -идентификатор.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.