Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Объектно-ориентированные языки программирования : в 3 ч. Ч. I

Покупка
Артикул: 717064.02.99
Доступ онлайн
55 ₽
В корзину
В предлагаемом учебном пособии представлен полный курс программирования консольных приложений на языке программирования C++. Несмотря на сжатое изложение в пособии приведено достаточное количество примеров программ, облегчающих освоение студентами лекционного материала. Учебное пособие предназначено для студентов направлений подготовки 230400 «Информационные системы и технологии» и 230700 «Прикладная информатика».
Дудецкий, В. Н. Объектно-ориентированные языки программирования : в 3 ч. Ч. I : учебное пособие / В. Н. Дудецкий. - 3-е изд., стер. - Москва : ФЛИНТА, 2021. - 48 с. - ISBN 978-5-9765-2252-7. - Текст : электронный. - URL: https://znanium.com/catalog/product/1843729 (дата обращения: 25.04.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
В.Н. Дудецкий 

ОБЪЕКТНО-ОРИЕНТИРОВАННЫЕ

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

Часть I 

Учебное пособие

3-е издание, стереотипное

Москва 
Издательство «ФЛИНТА» 
2021

УДК 004.43(075.8)
ББК  32.973-018.1я73 
         Д81 

Д81         

Дудецкий В.Н. 
Объектно-ориентированные 
языки 
программирования 
: 
учебное 
пособие : в 3 ч. Ч. I / В.Н. Дудецкий.  — 3-е изд., стер. — Москва : 
ФЛИНТА, 2021. — 48 с. — ISBN 978-5-9765-2252-7. — Текст : 
электронный.

В предлагаемом учебном пособии представлен полный курс 
программирования консольных приложений на языке программирования 
С++. Несмотря на сжатое изложение в пособии приведено достаточное 
количество примеров программ, облегчающих освоение студентами 
лекционного материала.  
Учебное пособие предназначено для студентов направлений 
подготовки 230400 «Информационные системы и технологии» и 230700 
«Прикладная информатика». 

УДК 004.43(075.8)
ББК  32.973-018.1я73 

ISBN 978-5-9765-2252-7
© Дудецкий В.Н., 2015 
© Издательство «ФЛИНТА», 2015 

ОГЛАВЛЕНИЕ 
 
Введение ……………………………………………………………………..  5 
 
 
1. Типы, операторы и выражения ……………………………………….  6 
     1.1. Имена переменных ………………………………………………….  6 
     1.2. Типы и размеры данных …………………………………………….  6 
     1.3. Константы ……………………………………………………………  6 
     1.4. Декларации …………………………………………………………..  7 
     1.5. Арифметические операторы ………………………………………..  7 
     1.6. Операторы отношения и логические операторы ………………….  7 
     1.7. Преобразование типов ………………………………………………  7 
     1.8. Инкрементные и декрементные операторы ……………………….  8 
     1.9. Побитовые операторы ………………………………………………  8 
     1.10. Операторы присваивания и выражения …………………………..  8 
     1.11. Условные выражения ……………………………………………...  8 
     1.12. Приоритет и порядок вычислений ………………………………..  9 
     1.13. Задания для самостоятельной работы …………………………….  9 
2. Управление ……………………………………………………………… 12 
     2.1. Инструкции и блоки ………………………………………………... 12 
     2.2. Конструкция if – else ……………………………………………….. 12 
     2.3. Конструкция else – if ……………………………………………….. 12 
     2.4. Переключатель ……………………………………………………… 12 
     2.5. Циклы while и for …………………………………………………… 13 
     2.6. Цикл do – while ……………………………………………………… 13 
     2.7. Инструкции break и continue ……………………………………….. 13 
     2.8. Инструкция goto и метки …………………………………………… 14 
     2.9. Задания для самостоятельной работы …………………………….. 
14 
3. Функции и структура программы ……………………………………. 17 
     3.1. Внешние переменные ………………………………………………. 17 
     3.2. Правила областей действия ………………………………………... 17 
     3.3. Головные файлы ……………………………………………………. 18 
     3.4. Статические переменные …………………………………………... 18 
     3.5. Регистровые переменные …………………………………………... 18 
     3.6. Блочная структура ………………………………………………….. 18 
     3.7. Инициализация ……………………………………………………… 18 
     3.8. Рекурсия ……………………………………………………………... 19 
     3.9. СИ++ - препроцессор ……………………………………………….. 19 
     3.10. Условная компиляция ……………………………………………... 20 
     3.11. Задание для самостоятельной работы ……………………………. 20 
