Logo GenDocs.ru

Поиск по сайту:  


Загрузка...

Лекции - Основы программирования на языке С++ - файл 1.doc


Лекции - Основы программирования на языке С++
скачать (910 kb.)

Доступные файлы (1):

1.doc910kb.03.12.2011 12:19скачать

содержание
Загрузка...

1.doc

1   2   3   4   5   6   7   8   9   ...   18
Реклама MarketGid:
Загрузка...

Идентификаторы


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

ветствующей ему переменной или функции.После этого его можно ис­пользовать в последующих операторах программы. Идентификатор- это последовательность из одной или более букв, цифр или подчер­ков(_), которая начинается с буквы или подчерка. Допускается лю­бое число символов в идентификаторе, однако только первые 31 сим­вол распознаются компилятором. (Программы, использующие результат

работы компилятора, такие как, линкер, могут распознавать меньшее число символов).

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

Примеры идентификаторов:

temp1

toofpage

skip12

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

add

ADD

Add

aDD

Компилятор Си не допускает идентификаторов, которые имеют ту же самую орфографию, что и ключевые слова. Ключевые слова опи­саны в следующем раздела

Замечание:

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

Ключевые слова


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

auto double int struct

break else long switch

case enum register typedef

char extern return union

const float short unsigned

continue for signed void

default goto sizeof while

do if static volatile

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

Ключевые слова const и volatile зарезервированы для буду­щего использования.

Следующие идентификаторы могут быть ключевыми словами для некоторых приложений:

cdecl

far

fortran

huge

near

pascal

Комментарии


Комментарий- это последовательность символов, которая восп­ринимается компилятором как отдельный пробельный символ или, дру­гими словами, игнорируется.

Комментарий имеет следующую форму представления:

/*<characters>*/,

где <characters> может быть любой комбинацией символов из множества представимых символов, включая символы новой строки, но исключая комбинацию */. Это означает, что комментарии могут зани­мать более одной строки, но не могут быть вложенными.

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

Следующие примеры иллюстрируют некоторые комментарии:

/* Comments can separate and document

lines of a program. */

/* Comments can contain keywords such as for

and while */

/*******************************************

Comments can occupy several lines. *******************************************/

Так как комментарии не могут содержать вложенных коммента­риев, то следующий пример будет ошибочным:

/* You cannot/* nest */ comments */

Компилятор распознает первую комбинацию */ после слова nest как конец комментария. Затем, компилятор попытается обрабатывать оставшийся текст и выработает сообщение об ошибке. Чтобы обойти

компиляцию комментариев больших размеров, нужно использовать ди­рективу #if препроцессора.

Лексемы


Когда компилятор обрабатывает программу, он разбивает прог­рамму на группы символов, называемых лексемами. Лексема- это еди­ница текста программы, которая имеет определенный смысл для ком­пилятора и которая не может быть разбита в дальнейшем. Операции, константы, идентификаторы и ключевые слова, описанные в этом раз­деле,являются примерами лексем. Знаки пунктуации, такие как квад­ратные скобки ([]), фигурные скобки ({}), угловые скобки (<>), круглые скобки и запятые, также являются лексемами. Границы лек­сем определяются пробельными символами и другими лексемами, таки­ми как операции и знаки пунктуации. Чтобы предупредить неправиль­ную работу компилятора, запрещаются пробельные символы между сим­волами идентификаторов, операциями, состоящими из нескольких сим­волов и символами ключевых слов.

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

Например, рассмотрим следующее выражение:

i+++j

В этом примере компилятор вначале создает из трех знаков плюс самую длинную из возможных операций (++), а затем обработает оставшийся знак +, как операцию сложения (+). Выражение проинтер­претируется как (i++)+(j), а не как (i)+(++j). В таких случаях необходимо использовать пробельные символы или круглые скобки, чтобы однозначно определить ситуацию.

^

ИСХОДНЫЕ ТЕКСТЫ ПРИМЕРОВ



// Программа VAR.CPP, иллюстрирующая простые переменные
#include <iostream.h>
int main()

{

int i, j = 2;

double x, y = 355.0 / 113;
i = 3 * j;

cout << "i = " << i << endl

<< "j = " << j << endl;
x = 2 * y;

x = x * x;

cout << "y = " << y << endl

<< "x = " << x << endl;

return 0;

}

/*

Результаты:

i = 6

j = 2

y = 3.141593

x = 39.4784

*/

// Программа CONST1.CPP, иллюстрирующая константы
#include <iostream.h>
#define SEC_IN_MIN 60

#define MIN_IN_HOUR 60
int main()

{

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 << 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).

  1. 1   2   3   4   5   6   7   8   9   ...   18



    Скачать файл (910 kb.)

    Поиск по сайту:  

© gendocs.ru
При копировании укажите ссылку.
обратиться к администрации
Рейтинг@Mail.ru