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

Решение задач на языках программирования Си и Си++

Покупка
Артикул: 803675.01.99
Доступ онлайн
1 200 ₽
В корзину
Рассмотрены особенности решения практических задач на языках программирования Си и Си++. Представлены примеры программирования с комментариями. Описаны возможности библиотеки классов MFC. Для студентов, обучающихся по специальностям "Компьютерная безопасность" и "Информационная безопасность автоматизированных систем", а также по другим специальностям с изучением программирования.
Быков, А. Ю. Решение задач на языках программирования Си и Си++ : методические указания к выполнению лабораторных работ / А. Ю. Быков. - Москва : МГТУ им. Баумана, 2017. - 246 с. - ISBN 978-5-7038-4577-6. - Текст : электронный. - URL: https://znanium.com/catalog/product/2009706 (дата обращения: 11.05.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
Московский государственный технический университет  

имени Н.Э. Баумана

А.Ю. Быков

Решение задач
на языках программирования
Си и Си++

Методические указания к выполнению лабораторных работ  

УДК 004.43
ББК 32.973-018.1
 
Б95

ISBN 978-5-7038-4577-6 

© МГТУ им. Н.Э. Баумана, 2017
© Оформление. Издательство 
МГТУ им. Н.Э. Баумана, 2017

Б95 
 
Решение задач на языках программирования Си и Си++ : 

методические указания к выполнению лабораторных работ / 
А. Ю. Быков. — Москва : Издательство МГТУ им. Н. Э. Баумана, 
2017. — 244, [4] с. : ил.

ISBN 978-5-7038-4577-6 

Рассмотрены особенности решения практических задач на языках 
программирования Си и Си++. Представлены примеры программирования 
с комментариями. Описаны возможности библиотеки классов 
MFC.
Для студентов, обучающихся по специальностям «Компьютерная 
безопасность» и «Информационная безопасность автоматизированных 
систем», а также по другим специальностям с изучением программирования.


УДК 004.43
ББК 32.973-018.1

Издание доступно в электронном виде на портале ebooks.bmstu.ru 
по адресу: http://ebooks.bmstu.ru/catalog/117/book1572.html

Факультет «Информатика и системы управления»  
Кафедра «Информационная безопасность»

Рекомендовано Редакционно-издательским советом
МГТУ им. Н.Э. Баумана в качестве учебно-методического пособия

 
Быков, А. Ю.

Предисловие

Одним из наиболее распространенных языков программирования, 
особенно в операционных системах типа Linux, является язык Си++, 
также широко распространен его предшественник — язык Си. Предлагаемые 
вниманию учащихся методические указания по дисциплине 
«Алгоритмические языки» посвящены решению задач с применением 
этих языков. Издание состоит из двух частей. Первая часть включает 
в себя девять лабораторных работ, призванных изучить основные средства 
языка Си, вторая — состоит из шести работ, рассматривающих 
основные средства языка Си++ и библиотеки MFC.
Цель выполнения таких лабораторных работ заключается в получении 
студентами навыков и умений практической разработки программ 
на указанных языках и расширении знаний об этих языках.
Первая часть лабораторных работ призвана научить студентов разрабатывать 
программы, использующие следующие синтаксические 
конструкции и возможности языка Си (с некоторыми элементами 
языка Си++ ):

• операции для расчета выражений;
• условный оператор;
• операторы циклов;
• массивы, в том числе динамические;
• структуры;
• функции;
• динамические структуры данных, такие как линейные списки;
• функции ввода-вывода в файлы;
• возможности графического интерфейса пользователя для опера-
ционной системы Windows.
Вторая часть лабораторных работ обучит студентов разработке про-
грамм, использующих следующие синтаксические конструкции и воз-
можности языка Си++:

• классы;
• перегрузка стандартных операций;
• наследование классов;

• абстрактные классы и полиморфизм;
• потоковая многозадачность;
• библиотека классов МFC.
При выполнении лабораторных работ целесообразно использовать 
программный продукт Microsoft Visual Studio версии 2013 или более 
поздних. Студенты могут получить этот программный продукт бес-
платно, воспользовавшись программой DreamSpark (бывшая MSDN AA) 
[1], для этого достаточно зарегистрироваться на сайте библиотеки МГТУ 
им. Н.Э. Баумана.
По каждой лабораторной работе студенты должны подготовить от-
чет, в котором необходимо последовательно и полно представить все 
основные шаги алгоритма решения задачи. В тексте программы следу-
ет представить соответствующие комментарии.
В содержание отчета включают титульный лист, обозначают цель 
работы и условие задачи, представляют программу с комментариями, 
результаты работы программы (скриншот экрана). При необходимости 
можно представить результаты расчета контрольного примера неболь-
шой размерности, разработанной программой, и ручной расчет этого 
же контрольного примера. В обязательном порядке в заключении к 
отчету приводятся выводы.
Типовые варианты лабораторных работ представлены в приложении 
к методическим указаниям. Студенты выбирают вариант в соответствии 
с номером студента внутри группы, представленным в системе «Элек-
тронный университет».