4. Указатели и массивы …………………………………………………... 22 
     4.1. Указатели и адреса ………………………………………………….. 22 
     4.2. Указатели и аргументы функций ………………………………….. 22 
     4.3. Указатели и массивы ……………………………………………….. 22 
     4.4. Массивы указателей. Указатели на указатели ……………………. 23 

4.5. Задание для самостоятельной работы ……………………………... 23 
5. Ввод-вывод ………………………………………………………………. 25 
     5.1. Задания для самостоятельной работы ……………………………... 27 
6. Структуры ……………………………………………………………….. 32 
     6.1. Задание для самостоятельной работы ……………………………... 33 
7. Классы ……………………………………………………………………. 37 
     7.1. Задание для самостоятельной работы ……………………………... 39 
 
 
Приложение 1. Математические функции ………………………………... 42 
Приложение 2. Функции, оперирующие со стрингами …………………... 44 

Введение 
 
Язык С++ является развитием языка С, занимающего едва ли не первое 
место по распространенности среди инструментальных средств системного 
программирования во  всем мире. В С++, по сравнению с С, введен механизм 
классов. Класс является фундаментальным механизмом, с введением которого 
С++ приобрел статус объектно-ориентированного языка программирования.  
Данное учебное пособие состоит из трех частей. Часть первая ориентирована на консольные приложения языка С++. Часть вторая предназначена для 
обучения программированию приложений Windows Forms в Mirosoft Visual 
C++. Часть третья посвящена обучению манипулированию базами данных 
Microsoft Access и Microsoft SQL.  
В учебном пособии приведено большое количество примеров программ 
разной степени сложности, облегчающих успешное освоение программирования  на языке С++.  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

1. ТИПЫ, ОПЕРАТОРЫ И ВЫРАЖЕНИЯ 
 
 
1.1. Имена переменных 
 
Имена составляются из букв латинского алфавита и цифр. Первой литерой должна быть буква. Знак подчеркивания считается буквой. Большие и малые буквы различаются. Для внутренних имен значимыми являются первые 31 
литера. Ключевые слова if, else, int, float и так далее зарезервированы и их 
нельзя использовать в качестве имен переменных.  
 
1.2. Типы и размеры данных 
 
В С++ существует всего лишь несколько базовых типов данных: 
char единичный байт, который может содержать одну литеру из допустимого набора литер (1 байт) 
int целое, обычно отображенное на естественное представление целых 
чисел в машине (4 байта) 
float число с плавающей точкой одинарной точности (4 байта) 
double число с плавающей точкой двойной точности (8 байт) 
bool принимает 2 значения truth – истина false – ложь (1 байт). 
Квалификаторы short и long используются с базовыми типами данных. 
short int (или просто short) – целое длиной 2байта. long int (или просто long) – 
целое длиной 4 байта. long double предназначен для арифметики с плавающей 
точкой повышенной точности (10 байт).  
Квалификаторы signed или unsigned можно применять к типу char или  
любому целому типу. unsigned char (или BYTE) – целое число в диапазоне от  
0 до 255, тогда как signed char (или char) – от -128 до 127. unsigned short (или 
WORD) – целое число в диапазоне от 0 до 216, тогда как signed short (или short) 
– от -215 до 215-1. unsigned long, unsigned int (UINT) – целое число в диапазоне от 
0 до 232, а signed long (long), signed int (int) – целое число в диапазоне от -231 до 
231+1. 
Диапазон чисел float от 10-37 до 1038, количество верных десятичных 
цифр  6. 
Диапазон чисел double от 10-307 до 10308, количество верных десятичных 
цифр  15. 
Диапазон чисел long double от 10-4931 до 104932, количество верных десятичных цифр  18. 
 
1.3. Константы 
 
Целые константы имеют тип int. Константы типа long завершаются буквой L или l. Беззнаковые константы заканчиваются буквой u или U. Константы 
с плавающей точкой имеют десятичную точку или экспоненциальную часть 

(1e-2) или же и то и другое. Если константа начинается с 0, то она представлена 
в восьмеричном виде, если с 0Х или 0х – то в шестнадцатеричном. Литерная 
константа – целое, записанное в виде буквы, обрамленной одиночными кавычками: ‘a’. Значение литерной константы – код буквы из набора литер данной 
машины. Константное выражение – это выражение оперирующее только константами. Строковые константы – это ноль или более литер, заключенных в 
двойные кавычки. Кавычки не входят в строку, а являются ограничителями. 
Строковая константа – это массив литер. 
 
1.4. Декларации 
 
