Основы программирования на языке С++




Скачать 401.69 Kb.
НазваниеОсновы программирования на языке С++
страница1/3
Дата публикации19.07.2013
Размер401.69 Kb.
ТипДокументы
uchebilka.ru > Информатика > Документы
  1   2   3

Основы программирования на языке С++



1. Объекты и их атрибуты. Атрибуты идентификатора
Объект - область памяти, выделенная для хранения информационной единицы (значения) некоторого типа. Объект имеет 5 атрибутов: адрес, размер, идентификатор, значение, тип.

Адрес объекта это адрес его первого байта.

Размер - величина объекта в байтах.

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

Значение - информация, которая заносится путем выполнения операций присваивания, инициализации, ввода.

Тип объекта определяет:

- множество, которому могут принадлежать его значения;

- способ двоичного представления значения;

- правила выполнения операций над его значениями;

- размер объекта.

По способу создания и удаления все объекты можно разделить на три категории:

a) статические,

б) локальные,

в) динамические.

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

Локальные объекты создаются в точке его объявления и удаляются после выхода из сферы действия объекта. Выполняются эти операции программой автоматически.

Размещаются статические и локальные объекты в сегменте данных или в стеке.

Динамические объекты создаются операциями new и new[] и удаляются при выполнении операций delete и delete[]. Размещаются они в куче (heap-область памяти).

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

^ Пространство имен - область программы, в пределах которой данный идентификатор должен быть уникальным. Например: для меток пространством имен является функция, для имен компонентов класса – класс, для локальной переменной – блок.

Ниже приведен пример программы, в которой реализованы 4 пространства имен: одно глобальное и еще 3 вложенных.

#include

int R=0;  переменная в глобальном пространстве

void main() (уровень 0)

{ int R=1;  переменная в пространстве уровня 1

{ int R=2;  переменная в пространстве уровня 2

{ int R=3;  переменная в пространстве уровня 3

printf(“Уровень 3: R=%d \n”, R);

}

printf(“Уровень 2: R=%d \n”, R);

}

printf(“Уровень 1: R=%d \n”, R);

printf(“Уровень 0: R=%d \n”, ::R);

}
2.2. Операторы
Любой оператор завершается точкой с запятой.

Различают 5 видов операторов:

1) оператор-объявление;

2) стандартный оператор;

3) вызов процедуры;

4) оператор-выражение;

5) составной оператор.

Оператор-объявление содержит описание атрибутов объектов. При выполнении оператора-объявления обычно (но не всегда!) выполняется две операции: создается один или несколько объектов.

^ Стандартные операторы реализуют типовые элементы алгоритмов, такие как циклы, ветвления, условные и безусловные переходы и т.д.

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

Оператор-выражение это выражение, которое завершается точкой с запятой.

^ Составной оператор - последовательность операторов, заключенная в фигурные скобки: { опер_1; опер_2; ... } .

Составной оператор можно писать всюду, где можно использовать простой оператор.

^ Блоком называется составной оператор, который содержит, по крайней мере, один оператор-объявление.

Метки

Перед любым оператором можно поставить метку:

метка: оператор;

Метка есть идентификатор.
Ниже приведены форматы стандартных операторов.

^ Оператор перехода на метку имеет формат:

goto метка;

Особенностью этого оператора является то, что он не может указывать переход вперед через объявление переменной с инициализацией. Компилятор выдает сообщение “Goto bypasses initialization of a local variable”. В то же время назад такой переход возможен.

^ Оператор выбора имеет формат:

if (S) опер_1; [ else опер_2; ]

Оператор-переключатель имеет формат:

switch (S) {
case C1: операторы
case C2: операторы

..............................

[default : операторы]
};

