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

Страницы работы

Содержание работы

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. Имя функции -идентификатор.

Похожие материалы

Информация о работе