Все переменные должны быть декларированы раньше, чем будут использоваться: int bas,left,six; char line[10]; . В своей декларации переменные могут 
инициализироваться: int k=0; . К любой переменной в декларации может быть 
применен квалификатор const для указания того, что ее значение не будет меняться: const double pi=3.14; . 
 
1.5. Арифметические операторы 
 
Бинарными арифметическими операторами являются: +, -, *, /, а также 
оператор взятия модуля %. Выражение x % y дает остаток от деления х на у и, 
следовательно, 0, если х делится на у нацело. Арифметические операторы одного приоритетного уровня выполняются слева направо. Приоритеты операторов 
приведены в таблице. 
 
1.6. Операторы отношения и логические операторы 
 
Операторы отношения: >   >=    <    <= . Все они имеют одинаковый приоритет. Ровно на одну ступень ниже приоритет операторов сравнения: == и != . 
Операторы отношения имеют более низкий приоритет, чем арифметические. 
Логические операторы: && (логическое И) и || (логическое ИЛИ) имеют более 
низкий приоритет, чем операторы отношения и сравнения. Приоритет && выше, чем приоритет || . Логическое выражение вычисляется слева направо, и вычисление прекращается, как только становится известна истинность результата. 
 
1.7. Преобразование типов 
 
Если операнды оператора принадлежат разным типам, то они приводятся 
к некоторому общему типу. Приведение выполняется автоматически в соответствии с небольшим числом правил. Основное правило – это чтобы при приведении не происходила потеря информации: операнды с меньшим диапазоном 
значений приводятся к операндам с большим диапазоном значений. 
 

1.8. Инкрементные и декрементные операторы 
 
В С++ есть два необычных оператора, предназначенных для уменьшения 
и увеличения переменных. Оператор ++ добавляет 1 к своему операнду, а оператор - - вычитает 1 из операнда. Необычность этих операторов в том, что их 
можно записывать как перед операндом, так и после него. n++ и ++n оба увеличат n на 1, но ++n сделает это до использования n, а n++ - после использования. 
Например, n=3; x=++n;  - в x запишется 4, x=n++; - в x запишется 3. 
 
1.9. Побитовые операторы 
 
В С++ имеется 5 бинарных операторов для манипулирования с битами и 
один унарный (~): & - побитовое И; | - побитовое ИЛИ; ^ - побитовое исключающее ИЛИ; << - сдвиг влево;  >> - сдвиг вправо; ~ - побитовое отрицание. Их 
можно применять только к целочисленным операндам. 
Оператор & используют для обнуления некоторой группы разрядов, например: n=n&0111; очищает в n все разряды, кроме 0-го, 3-го  и 6-го. 
Оператор | используется для установки разрядов, например: n=n|XЕ; установит в 1 разряды  1-й, 2-й, 3-й. 
Оператор ^ в каждом разряде установит 1, если соответствующие значения операндов имеют различное значение, и установит 0, если соответствующие значения операндов одинаковые, например: 0111^0152=0143. 
Операторы << и >> сдвигают левый операнд влево или вправо на число 
бит, указанных в правом операнде. Освобождающиеся разряды заполняются 0, 
например: 0111<<3=0110, 0111>>3=011. 
Оператор ~ меняет значения разрядов на противоположные, например: 
~0111=0266. 
 
1.10. Операторы присваивания и выражения 
 
Выражения типа i=i+2; можно написать в сжатом виде: i+=2;. Оператор 
+= называется оператором присваивания. Большинству бинарных операторов 
соответствуют операторы присваивания: +=, -=, *=, /=,  %=, &=, ^=, |=, <<=, 
>>=. Типом и значением любого выражения присваивания являются тип и значение его левого операнда после завершения присваивания. 
 
1.11. Условные выражения 
 
Условные выражения задаются тернарным оператором (?:):выр1? выр2: 
выр3. Первым вычисляется выражение выр1. Если его значение истина, то вычисляется выражение выр2 и его значение становится значением всего условного выражения. В противном случае вычисляется  выр3 и его значение становится значением условного выражения. Если выр2 и выр3 принадлежат разным ти
пам, то выбор типа условного выражения производится по правилу преобразования типов, приведенному выше. Пример: int c=8,b; b=(c>5)?7:3; переменная b 
получит значение 7.  int c=2,b; b=(c>5)?7:3; переменная b получит значение 3.   
 
1.12. Приоритет и порядок вычислений 
 
