Ю. А. Медведев основы программирования на языке c++


Скачать 496.92 Kb.
НазваниеЮ. А. Медведев основы программирования на языке c++
страница1/5
ТипДокументы
  1   2   3   4   5
Н.Н. МАНУЙЛОВ

Ю.А. МЕДВЕДЕВ

ОСНОВЫ

ПРОГРАММИРОВАНИЯ НА ЯЗЫКЕ C++

ВЛАДИМИР

2011

Министерство образования и науки РФ
Государственное образовательное учреждение высшего профессионального образования
Владимирский государственный

гуманитарный университет

Н.Н. МАНУЙЛОВ

Ю.А. МЕДВЕДЕВ

ОСНОВЫ ПРОГРАММИРОВАНИЯ НА ЯЗЫКЕ C++

(Структурное программирование)

Владимир

2011
УДК 681.3.06:51(076)

ББК[32.81+22.18]я7

М34
Мануйлов Н.Н., Медведев Ю.А.

Основы программирования на языке C++ (Структурное программирование). Учебно-методическая разработка по дисциплине «Программирование». – Владимир: ВГГУ, 2011. – 48 с.
Работа предназначена для проведения лекционных и семинарских занятий со студентами специализированных факультетов по дисциплине «Программирование», а также может быть использована преподавателями непрофильных специальностей при самостоятельном освоении языка С++. В работу включен теоретический материал по 5 темам и 7 семинарских занятий. Табл. 1. Библиогр. 16 наим.
Рецензент: профессор, доктор физико-математических наук Алхутов Ю.А.

Ответственный за выпуск: доцент Наумова С.Б.
Печатается по решению редакционно-издательского совета ВГГУ
УДК 681.3.06:51(076)

ББК[32.81+22.18]я7
© Владимирский государственный

гуманитарный университет, 2011

© Мануйлов Н.Н., Медведев Ю.А., 2011

ОБЩАЯ ХАРАКТЕРИСТИКА ЯЗЫКА

В любом алгоритмическом языке можно выделить четыре основных элемента: алфавит языка, лексемы, выражения, операторы.

Алфавит языка, или его символы — это основные неделимые знаки, с помощью которых пишутся все тексты на языке.

Лексема, или элементарная конструкция, - минимальная единица языка, имеющая самостоятельный смысл.

Выражение задает правило вычисления некоторого значения.

Оператор задает законченное описание некоторого действия.

Лексемы образуются из символов, выражения - из лексем и символов, а операторы — из символов, выражений и лексем.

Алфавит С++ включает:

  • прописные и строчные латинские буквы и знак подчеркивания;

  • арабские цифры от 0 до 9;

  • специальные знаки: + - * / < > = | & ! \ ~ ' @ # $ % ? _ : ; , . () [] {}".

  • пробельные символы: пробел, символы табуляции, символы перехода на новую строку.

Из символов алфавита формируются лексемы языка: идентификаторы, ключевые (зарезервированные) слова, знаки операций, константы, разделители (скобки, точка, запятая, пробельные символы).

Границы лексем определяются другими лексемами, такими, как разделители или знаки операций.

Идентификатор — это имя программного объекта.

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

  • Имена идентификаторов чувствительны к регистру (MyIdentificator, myidentificator и MYIDENTIFICATOR — три различных имени).

  • Первым символом идентификатора может быть буква или знак подчеркивания, но не цифра.

  • Пробелы внутри имен не допускаются.

  • Идентификатор не должен совпадать с ключевыми словами и именами используемых стандартных объектов языка.

Ключевые слова — это зарезервированные идентификаторы, которые имеют специальное значение для компилятора. Их можно использовать только в том смысле, в котором они определены.

Константами называют неизменяемые величины. Различают: целые, вещественные, символьные, строковые константы. Компилятор относит константу к одному из типов по ее внешнему виду.

Целые константы:

  • Десятичный формат записи числа: последовательность десятичных цифр, начинающаяся не с нуля (если не 0). Например, 8, 0, 12345.

  • Восьмеричный формат: 0, за которым следуют восьмеричные цифры. Например, 01,029, 07453.

  • Шестнадцатеричный формат: 0x или 0X, за которым следуют шестнадцатеричные цифры. Например, 0xA, 0xBc14F, 0X00FF.

Вещественные константы:

  • Десятичный формат: [цифры].[цифры]. Например, 5.6, -1.32, 13., .002. Квадратными скобками здесь и далее обозначена необязательная часть в записи.

  • Экспоненциальный формат: [цифры][.][цифры]{E|e}{[+]|-}[цифры]. Например, 0.5Е7, 300е-5. Здесь и далее фигурными скобками будем обозначать выбор одного из вариантов, разделенных знаком |, в записи.