Введение

Язык программирования Си, разработанный в США сотрудниками 
фирмы Bell Lab в начале 1970-х гг. для операционной системы (ОС) 
UNIX, вместе с языком Си++, который дополнительно к возможностям 
языка Си включает в себя объектно-ориентированные средства, — наи-
более распространенные языки программирования. 
Первое описание языка Си дано его авторами — Б. Керниганом и 

Д. Ритчи [2]. Язык Си иногда называют языком программирования 
среднего уровня. С одной стороны, язык поддерживает операции низ-
кого уровня (операции над битами), а базовые типы отражают те же 
объекты, что и язык Ассемблера (байты, машинные слова, символы, 
строки). С другой —  он имеет основные управляющие конструкции, 
присущие языкам высокого уровня. Таким образом, язык Си можно 
использовать для решения как системных, так и прикладных задач 
(хотя язык создавался прежде всего для системного программирования). 
Язык программирования Си++ разработан фирмой Bell Labs в на-
чале 1980-х гг., создателем языка считается Бьерн Страуструп [3]. Он 
предложил ряд усовершенствований к языку Си, главное, включил в 
него объектно-ориентированные средства. Первоначально новый язык 
называли «Си с классами», название «Си++» появилось в 1983 г.
Синтаксис языка Си++ (Си) оказался настолько удачным, что мно-
гие языки программирования, созданные позднее для других целей, 
например для разработки интернет-приложений, наследовали основные 
элементы синтаксиса языка Си++. К таким языкам относятся: Java, 
C# (Си шарп), PHP, JavaScript. Изучив язык Си++, освоить данные 
языки можно достаточно быстро.

Часть 1  

РЕШЕНИЕ ЗАДАЧ НА ЯЗЫКЕ 
ПРОГРАММИРОВАНИЯ СИ  

С ЭЛЕМЕНТАМИ ЯЗЫКА СИ++

Лабораторная работа № 1.1 

Изучение операций языка Си. Программирование 

линейных и разветвляющихся алгоритмов

1.1.1. Цель и задачи работы, 

выполнения

Цель работы состоит в овладении навыками разработки программ 

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

• изучить учебные материалы, посвященные константам и переменным, 
а также условному оператору и переключателю языка Си  
[2, 4];

• разработать программы на языке Си для решения предложенных 

вариантов заданий;

• отладить программы;
• выполнить с помощью программы решение контрольного примера 
и его ручной расчет.

Выполнив работу, нужно подготовить отчет.

1.1.2. Краткая характеристика объекта изучения.  

Понятия переменной и типа данных

Одним из основных понятий, используемых в процедурных языках 

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

требования к результатам ее 

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

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

Стандартные типы языка Си

В языке Си существуют стандартные типы, которым могут принадлежать 
переменные. 
В языке Си стандарта ANSI классификация типов имеет следующий 
вид (также указана размерность переменной типа в оперативной памяти):

• 
целые:

 
— беззнаковые:
unsigned char — переменная этого типа занимает в памяти  
8 бит;

 
unsigned short — 16 бит;

 
unsigned int  — 32 бита (в Win32);

 
unsigned long — 32 бита (в Win32);
 
— знаковые:

 
char — 8 бит;

 
short — 16 бит;

 
int  — 32 бита (в Win32);

 
long — 32 бита (в Win32);

• вещественные:
 
float — 32 бита;

 
double — 64 бита;

 
long double — 80 бит.
Назначение и диапазоны стандартных типов представлены в 

табл. 1.1.

Следует отметить особенность типа char (unsigned char) в языке Си, 
отличающегося слабой типизацией. Поэтому символьный тип исполь-

зуется двояко: с одной стороны, для хранения кодов символов в кодировке 
ASCII, с другой — для хранения целых чисел в заданном диапазоне.

Таблица 1.1 

Назначение и диапазоны стандартных типов

Тип данных
Размер, 
бит
Диапазон значений
Назначение типа

unsigned char
8
0...255
Небольшие целые числа без 
знака и коды символов
char
8
 –128...127
Небольшие целые числа со 
знаком и ASCII-коды
unsigned short
16
 0...65 535
Целые числа без знака
short
16
 –32 768...32 767
Целые числа со знаком
unsigned int
32
 0...4 294 967 295
Большие целые числа  
без знака
int
32
–2 147 483 648... 
...2 147 483 647

