на тему рефераты
 
Главная | Карта сайта
на тему рефераты
РАЗДЕЛЫ

на тему рефераты
ПАРТНЕРЫ

на тему рефераты
АЛФАВИТ
... А Б В Г Д Е Ж З И К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Э Ю Я

на тему рефераты
ПОИСК
Введите фамилию автора:


Реферат: Лекции по C++


                SEC_IN_MIN) + seconds;

   cout << endl << totalSec << " секунд прошло с полуночи" << endl;

   return 0;

}

/*  Тест и результаты:

    Введите часы: 10

    Введите минуты: 0

    Введите секунды: 0

    36000 секунд прошло сполуночи

*/

// Программа CONST2.CPP, иллюстрирующая формальные константы

#include <iostream.h>

const int SEC_IN_MIN = 60; // глобальная константа

int main()

{

   const int MIN_IN_HOUR = 60; // локальная константа

   long hours, minutes, seconds;

   long totalSec;

   cout << "Введите часы: ";

   cin >> hours;

   cout << "Введите минуты: ";

   cin >> minutes;

   cout << "Введите секунды: ";

   cin >> seconds;

   totalSec = ((hours * MIN_IN_HOUR + minutes) *

                SEC_IN_MIN) + seconds;

   cout << endl << endl << totalSec << " секунд прошло с полуночи" << endl;

   return 0;

}

/*  Тест и результаты:

    Введите часы: 1

    Введите минуты: 10

    Введите секунды: 20

    4220 секунд прошло с полуночи

*/

// Программа OPER1.CPP, иллюстрирующая простые математические операции

#include <iostream.h>

int main()

{

   int int1, int2;

   long long1, long2, long3, long4, long5;

   float x, y, real1, real2, real3, real4;

   cout << endl << "Введите первое целое число: ";

   cin >> int1;

   cout << "Введите второе целое число: ";

   cin >> int2;

   cout << endl;

   long1 = int1 + int2;

   long2 = int1 - int2;

   long3 = int1 * int2;

   long4 = int1 / int2;

   long5 = int1 % int2;

   cout << int1 << " + " << int2 << " = " << long1 << endl;

   cout << int1 << " - " << int2 << " = " << long2 << endl;

   cout << int1 << " * " << int2 << " = " << long3 << endl;

   cout << int1 << " / " << int2 << " = " << long4 << endl;

   cout << int1 << " % " << int2 << " = " << long5 << endl;

   cout << endl << endl;

   cout << "Веедите первое вещественное число: ";

   cin >> x;

   cout << "Введите второе вещественное число: ";

   cin >> y;

   cout << endl;

   real1 = x + y;

   real2 = x - y;

   real3 = x * y;

   real4 = x / y;

   cout << x << " + " << y << " = " << real1 << endl;

   cout << x << " - " << y << " = " << real2 << endl;

   cout << x << " * " << y << " = " << real3 << endl;

   cout << x << " / " << y << " = " << real4 << endl;

   cout << endl << endl;

   return 0;

}

/*  Тест и результаты:

    Введите первое целое число: 10

    Введите второе целое число: 5

    10 + 5 = 15

    10 - 5 = 5

    10 * 5 = 50

    10 / 5 = 2

    10 % 5 = 0

    Введите первое вещественное число: 1.25

    Введите второе вещественное число: 2.58

    1.25 + 2.58 = 3.83

    1.25 - 2.58 = -1.33

    1.25 * 2.58 = 3.225

    1.25 / 2.58 = 0.484496

*/

//Демонстрация операций инкремента и декремента см. в программе OPER2.CPP

// Программа SIZEOF.CPP, которая возвращает размеры данных, используя

// для этого операцию sizeof() с переменными и типами данных.

#include <iostream.h>

int main()