Выражение S может иметь любой целый тип (char, short, int, long, enum, bool). Константа С1 (С2, ...) наз. меткой варианта. Если значение выражения S совпадает с одной из меток варианта, делается переход на нее. После этого выполняются все последующие операторы. Если S не совпадает ни с одной меткой варианта, делается переход на строку default (если она есть). Выражение S должно иметь целый тип. В списке "операторы" обычно последним записывают break .

Пример использования оператора-переключателя switch. Программа обрабатывает нажатие клавиш “y”, “n”, Esc.

#include

void main()

{ char x;

char *s1 = “Нажата клавиша ‘y’”;

char *s2 = “Нажата клавиша ‘n’”;

for (;;) { x=getkey();

switch (x) { case ‘y’: puts(s1); break;

case ‘n’: puts(s2); break;

case 27: exit(0);

}

}

}

^ Оператор цикла while:

while (S) оператор;

Оператор (тело цикла) выполняется, если S истина (т.е. не ноль).

Пример использования оператора while для определения наибольшего общего делителя двух целых чисел:

int a=125, b=2500, r;

while (r = a%b) { a=b; b=r; }

printf(“НОД = %d \n”, b);

^ Оператор цикла do-while:

do оператор; while (S);

Оператор выполняется еще раз, если S истина (не ноль).

Оператор цикла for:

for (иниц; ЛВ; модиф) оператор;

Здесь иниц - объявление и инициализация (или только инициализация) переменных; ЛВ - выражение, вычисляемое до выполнения оператора – тела цикла. Если оно истинно - оператор выполняется, если ложно - работа оператора for завершается;

модиф - операторы, изменяющие значения переменных.

Один из элементов в круглых скобках может отсутствовать, однако сим-волы-разделители ";" сохраняются. Например:

for (;;) оператор; - бесконечный цикл без инициализации и модификации;

for (int k=0;;) оператор; - бесконечный цикл с объявлением и инициализацией переменной k;

for (i=0,j=N;;i++,j--) оператор; - цикл с инициализацией переменных и их модификацией, но без проверки условия.

^ Оператор выхода из блока:

break;

осуществляет выход из тела оператора do, for, while, switch.

Оператор перехода в начало тела цикла: continue;

осуществляет переход в начало тела оператора do, for, while.

^ Оператор выхода из функции:

return [выражение];

формирует возвращаемое значение и осуществляет выход из функции.
2.3. Выражения, операции и приоритеты
Выражение – фрагмент кода, выполнение которого формирует (вычисляет) некоторое значение. Выполнение выражения может приводить к изменению значений некоторых переменных. Для сохранения значения, формируемого при выполнении выражения, создается временный объект. После завершения текущего оператора временный объект уничтожается.

Выражение может иметь один из двух видов: Lvalue, Rvalue.

Rvalue - результатом выполнения выражения является значение некоторого типа;

Lvalue - результатом выполнения выражения является имя или ссылка для некоторого объекта (можно говорить, что результатом является объект).

Rvalue может находиться только справа от знака присваивания, Lvalue может находиться как слева, так и справа.

В качестве примера отметим следующее. Пусть a - переменная типа int. Тогда ++a является Lvalue, а a++ есть Rvalue. Почему?

Вопрос. Пусть имеется объявление:

int x, a=2, b=3;

Будет ли выполнен оператор:

x = a+++++b;

Если он не выполняется, то почему?

Ответ. Выражение справа компилятор интерпретирует как ((a++)++)+b , однако инкрементирование (a++)++ выполнить нельзя, т.к. a++ не Lvalue! В то же время такой оператор выполняется:

x = (a++)+(++b);

Вопрос. Если a = 2 , то чему равны значения x, a после выполнения такого оператора:

x = (++a)++;

^ Вопрос. Если начальное значение а = 5, то чему равно значение а после выполнения оператора:

++++a = a+++1;

Ответ: а = 9 . Отметим, что вначале вычисляется выражение слева от символа присваивания, затем выражение справа и после этого выполняется присваивание.

Элементами, из которых строится выражение, являются: константы, переменные, функции, символы операций (operators), скобки.