Символьные константы: Один или два символа в апострофах. Например, ‘B’, ’b’, ’+’, ’\0’, ’\n’, ’\07’, ’\0xFF’. Отметим, что используется байтовая кодировка символов. Пустая символьная константа недопустима.

Строковые константы: Последовательность символов в кавычках. Например, “hello world”, “X=100\tY=200\n”

Последовательности символов, начинающиеся с обратной косой черты, называют экранированными или escape-последовательностями. Эти последовательности используются для представления неотображаемых символов, зарезервированных символов (апостроф, кавычки, слеш и т.п.), символов через их коды (используется ASCII таблица), например \86, \0xFF.

Таблица 1. Escape-последовательности для непечатаемых символов.

\a

Звуковой сигнал

\t

Табуляция

\b

Возврат

\v

Вертикальная табуляция

\n

Перевод строки

\\

Обратный слеш

\r

Возврат каретки

\”

Кавычки

\’

Апостроф

\?

Знак вопроса

В C++ используются «нуль-терминированные» строки – в конце строки стоит нулевой символ '\0'.

Комментарий начинается либо с символов // до конца строки (однострочный), либо заключается между символами-скобками /* и */ (многострочный).

Операторы, операции и выражения:

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

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

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

По количеству принимаемых операндов в C++ различают унарные операции (один операнд), бинарные операции (два операнда), тернарные операции (три операнда).

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

Именованная константа – константа, имеющая идентификатор.

Основные арифметические операции:

+, -,*,/  бинарные операции сложения, вычитания, умножения и деления.

Важно помнить, что при целых операндах результат деления получается целым. Например, 33/15 = 2, 33/15.0=2.2.

%  остаток от деления одного целого числа на второе. Например, 33%15=3.

+,-  унарные операции знака числа. Например, -x+y.

=  бинарная операция простого присваивания. В результате ее работы операнд стоящий относительно присваивания справа получает значение левого операнда. Например, D=b*b-4*a*c. Кроме того различают множественное присваивание. Выполняется оно справа налево. Например, результатом присваивания x=y=z=0 будет нулевое значение переменных x,y,z.

Остальные операции C++, их приоритет и порядок выполнения приведены методическом пособии «Лабораторный практикум по изучению языка C++».

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

lvalue и и rvalue являются свойством не объектов и/или функций, а выражений.Например, i — lvalue, ++i — lvalue, *&i — lvalue, a[5] — lvalue, a[i] — lvalue, 10 — rvalue, i + 1 — rvalue, i++ — rvalue и т.д.
ТИПЫ ДАННЫХ C++

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

В языке С++ выделяют следующие категории типов: базовые типы данных, производные (определяемые) типы.

Базовые типы:

  • имеют имена, которые являются ключевыми словами языка;

  • к базовым типам относятся: скалярные типы и пустой тип void;

  • скалярные типы делятся на целочисленные и вещественные типы. Логический и символьный тип являются целочисленным типом.

Целочисленные базовые типы:

int – Целый знаковый

char – Символьный

bool  Логический

wchar_t  Расширенный символьный

К типу int можно указывать спецификаторы: short (короткий), long (длинный), signed (знаковый), unsigned (беззнаковый). При описании типа допускается указывать только спецификатор. Например, long int эквивалентно long, unsigned int эквивалентно unsigned и эквивалентно int. Спецификатор unsigned может быть применен и к символьному типу.

Вещественные типы: float (вещественный), double (вещественный с двойной точностью). Для типа double может быть использован спецификатор long.

Логические переменные типа bool могут принимать одно из двух значений: false (ложь) или true (истина). По определению значение false равно 0, a true не равно 0.

В стандарте языка С++ явным образом не определены размеры типов, однако для любой реализации компилятора и любой платформы должны выполнятся соотношения:

8>=sizeof(char)<=sizeof(short)<=sizeof(int)<=sizeof(long)>=32

sizeof(float)<=sizeof(double)<=sizeof(long double)

sizeof(T)==sizeof(signed T)==sizeof(unsigned T),

где операция sizeof() – определяет размер памяти, которая соответствует идентификатору, типу или выражению..

При работе с адресной арифметикой целесообразно пользоваться псевдонимами беззнаковых целочисленных типов size_t и ptrdiff_t. Размер типа выбирается таким образом, чтобы в него можно было записать максимальный размер теоретически возможного массива. На 32-битной системе типы будут занимать 32-бита, на 64-битной - 64-бита. Тип size_t является результатом выполнения операции sizeof. Тип ptrdiff_t является результатом выражения, где один указатель вычитается из другого.