{

  short int aShort;

  int anInt;

  long aLong;

  char aChar;

  float aReal;

  cout << "Таблица 1. Размеры памяти для переменных" << endl

       << endl;

  cout << "    Тип данных       Используемая " << endl;

  cout << "                    память (в байтах)"  << endl;

  cout << "------------------    -----------" << endl;

     cout << "     short int            " << sizeof(aShort) << endl;

  cout << "      integer             " << sizeof(anInt) << endl;

  cout << "   long integer           " << sizeof(aLong) << endl;

  cout << "     character            " << sizeof(aChar) << endl;

  cout << "      float               " << sizeof(aReal) << endl;

  cout << endl << endl << endl;

  cout << "Таблица 2. Размеры памяти для типов данных"  << endl

       << endl;

  cout << "    Тип данных       Используемая" << endl;

  cout << "                   память (в байтах)" << endl;

  cout << "------------------    -----------" << endl;

  cout << "     short int            " <<  sizeof(short int) << endl;

  cout << "      integer             " <<  sizeof(int) << endl;

  cout << "    long integer          " <<  sizeof(long) << endl;

  cout << "     character            " <<  sizeof(char) << endl;

  cout << "       float              " <<  sizeof(float) << endl;

  cout << endl << endl << endl;

  return 0;

}

/*  Результаты:

    Таблица 1. Размеры памяти для переменных"

    Тип данных       Используемая

                   память (в байтах)

------------------    -----------

    short int             2

    integer               2

    long integer          4

    character             1

    float                 4

    Таблица 2. Размеры памяти для типов данных

    Тип данных       Используемая

                   память (в байтах)

------------------    -----------

    short int             2

          integer               2

    long integer          4

    character             1

    float                 4

*/

// Простая программа TYPECAST.CPP, демонстрирующая приведение типа

#include <iostream.h>

int main()

{

   short shortInt1, shortInt2;

   unsigned short aByte;

   int anInt;

   long aLong;

   char aChar;

   float aReal;

   // присваиваются значения

      shortInt1 = 10;

   shortInt2 = 6;

   // действия выполняются без приведения типа

   aByte = shortInt1 + shortInt2;

   anInt = shortInt1 - shortInt2;

   aLong = shortInt1 * shortInt2;

   aChar = aLong + 5; // автоматическое преобразование

                      // в символьный тип

   aReal = shortInt1 * shortInt2 + 0.5;

   cout << "shortInt1 = " << shortInt1 << endl

        << "shortInt2 = " << shortInt2 << endl

        << "aByte = " << aByte << endl

        << "anInt = " << anInt << endl

        << "aLong = " << aLong << endl

        << "aChar is " << aChar << endl

        << "aReal = " << aReal << endl << endl << endl;

   // дейтсвия выполняются с приведением типа

   aByte = (unsigned short) (shortInt1 + shortInt2);

      anInt = (int) (shortInt1 - shortInt2);

   aLong = (long) (shortInt1 * shortInt2);

   aChar = (unsigned char) (aLong + 5);

   aReal = (float) (shortInt1 * shortInt2 + 0.5);

   cout << "shortInt1 = " << shortInt1 << endl

        << "shortInt2 = " << shortInt2 << endl

        << "aByte = " << aByte << endl

        << "anInt = " << anInt << endl

        << "aLong = " << aLong << endl

        << "aChar is " << aChar << endl

        << "aReal = " << aReal << endl << endl << endl;

   return 0;

}

/* Результаты:

   shortInt1 = 10

   shortInt2 = 6

   aByte = 16

   anInt = 4

   aLong = 60

      aChar is A

      aReal = 60.5

      shortInt1 = 10

      shortInt2 = 6

      aByte = 16

      anInt = 4

      aLong = 60

      aChar is A

      aReal = 60.5

*/