Операции

По числу операндов все операции делятся на унарные, бинарные и тернарные.

Кроме того, операции можно разделить на операции=функции и операции-процедуры. К последним относят операции, которые изменяют значения своих операндов.

Имеется 49 операций, которые можно разделить на 5 групп:

  • арифметические;

  • операции отношения и логические операции;

  • побитовые операции;

  • операции присваивания;

  • другие операции.

По сравнению с языком С в язык С++ добавлено несколько операций.

Арифметические операции:

+ - сложение;

- - вычитание или унарный минус;

* - умножение;

/ - деление;

% - остаток от деления;

++ - инкрементирование;

-- - декрементирование.

^ Операции отношения и логические операции:

== - равно;

!= - не равно;

< - меньше;

<= - меньше или равно;

> - больше;

>= - больше или равно;

! - логич. отрицание;

|| - логич. ИЛИ;

&& - логич. И.

^ Побитовые операции:

~ - дополнение;

>> - сдвиг вправо;

<< - сдвиг влево;

& - операция И;

^ - исключающее ИЛИ (неэквивалентность);

| - операция ИЛИ.

^ Операции присваивания:

= - присвоить;

+= - выполнить операцию и присвоить значение левому операнду;

-= - --- " --- ;

*= - --- " --- ;

/= - --- " --- ;

%= - --- " --- ;

>>= - --- " --- ;

<<= - --- " --- ;

&= - --- " --- ;

|= - --- " --- ;

^= - --- " --- .

Присваивание является бинарной операцией. Левым операндом может быть выражение вида Lvalue, правым - выражение Rvalue или Lvalue.

^ Вопрос. Имеется оператор вида:

выражение_1 = выражение_2;

Какое выражение, первое или второе, вычисляется сначала?

Ответ: Компилятор Borland вначале вычисляет левый операнд, затем правый, после этого выполняется присваивание. Результатом выполнения операции "=" является значение левого операнда. Убедиться в этом можно проанализировав, например, выполнение операторов:

int a=5;

++++a = a+++1;

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

^ Другие операции:

&x - адрес переменной x;

*p - объект, на который указывает указатель p;

::x - доступ к скрытому объекту;

S.x - компонент x объекта S;

S.*p - компонент объекта S, на который указывает указатель p;

p->x - компонент x объекта, на который указывает p;

pS->*p - из объекта, на который указывает указ. pS, выбрать компонент, на
который указывает указ. p

s?x:y - операция выбора;

sizeof(x) или sizeof x - размер объекта x;

sizeof(тип) - размер объекта указанного типа;

(тип)x - преобразование x к указанному типу;

(тип*)p - преобразование указателя p к указанному типу;

new тип - создание объекта указанного типа;

new тип [размер] - создание массива объектов указанного типа;

delete p - удаление объекта, на который указывает p;

delete[] p - удаление массива объектов, на который указывает p;

A,B - выполнить выражения A,B, вернуть значение B;

[...] - выбрать элемент массива;

имя(...) - вызвать функцию.
Категории приоритетов и ассоциативность операций не изменились. Символы операций, категории приоритетов и ассоциативность приведены ниже в таблице.
Таблица 2.3.1. Категории приоритетов и ассоциативность операций.

Приоритет

О п е р а ц и и

Ассоц.

1

() [] -> :: .



2

! ~ -- ++ & * (тип) sizeof new delete




3

.* ->*



4

* / %



5

+ -



6

<< >>



7

< <= > >=



8

== !=



9

&



10

^



11

|



12

&&



13

| |



14

?:



15

= *= /= %= += - =

&= ^= |= <<= >>=




Пример использования тернарной операции . Программа подсчитывает количество нечетных элементов в заданном числовом массиве.
void main()