Производные типы строятся на основе базовых типов и делятся на. скалярные (перечисления (enum), указатели, ссылки) и структурные (массивы, структуры (struct), объединения (union), классы (class)).

Переменная — это именованная область памяти, в которой хранятся данные определенного типа. Переменная должна иметь идентификатор (имя переменной). Значение переменной можно изменять. Перед использованием переменная должна быть описана:

[класс памяти] [const] тип имя [инициализатор];

Модификатор const задает именованную константу, значение которой изменить нельзя. Константу необходимо инициализировать при объявлении.

Переменную можно инициализировать выражением с помощью присваивания либо с указанием выражения в скобках. В одном операторе можно описать несколько переменных одного типа, разделяя их запятыми. Например, int k, i =10; k=1; const int j(i+10-k); float с = 0.25, x(3.3), sum;

Область действия идентификатора (ОДИ) — это часть программы, в которой память, связанная с идентификатором существует. Различают:

  • локальная область, когда переменная определена внутри блока (область действия  от точки описания до конца блока, включая вложенные блоки);

  • глобальная область, когда переменная определена вне любого блока (областью действия - файл, в котором она определена).

Областью видимости идентификатора (ОВИ)  часть программы, из которой допустим доступ к значению переменной через идентификатор. ОДИ=ОВИ, кроме случая, когда во вложенном блоке описана переменная с именем, аналогичным имени переменной во внешнем блоке. Внешняя переменная во вложенном блоке не видна.

int main(){ int i=10;

{int i=20; }// вывод i даст число 20

// вывод i даст число 10

}

Класс памяти определяет время жизни переменной и ОВИ переменной. Используются следующие спецификаторы:

  • auto — автоматическая переменная.

  • По умолчанию ничем не инициализируется.

  • Время жизни – от описания до конца блока.

  • Для глобальных переменных не используется

  • Для локальных auto используется по умолчанию

  • register аналогичен auto, но память выделяется по возможности в регистрах процессора.

  • extern —переменная определяется в другом месте программы (в другом файле или дальше по тексту). Используется для создания переменных, доступных во всех модулях программы, в которых они объявлены.

  • static — статическая переменная.

  • Определяемый объект располагается по фиксированному адресу. Время жизни — постоянное.

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

  • Локальные статические переменные видны только внутри своего блока.

  • Глобальные статические переменные видны только в том модуле, в котором они описаны.

Основной файл

Файл value.cpp (1 вариант)

#include

#include "value.h"

using namespace std;

int a; //глобальная переменная а

// в первом варианте pi видно, во втором нет

extern double pi;

void f(); // экспортируем функцию из другого модуля

int main(){

// переменная x определена ниже

extern int x;

a = 1; // присваивание глобальной переменной

//локальная переменная а, аналогично auto int a;

int a;

a = x; // присваивание локальной переменной

::a = 3;// присваивание глобальной переменной

//для второго варианта получим ошибку

cout<
f();

f();//предыдущее значение i сохранено, выведет 6,28

return 0; }

int x = 4; // определение и инициализация

#include

double pi=3.14;

void f(){

static int i; i++;

std::cout << i*pi<< std::endl;}

Файл value.cpp (2 вариант)

#include

static double pi=3.14;

void f(){

static int i; i++;

std::cout << i*pi<< std::endl;}



БАЗОВЫЕ КОНСТРУКЦИИ СТРУКТУРНОГО ПРОГРАММИРОВАНИЯ

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

Следованием называется конструкция, представляющая собой последовательное выполнение двух или более операторов (простых или составных).

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

Цикл задает многократное выполнение оператора
Программирование ветвлений.

Условный оператор if  используется для разветвления процесса вычислений на два направления:

if ( выражение ) оператор1; [else оператор2;]

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

Примеры:

If (а<0) b = 1;

if (ad || a==0)) b++; else {b= a; a = 0;}