/*                                        ***   ВОПРОСЫ И ОТВЕТЫ   ***

Существуют ли особые соглашения о присвоении имен идентификаторам?

      Существует несколько стилей, которые стали популярными в последние

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

      имя переменной с символа, набранного в нижнем регистре. Если идентифи-

      катор состоит из нескольких слов, как, например, numberOfElements,

      набирайте первый символ каждого последующего слова в верхнем реги-

      стре.

Как реагирует компилятор, если вы объявляете переменную, но никогда не

присваиваете ей значения?

      Компилятор выдает предупреждение, что на переменную нет ссылок.

Каково булево выражение для проверки того, что значение переменной i

находится в заданном диапазоне значений (например, определяемом пере-

менными lowVal и hiVal)?

      Выражением, которое определяет, находится ли значение переменной i

      в некотором диапазоне, является (i >= lowVal && i <= hiVal).

2.    Конструкции принятия решений и циклы

                           ВОПРОСЫ  И ОТВЕТЫ

Предъявляет ли С++ какие-либо требования на отступ операторов в предложениях оператора?

   Нет. Отступ определяется только Вами. Типовые размеры отступа составляют два или четыре пробела. Использование отступов делает ваш листинг намного более удобочитаемым.

   Вот пример оператора if с записью предложений без отступа:

       if ( i > 0 )

       j = i * 1;

       else

       j = 10 - i;

   Сравните этот листинг и его вариант с отступами

       if ( i > 0 )

         j = i * i;

       else

         j = 10 - i;

   Последний вариант читается много легче; легко указать, где операторы  if и else. Более того, если вы будете работать с вложенными циклами,  отступы еще более значимы в отношении удобочитаемости кода.

Каковы правила написания условий в операторе if-else?

   Здесь существуют два подхода. Первый рекомендует писать условия так,    что true будет чаще, чем false. Второй подход рекомендует избегать отрицательных выражений (тех, которые используют операции сравнения  != и булевы операции !).

   Программисты из последнего лагеря преобразуют такой оператор if:

       if ( i != 0 )

         j = 100/i;

       else

         j = 1;

   в следующую эквивалентную форму:

       if ( i == 0 )

         j = 1;

       else

         j = 100/i;

   хотя вероятность равенства нулю переменной i достаточно низка.

Как обработать условие, подобное нижеследующему, где имеется деление на переменную, которая может оказаться равной нулю?

        if ( i != 0 && 1/i > 1 )

          j = i * i;

   С++ не всегда оценивает проверяемые условия полностью. Эта частичная  оценка происходит, когда член булева выражения превращает все выражение в false или true, независимо от значения других членов. В этом  случае, если переменная i равна 0, исполняющая система не будет оценивать 1/i > 1, потому что член i != 0 есть false и обращает в false все выражение, независимо от значения второго члена. Это называется укороченной оценкой булевых выражений.

Действительно ли необходимо включать предложения else или default в многоальтернативные операторы if-else и switch?

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

Как смоделировать цикл while циклом for?

   Рассмотрим простой пример.

       int i;                             int i = 1;

       for (i=1; i<=10; i+=2) {           while ( i <= 10) {

         cout << i << endl;                 cout << i << endl;

       }                                    i += 2;

                                          }

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

Как смоделировать цикл while циклом do-while?

   Рассмотрим простой пример.

       i = 1;                             i = 1;

       do {                               while (i <= 10) {

         cout << i << endl;                 cout << i << endl;

         i += 2;                            i += 2;

       } while (i <= 10);                 }

   Оба цикла имеют одинаковые условия в предложениях while.

   Заметим, однако, что если цикл спроектирован таким образом, что начальное значение i может быть неизвестным заранее, то это может привести к  различным эффектам. Например, если i исходно равно 11, то цикл слева выполнится один раз, тогда как цикл справа не сделает ни одной итерации.

Как открытый цикл for может эмулировать циклы while и do-while?

   Открытый цикл for эмулирует другие циклы С++ установкой оператора if выхода из цикла в начале или конце цикла. Рассмотрим пример эмуляции цикла while открытым циклом for:

       i = 1;                             i = 1;

       while (i <= 10) {                  for (;;) {

                                            if (i > 10) break;

         cout << i << endl;                 cout << i << endl;

         i += 2;                            i += 2;

       }                                  }

   Заметим, что открытый цикл for использует оператор if выхода из цикла  как первый оператор внутри цикла. Условие, проверяемое оператором if, есть логическое обращение условия цикла while.

   Рассмотрим простой пример, иллюстрирующий эмуляцию цикла do-while:

       i = 1;                             i = 1;

       do {                               for (;;) {

         cout << i << endl;                 cout << i << endl;

                                            if (i > 10) break;

         i += 2;                              i += 2;

       } while (i <= 10)                  }

   Открытый цикл for использует оператор if выхода из цикла перед концом  цикла. Оператор if проверяет обратное логическое условие, так же как в цикле do-while. Однако имейте, пожалуйста, в виду, что приведенные примеры довольно грубы и неэлегантны. Никто никогда не будет использовать открытый оператор for подобным образом. Конечно, можно было бы пропустить одно из трех предложений внутри скобок цикла for (например, предложение инициализации, если управляющая переменная уже  инициализирована). Открытые циклы for чаще всего используются в случаях, когда выход из цикла бывает редким событием, например, если при обработке данных, вводимых пользователем с клавиатуры, нажатие клавиши Esc должно приводить к выходу из программы.

Можно ли во вложенном цикле for использовать переменную управления внешним циклом в качестве границы диапазона значений для внутренних циклов?

   Да. С++ не только не запрещает такое использование, на самом деле

   оно в порядке вещей. Рассмотрим простой пример.

       for ( int i = 1; i <= 100; i += 5)

         for ( int j = i; i <= 100; j++)

           cout  <  i * j << endl;

Ограничивает ли С++ вложение циклов разных типов?

   Нет. В программе на С++ вы можете вкладывать любые комбинации

   циклов.

СТРУКТУРА ПРОГРАММЫ

               В этом разделе описывается структура исходной программы  на Си  и  определяются  термины, используемые в последующих разделах руководства при описании языка. По сути, здесь представлен  общий обзор  особенностей  языка Си, которые в дальнейшем рассмотрены в деталях.

     Исходная программа

               Исходная программа- это  совокупность  следующих  об"ектов: директив,  указаний компилятору, об"явлений и определений. Дирек­тивы задают действия препроцессора по преобразованию текста прог­раммы перед компиляцией. Указания компилятору- это  команды,  вы­полняемые  компилятором  во время процесса компиляции. Об"явления задают имена и атрибуты переменных, функций и типов, используемых в программе. Определения- это об"явления, определяющие переменные и функции.

               Определение переменной в дополнении к ее имени и типу зада­ет начальное значение об"явленной переменной. Кроме того, опреде­ление предполагает распределение памяти для переменной.

Определение функции  специфицирует  ее  структуру,  которая

представляет  собой смесь из об"явлений и операторов, которые об­разуют саму функцию. Определение функции также задает  имя  функ­ции, ее формальные параметры и тип возвращаемой величины.

Исходная  программа  может  содержать любое число директив,

указаний компилятору, об"явлений и определений. Любой из об"ектов программы имеет определенный синтаксис, описанный в этом руковод­стве,и каждая составляющая может появляться в любом порядке, хотя влияние порядка, в котором следуют  переменные  и  функции  может быть  использовано в программе (см. раздел 3.5 "Время жизни и ви­димость").

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

               В следующем примере иллюстрируется простая  исходная  прог­рамма на языке Си.

int x = 1;/* Variable definitions */