{ const N = 12;

int x[N] = { 12,3,5,8,5,9,10,23,34,57,79,11 };

int i, K = 0;

for (i=0;i
printf(“K = %d \n”, K);

}
2.4. Константы и константные объекты
Константы могут быть:

- целые,

- вещественные;

- символьные;

- строковые;

- типа enum.

^ Целые константы могут иметь значения:

Десятичные - до 4294967295 ;

16-ричные - до 0xFFFFFFFF .

16-рич. константа начинается с символов 0x . При записи целых констант могут использоваться суффиксы:

L - для длинных констант (4 байта),

U - для беззнаковых констант.

^ Вещественная константа содержит точку и/или символ е. При отсутствии суффикса имеет тип double. Суффикс ‘F’ или ‘f’ делает тип float, а суффикс ‘L’ или ‘l’ делает тип long double.

Символьная константа - один символ, заключенный в апострофы, например: ‘A’ , 'B’ , '$’ . Символ можно указать шестнадцатиричным числовым кодом: например, символ ‘\xА1’ представляет собой русскую букву ‘б’.

Специальные символы записываются с помощью символа “\”. Пример наиболее часто используемых спец. символов:

\\ - символ "\";

\' - апостроф;

\" - кавычки;

\n - переход в следующую строку;

\r - возврат в начало текущей строки;

\0 - нулевой символ.

^ Строковая константа - последовательность символов в кавычках, например:

“IBM PC XT/AT” . В строковую константу автоматически заносится завершающий символ “\0”.

^ Константы типа enum - идентификаторы-значения типа enum.

Константные выражения

Всюду, где используются константы, можно использовать константные выражения.

^ Именованные константные объекты объявляются с применением служебного слова const :

const double pi = 3.141592 ;

Правило.
  1   2   3

Добавить документ в свой блог или на сайт

Похожие:

Основы программирования на языке С++ iconО. Л. Гусева, Е. В. Баклашова Основы программирования на языке Visual Basic
Основы программирования на языке Visual Basic. Учебное пособие для компьютерного

Основы программирования на языке С++ iconЗадачи и решения по теме «Программирование на языке pascal» по предмету
Ничто так не развивает логическое мышление, как занятие разработкой алгоритма решения поставленной задачи и непосредственно процесс...

Основы программирования на языке С++ iconКнига разбита на два тома: в первом рассматриваются практические...
В настоящей книге автор старался излагать материал на доступном языке для любого пользователя, начинающего программиста, либо человека,...

Основы программирования на языке С++ iconПрограмма на С++ состоит из одного или нескольких файлов ($$R 3)
Это справочное руководство описывает язык программирования С++ по состоянии на май 1991. С++ язык программирования общего назначения,...

Основы программирования на языке С++ iconУчебное пособие по курсу программирования на языке Си написано в...
Цель пособия состоит в поэтапном формировании у учащихся знаний о методах составления программ и выработке навыков программирования...

Основы программирования на языке С++ iconПрактическая работа №19 Тема : Основы программирования в среде
Тема: Основы программирования в среде rad. Установка Delphi, знакомство с интерфейсом, создание первой простой программы

Основы программирования на языке С++ iconПрактическая работа №24 Тема : Основы программирования в визуальной среде
Тема: Основы программирования в визуальной среде (rad1). Установка Delphi (Lazarus), знакомство с интерфейсом, создание первой простой...

Основы программирования на языке С++ iconПрактическая работа №25 Тема : Основы программирования в визуальной среде
...

Основы программирования на языке С++ iconЛекция 4 "Основы программирования и алгоритмические языки" Тема Составление...
Обычно это программа, которая просто выводит на экран одну строку. Например, на языке Pascal

Основы программирования на языке С++ iconЛекция: Числовые массивы в языке программирования с в лекции надлежит...
Ограммирования с заложены средства для задания последовательностей упорядоченных данных. Такие последовательности называются массивами....

Вы можете разместить ссылку на наш сайт:
Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
uchebilka.ru
Главная страница


<