If (a
if (a++) b++;

if (b>a) max = b; else max = a;

Без использования фигурных скобок во вложенных ветвлениях ключевое слово else относится к ближайшему еще не связанному if.

int a=1,b=2,c=3;

if (a==3)if (b==3) cout<< b; else cout<< c; else cout<<"yyy";

Эквивалентно: if (a==3){

if (b==3) cout<< b; else cout<< c;}

else cout<
Операция условия ?:

(условное выражение) ? выражение1 : выражение2;

Порядок выполнения: если условное выражение истинно, то вычисляется выражение1, если ложно — выражение2.

Пример. Максимум из двух чисел х и у.

mах=(х>у)?х:у; cout<<“max=“<

В большинстве случаев операцию условия ?: можно реализовать конструкцией if-else. Использование ?: оправдано, например, при вычислении параметров метода или функции

int a=10; cout<< (a==10?"OK" : "NOT OK");

либо при создании и инициализации объектов

string s1("OK"), s2("NOT OK"); bool f=true;

string str = f ? s1 : s2 ;

Оператор switch.

Оператор switch предназначен для разветвления процесса вычислений на несколько направлений.

Формат оператора:

switch ( выражение ){

case константное_выражение_1: [список_операторов_1]

case константное_выражение_2: [список_операторов_2]



case константное_выражение_n: [список_операторов_n]

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

}

Порядок выполнения:

  • вычисляется выражение (оно должно быть целочисленным);

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

  • если выход из переключателя явно не указан, последовательно выполняются все остальные ветви;

  • выход из переключателя выполняется с помощью операторов break (выход из внутреннего блока) или return (выход из функции);

  • в теле switch не допускаются одинаковые константные выражения;

  • несколько меток могут следовать подряд;

  • если совпадения не произошло, выполняются операторы, расположенные после слова default (а при его отсутствии управление передается следующему за switch оператору).

int a=1;

switch (a){

case 1: cout<< 1;

case 2: cout << 2;

default: cout << 10;}

//результат 1210

int a=2;

switch (a){

case 1: cout<< 1;break;

case 2: cout << 2;break;

default: cout << 10; }

//результат 2

int a=2;

switch (a){

case 1: cout<< 1;break;

case 2:

case 3: cout << 2;break;

}//результат 2

int a=2; b;

switch (a){

case 1: b=a;break;

case 1: b=a;break;

case 3: b=a;break;}

//ошибка


Программирование циклов

Для организации циклов в С++ используются следующие три оператора: while, for , dowhile.

Цикл for: Цикл for в я зыке C++ несмотря на синтаксическую схожесть с циклом со счетчиком является циклом с предусловием.

Синтаксис: 

for ( раздел объявления и инициализации;

условие продолжения цикла;

раздел модификации) тело цикла

  1   2   3   4   5

Похожие:

Ю. А. Медведев основы программирования на языке c++ iconЕ. Н. Акимова основы программирования на языке фортран учебное пособие
Применение многопроцессорных вычислительных систем (мвс) ставит две задачи построения параллельных алгоритмов: распараллеливание...

Ю. А. Медведев основы программирования на языке c++ iconТоп-программа «Разработчик 1С» примерная программа дисциплины
Основы программирования и конфигурирования в корпоративных информационных системах

Ю. А. Медведев основы программирования на языке c++ iconВопросы к зачету по дисциплине Основы программирования
Описать основные элементы структуры программы ( Раздел интерфейса, раздел реализации, раздел инициализации)

Ю. А. Медведев основы программирования на языке c++ iconОсновы программирования
Цель контрольной работы – закрепление и проверка знаний, полученных студентами заочной формы обучения в процессе самостоятельного...

Ю. А. Медведев основы программирования на языке c++ iconПаскаль как язык структурно-ориентированного программирования
Виртом в 1971 г., играет особую роль и в практическом программировании, и в его изучении. С непревзойденной четкостью в нем реализованы...

Ю. А. Медведев основы программирования на языке c++ iconМетодические указания содержат общие понятие объектно-ориентированного...
Методические указания предназначены для выполнения курсовой работы по дисциплине «Объектно-ориентированное программирование» для...

Ю. А. Медведев основы программирования на языке c++ iconМетодические указания по выполнению лабораторных работ на алгоритмическом...
Хотя набор стандартных функций электронных таблиц достаточно широк, для некоторых задач он либо недостаточен, либо выполнение таких...

Ю. А. Медведев основы программирования на языке c++ iconЛабораторная работа №1: Интерфейс среды matlab и основы программирования....
Интерфейс среды matlab (окно команд, окно рабочего пространства, окно истории команд, окно «текущая папка», окно Details, меню Start,...

Ю. А. Медведев основы программирования на языке c++ iconВведение в науку о языке
Назовите основные разделы науки о языке и единицы языка, изучаемые в этих разделах

Ю. А. Медведев основы программирования на языке c++ iconРуководство для заявителей
Представительством Европейского Союза в России для облегчения понимания правил конкурса для потенциальных российских участников....

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


Все бланки и формы на filling-form.ru




При копировании материала укажите ссылку © 2019
контакты
filling-form.ru

Поиск