В таблице 1 показаны приоритеты и порядок вычислений всех операторов, включая и те, которые мы еще не рассматривали. Операторы, перечисленные на одной строке, имеют одинаковый приоритет, строки упорядочены по 
убыванию приоритетов. Оператор () означает вызов функции. Операторы -> и . 
обеспечивают доступ к элементам структур (п.5), там же будет рассмотрен оператор sizeof. Операторы * (адресация по указателю) и & (получение адреса объекта) будут рассмотрены в п. 4. Оператор , (запятая) будет рассмотрен в п. 2. 
 
Таблица 1 
Приоритеты и порядок вычислений операторов 
 
Операторы 
Выполняются

()  []  ->   . 
Слева направо 

!  ~  ++  - -  +  -  *  &  (тип)  sizeof   
Справа налево 

*   /    % 
Слева направо 

+    - 
Слева направо 

<<      >> 
Слева направо 

<   <=     >    >= 
Слева направо 

==    != 
Слева направо 

& 
Слева направо 

^ 
Слева направо 

| 
Слева направо 

&& 
Слева направо 

|| 
Слева направо 

?: 
Справа налево 

 =     +=      -=     *=     /=    %=    &=     ^=     |=     <<=  
>>= 
Справа налево 

, 
Слева направо 

 
1.13.Задания для самостоятельной работы 
 
1.Напишите программу, которая преобразует десятичное число в 
восьмеричное. 
 
2.Напишите программу, которая удаляет из символьной строки заданную букву. 
 

3.Напишите программу, которая  переводит строку цифр в десятичное 
число. 

1.Программа 
преобразования 
десятичного 
числа 
в 
восьмеричное. 
Вход: десятичное число (до десяти цифр) 
Выход: восьмеричное число. 
 
#include "stdafx.h" 
#include "stdio.h" 
#include "stdlib.h" 
 
 
Int main() 
{ 
 
char buf[10]; 
 
int a; 
 
gets(buf); 
 
a=atoi(buf); 
 
printf("%o\n",a); 
 
return 0; 
} 
 
2.Программа удаления из введенной строки указанного символа. 
Вход:  строка до ста символов, 1 символ, который должен быть удален в 
введенной строке. 
Выход: строка, в которой удалено первое вхождение отмеченного символа.  
 
#include "stdafx.h" 
#include "string.h" 
#include "stdio.h" 
 
 
int main() 
{ 
 
char buf[100]; 
 
char bufdel[2]; 
 
gets(buf); 
 
gets(bufdel); 
 
char* point=NULL; 
 
if((point=strstr(buf,bufdel))) 
 
{ 
 
 
while(*(point+1)) 
 
 
{ 
 
 
 
*point=*(point+1); 
 
 
 
point++; 
 
 
} 
 
 
*point=0; 
 
} 
 
printf("%s\n",buf); 
 
return 0; 
} 

Программа ввода десятичного числа. 
Вход:  строка до десяти десятичных чисел. 
Выход: сохранение в оперативной памяти внутреннего представления десятичного числа, проверка правильности ввода числа. 
 
#include "stdafx.h" 
#include "stdio.h" 
#include "stdlib.h" 
 
 
int main() 
{ 
 
char buf[10]; 
 
int a; 
 
gets(buf); 
 
a=atoi(buf); 
 
printf("%d\n",a); 
 
return 0; 
} 
 
 
 
 

2. УПРАВЛЕНИЕ 
 
 
Порядок, в котором выполняются вычисления, определяется инструкциями управления. 
 
2.1. Инструкции и блоки 
 
Выражение становится инструкцией, если в конце его поставить точку с 
запятой. В С++ точка с запятой является заключительной литерой инструкции. 
Фигурные скобки {} используются для объединения описаний и инструкций в 
составную инструкцию, или блок. После правой закрывающей фигурной скобки в конце блока точка с запятой не ставится. 
 
2.2. Конструкция if – else 
 
Конструкция if – else используется для принятия решения. Синтаксис: if 
(выражение) 
          инструкция1 
          else 
         инструкция2 
else – часть может отсутствовать. Сначала вычисляется выражение, если 
оно истинно, то выполняется инструкция1. Если выражение ложно и существует else – часть, то выполняется инструкция2. 
 
2.3. Конструкция else – if 
 
Синтаксис: if (выражение) 
                       инструкция 
                   else if (выражение) 
                      инструкция 
                   else if (выражение) 
                      инструкция 
                   else 
                    инструкция 
Выражения вычисляются по порядку, как только встречается выражение 
со значением «истина», выполняется соответствующая ему инструкция. 
 
2.4. Переключатель 
 
Конструкция switch используется для выбора одного из многих путей. 
Синтаксис: 
 

Доступ онлайн
55 ₽
В корзину