Большие целые числа  
со знаком
unsigned long
32
0...4 294 967 295
Большие целые числа  
без знака
long
32
–2 147 483 648... 
...2 147 483 647

Большие целые числа  
со знаком
float
32
3.4Е–38…3.4Е + 38
(по модулю)
Научные расчеты 
(7 значащих цифр)
double
 64
1.7Е–308...1.7Е + 308
(по модулю)
Научные расчеты 
(15 значащих цифр)
long double
 80
3.4Е–4932...3.4Е + 4932
(по модулю)
Финансовые расчеты 
(19 значащих цифр)

Дополнительно компанией Microsoft введены так называемые платформенно-
независимые целые типы, по сути, новые имена для уже 
существующих типов, но их размерность не будет изменяться при 
переходе к другим платформам (размерность этих типов в битах явным 
образом присутствует в названии):

__int8 
unsigned __int8 

__int16 
unsigned __int16

__int32 
unsigned __int32

__int64 (long long)  unsigned    __int64(unsigned long long)

Кроме того, дополнительно введены следующие типы, имена которых 
являются ключевыми словами:

bool — 1 байт, возможные значения true (1) и false (0);
wchar_t — 2 байта (соответствует типу unsigned short), обычно 
используется для хранения кодов символов в кодировке Unicode 
(1 символ кодируется 2 байтами).

Объявления переменных в языке Си

Общий формат объявления переменных:

[<спецификатор_класса_памяти>] [<модификатор>] <тип> 
<имя1>[=<инициализатор1>], <имя2>[=<инициализатор2>],…, 
<имяN>[=<инициализаторN>]; 

Необязательный элемент <спецификатор_класса_памяти> (необязательный 
элемент далее в записи форматов будет помещаться в квадратные 
скобки) — одно из ключевых слов: auto, register, static, 
extern.
Необязательный элемент <модификатор> — ключевые слова const, 
volatile и др. 
Модификатор const означает, что инициализация (присвоение начального 
значения) переменной обязательна, и далее значение переменной 
изменять нельзя. Модификатор volatile означает, что данная 
переменная может быть изменена где-то в другом месте, а необязательно 
в этом потоке, например, в другом потоке (модификатор влияет на 
режим оптимизации работы компилятора).
Пример:

int i, j=10;
const float pi=3.14; /* Далее запрещено изменять значение 
pi */
extern double x; /* Это есть описание, определение переменной 
в другом месте */ 
unsigned char C1=‘A’, C2=10, C3;

Константы в языке Си

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

1. Целые константы
Целые константы существуют для представления в программе целых 
значений; константы могут иметь разные типы. Тип константы определяет 
ее представление в оперативной памяти: кодировку константы, 
объем в байтах, какой набор значений может представлять константа, 
а также операции, которые можно выполнять с константой. Существуют 
следующие типы целых констант:

• int (по умолчанию); в оперативной памяти константа данного 
типа кодируется, в Win32 — 4 байтами, примеры: 1245, 6, 175, 5, 
1425;

• long; в оперативной памяти константа кодируется 4 байтами в 
Win 32 и будет иметь этот тип, если диапазон выходит за тип int в 
операционных системах, в которых тип long занимает больше места, 
чем тип int или явно указывается тип с помощью суффикса l (L), 
примеры: 12l, 14567L, 125234L ;

• unsigned int и unsigned long; для явного указания необхо-
димо использовать суффикс u (U), примеры: 105u (unsigned int), 
105ul(unsigned long).
Целые константы всегда задают неотрицательные значения, для за-
дания отрицательного значения используют операцию «унарный ми-
нус», которую применяют к целой константе: –1000, –200l.
Целые константы также могут иметь различные формы представле-
ния. Формы представления введены для удобства программиста, одно 
и то же значение константы может быть представлено в различных 
формах в исходном тексте программы, при этом после компиляции 
полученный исполняемый код и кодирование константы в памяти 
будут идентичны и не будут зависеть от формы представления. Для 
целых констант существуют три формы представления:

• в десятичной системе счисления (по умолчанию) — 1234, 378l, 
346;

• в шестнадцатеричной  системе счисления признаком данного 
представления являются два первых символа константы 0x (или 0X), в 
константе можно использовать шестнадцатеричные цифры: 0...9, A (a), 
B (b), …, F (f ), примеры: 0x10, 0x10acd, 0XFFFF;

• в восьмеричной системе счисления признаком данного представ-
ления является первый символ 0, в константе можно использовать 
восьмеричные цифры: 0…7, примеры: 010, 070, 01237; 
2. Вещественные константы
Вещественные константы служат для представления вещественных 
значений, которые могут иметь целую и дробную части. По аналогии 
с целыми константами, существуют различные типы и формы пред-

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