int y = 2;

extern int printf(char *,...);/* Function declaration */

main ()   /* Function definition for main function */

{

int z;    /* Variable declarations */

int w;

z = y + x;  /* Executable statements */

w = y - x;

printf("z = %d \nw = %d \n", z, x);

}

               Эта  исходная  программа определяет функцию с именем main и об"являет функцию printf. Переменные x и y задаются своими  опре­делениями. Переменные z и w только об"являются.

ОБЪЯВЛЕНИЯ

               В этом разделе описываются форматы и составные части об"яв­лений переменных, функций и типов. Об"явления Си имеют  следующий синтаксис:

[<sc-specifier>][<type-specifier>]<declarator>[=<initializer>] [,<declarator>[=<initializer>...],

                 где:

<sc-specifier>- спецификатор класса памяти; <type-specifier>- имя определяемого типа;

                 <declarator>- идентификатор, который может быть модифициро­ван при об"явлении указателя, массива или функции;

               <initializer>-  задает значение или последовательность зна­чений, присваиваемых переменной при об"явлении.

               Все переменные Си должны быть явно об"явлены перед  их  ис­пользованием.  Функции  Си могут быть об"явлены явно или неявно в случае их вызова перед определением.

               Язык Си определяет стандартное множество  типов  данных.  К этому       множеству можно добавлять новые типы данных посредством их

об"явлений на типах данных уже определенных.

               Об"явление Си требует одного или более деклараторов. Декла­ратор- это идентификатор, который может быть определен с квадрат­ными скобками ([]), эвездочкой (*) или круглыми скобками  ()  для об"явления  массива,  указателя  или  функции.  Когда об'является простая переменная  (такая  как  символ,  целое  или  плавающее), структура  или  совмещение простых переменных, то декларатор- это идентификатор.

               В Си определено четыре спецификатора класса памяти, а имен­но: auto, extern, register и static.

               Спецификатор класса памяти определяет, каким образом об"яв­ляемый об"ект запоминается и инициализируется и из  каких  частей программы можно ссылаться на него. Расположение об"явления внутри программы, а также наличие или отсутствие других об"явлений- так­же важные факторы при определении видимости переменных.

               Об"явления функций описаны в разделе 4.4.

                   Спецификаторы типов

               Язык  Си поддерживает определения для множества базовых ти­пов данных, называемых "основными" типами.  Названия  этих  типов перечислены в Табл. 4.1.

------------------------------------------------------------

            Типы целых                 Типы плавающих       Другие типы

------------------------------------------------------------

signed char                                float                void

signed int      double

signed short intsigned long int

unsigned char

unsigned int

unsignet short int unsigned long int

-----------------------------------------------------------

Табл. 4.1. Основные типы.

               Перечислимые  типы также рассматриваются как основные типы. Спецификаторы перечислимых типов рассмотрены в разделе 4.7.1. Ти­пы signed char, signed int, signed short int и  signed  long  int

вместе  с  соответствующими двойниками unsigned называются типами целых.

               Спецификаторы типов float и double относятся к типу "плава­ющих". В об"явлениях переменых и функций можно использовать любые спецификаторы "целый" и "плавающий".

               Тип void может быть использован только для об"явления функ­ций, которые не возвращают значения. Типы функций  рассмотрены  в разделе             4.4.

               Можно задать дополнительные спецификаторы типа путем об"яв­ления typedef, описанного в разделе 4.7.2.

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

               В некоторых реализациях могут быть использованы опции  ком­пилятора,  позволяющие изменить умолчание для типа char со знако­вого на беззнаковый. Когда задана такая  опция,  сокращение  char имеет  то же самое значение, что и unsigned char, и следовательно ключевое слово sidned должно быть записано  при  об"явлении  сим­вольной величины со знаком.

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11


на тему рефераты
НОВОСТИ на тему рефераты
на тему рефераты
ВХОД на тему рефераты
Логин:
Пароль:
регистрация
забыли пароль?

на тему рефераты    
на тему рефераты
ТЕГИ на тему рефераты

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


Copyright © 2012 г.
При использовании материалов - ссылка на сайт обязательна.