Автор работы: Пользователь скрыл имя, 09 Ноября 2013 в 12:54, курсовая работа
В качестве написания программного обеспечения используется среда программирования Visual Studio 2012 с использованием стандартных компонентов. Для создания программных продуктов используется принцип структурно-модульного программирования. Задание курсовой работы состоит реферата по двум теоретическим вопросам с номерами 8 и 28, а также создания четырех программ, которые решают поставленные задачи с номерами 8, 28, 48 и 68.
Язык Си не связан с какими-либо определенными аппаратными средствами или системами, и на нем легко писать программы, которые можно пропускать без изменений на любой ЭВМ, имеющей Си-компилятор.
Календарний план 2
Реферат 3
Введение 5
Теоретическое задание № 1 6
Теоретическое задание № 2 25
Описание решения для задания 1 35
Описание решения для задания 2 36
Описание решения для задания 3 38
Описание решения для задания 4 39
Вывод 41
Список использованной литературы: 42
Приложения 43
Приложение № 1 (код программы 1) 43
Приложение № 2 (код программы 2) 45
Приложение № 3 (код программы 3) 46
Приложение № 4 (код программы 4) 46
Типы данных С++
Концепция типа данных
Основная цель любой программы состоит в обработке данных. Данные различного типа хранятся и обрабатываются по-разному. В любом алгоритмическом языке каждая константа, переменная, результат вычисления выражения или функции должны иметь определенный тип.
Тип данных определяет:
Исходя из этих характеристик,
программист выбирает тип каждой
величины, используемой в программе
для представления реальных объектов.
Обязательное описание типа позволяет
компилятору производить
Все типы языка С++ можно разделить на основные и составные. В языке С++ определено шесть основных типов данных для представления целых, вещественных, символьных и логических величин. На основе этих типов программист может вводить описание составных типов. К ним относятся массивы, перечисления, функции, структуры, ссылки, указатели, объединения и классы.
Основные типы данных
Основные (стандартные) типы данных часто называют арифметическими, поскольку их можно использовать в арифметических операциях. Для описания основных типов определены следующие ключевые слова:
Первые четыре типа называют целочисленными (целыми), последние два — типами с плавающей точкой. Код, который формирует компилятор для обработки целых величин, отличается от кода для величин с плавающей точкой.
Существует четыре спецификатора типа, уточняющих внутреннее представление и диапазон значений стандартных типов:
Целый тип (int)
Размер типа int не определяется стандартом, а зависит от компьютера и компилятора. Для 16-разрядного процессора под величины этого типа отводится 2 байта, для 32-разрядного — 4 байта.
Спецификатор short перед именем типа указывает компилятору, что под число требуется отвести 2 байта независимо от разрядности процессора. Спецификатор long означает, что целая величина будет занимать 4 байта. Таким образом, на 16-разрядном компьютере эквиваленты int и short int, а на 32-разрядном — int и long int.
Внутреннее представление
По умолчанию все
Константам, встречающимся в программе,
приписывается тот или иной тип
в соответствии с их видом. Если этот
тип по каким-либо причинам не устраивает
программиста, он может явно указать
требуемый тип с помощью
ПРИМЕЧАНИЕ
Типы short int, long int, signed int и unsigned int можно сокращать до short, long, signed и unsigned соответственно.
Символьный тип (char)
Под величину символьного типа отводится количество байт, достаточное для размещения любого символа из набора символов для данного компьютера, что и обусловило название типа. Как правило, это 1 байт. Тип char, как и другие целые типы, может быть со знаком или без знака. В величинах со знаком можно хранить значения в диапазоне от –128 до 127. При использовании спецификатора unsigned значения могут находиться в пределах от 0 до 255. Этого достаточно для хранения любого символа из 256-символьного набора ASCII. Величины типа char применяются также для хранения целых чисел, не превышающих границы указанных диапазонов.
Расширенный символьный тип (wchar_t)
Тип wchar_t предназначен для работы с набором символов, для кодировки которых недостаточно 1 байта, например, Unicode. Размер этого типа зависит от реализации; как правило, он соответствует типу short. Строковые константы типа wchar_t записываются с префиксом L, например, L"Gates".
Логический тип (bool)
Величины логического типа могут принимать только значения true и false, являющиеся зарезервированными словами. Внутренняя форма представления значения false — 0 (нуль). Любое другое значение интерпретируется как true. При преобразовании к целому типу true имеет значение 1.
Типы с плавающей точкой (float, double и long double)
Стандарт С++ определяет три типа данных для хранения вещественных значений: float, double и long double.
Типы данных с плавающей точкой
хранятся в памяти компьютера иначе,
чем целочисленные. Внутреннее представление
вещественного числа состоит
из двух частей — мантиссы и порядка.
В IBM PC-совместимых компьютерах
Для величин типа double, занимающих 8 байт, под порядок и мантиссу отводится 11 и 52 разряда соответственно. Длина мантиссы определяет точность числа, а длина порядка — его диапазон. Как можно видеть из табл. 1.4, при одинаковом количестве байтов, отводимом под величины типа float и long int, диапазоны их допустимых значений сильно различаются из-за внутренней формы представления.
Cпецификатор long перед именем типа double указывает, что под величину отводится 10 байтов.
Константы с плавающей точкой имеют
по умолчанию тип double. Можно явно
указать тип константы с
Таблица 1.4. Диапазоны значений простых типов данных для IBM PC | ||
Тип |
Диапазон значений |
Размер (байт) |
bool |
true и false |
1 |
signed char |
–128 … 127 |
1 |
unsigned char |
0 … 255 |
1 |
signed short int |
–32 768 … 32 767 |
2 |
unsigned short int |
0 … 65 535 |
2 |
signed long int |
–2 147 483 648 … 2 147 483 647 |
4 |
unsigned long int |
0 … 4 294 967 295 |
4 |
float |
3.4e–38 … 3.4e+38 |
4 |
double |
1.7e–308 … 1.7e+308 |
8 |
long double |
3.4e–4932 … 3.4e+4932 |
10 |
Для вещественных типов в таблице приведены абсолютные величины минимальных и максимальных значений.
Для написания переносимых на различные платформы программ нельзя делать предположений о размере типа int. Для его получения необходимо пользоваться операцией sizeof, результатом которой является размер типа в байтах. Например, для операционной системы MS-DOS sizeof (int) даст в результате 2, а для Windows 9X или OS/2 результатом будет 4.
В стандарте ANSI диапазоны значений для основных типов не задаются, определяются только соотношения между их размерами, например:
sizeof(float) Ј sizeof(double) Ј sizeof(long double)
sizeof(char) Ј sizeof(short) Ј sizeof(int) Ј sizeof(long)
ПРИМЕЧАНИЕ
Минимальные и максимальные допустимые значения для целых типов зависят от реализации и приведены в заголовочном файле <limits.h> (<climits>), характеристики вещественных типов — в файле <float.h> (<cfloat>), а также в шаблоне класса numeric_limits (см. раздел "Другие средства стандартной библиотеки", с. , и приложение 5).
Различные виды целых и вещественных
типов, различающиеся диапазоном и
точностью представления
Константы
Константами называют неизменяемые величины. Различаются целые, вещественные, символьные и строковые константы. Компилятор, выделив константу в качестве лексемы, относит ее к одному из типов по ее внешнему виду.
Форматы констант, соответствующие каждому типу, приведены в табл. 1.2.
Таблица 1.2. Константы в языке С++ | ||
Константа |
Формат |
Примеры |
Целая |
Десятичный: последовательность десятичных цифр, начинающаяся не с нуля, если это не число нуль |
8, 0, 199226 |
Восьмеричный: нуль, за которым следуют восьмеричные цифры (0,1,2,3,4,5,6,7) |
01, 020, 07155 | |
Шестнадцатеричный:
0х или 0Х, за которым следуют шестнадцатеричные
цифры (0,1,2,3,4,5,6,7,8,9,A,B,C,D, |
0xA, 0x1B8, 0X00FF | |
Вещественная |
Десятичный: [цифры].[цифры] |
5.7, .001, 35. |
Экспоненциальный:
[цифры][.][цифры]{E|e}[+|–][ |
0.2E6, .11e–3, 5E10 | |
Символьная |
Один или два символа, заключенных в апострофы |
'A', 'ю', '*', 'db', '\0', '\n', '\012', '\x07\x07' |
Строковая |
Последовательность символов, заключенная в кавычки |
"Здесь был Vasia", "\tЗначение r=\0xF5\n" |
Допустимые диапазоны значений целых и вещественных констант приведены в табл. 1.4.
Если требуется сформировать отрицательную целую или вещественную константу, то перед константой ставится знак унарной операции изменения знака (–), например: –218, –022, –0x3С, –4.8, –0.1e4.
Вещественная константа в
Символьные константы, состоящие из одного символа, занимают в памяти один байт и имеют стандартный тип char. Двухсимвольные константы занимают два байта и имеют тип int, при этом первый символ размещается в байте с меньшим адресом (о типах данных рассказывается в следующем разделе).
Символ обратной косой черты используется для представления:
Последовательности символов, начинающиеся с обратной косой черты, называют управляющими, или escape-последовательностями. В таблице 1.3 приведены их допустимые значения. Управляющая последовательность интерпретируется как одиночный символ. Если непосредственно за обратной косой чертой следует символ, не предусмотренный табл. 1.3, результат интерпретации не определен. Если в последовательности цифр встречается недопустимая, она считается концом цифрового кода.
Таблица 1.3. Управляющие последовательности в языке С++ | ||
Изображени |
Шестнадцатеричный код |
Наименование |
\a |
7 |
Звуковой сигнал |
\b |
8 |
Возврат на шаг |
\f |
C |
Перевод страницы (формата) |
\n |
A |
Перевод строки |
\r |
D |
Возврат каретки |
\t |
9 |
Горизонтальная табуляция |
\v |
B |
Вертикальная табуляция |
\\ |
5C |
Обратная косая черта |
\' |
27 |
Апостроф |
\" |
22 |
Кавычка |
\? |
3F |
Вопросительный знак |
\0ddd |
— |
Восьмеричный код символа |
\0xddd |
ddd |
Шестнадцатеричный код символа |
Управляющие последовательности могут использоваться и в строковых константах, называемых иначе строковыми литералами. Например, если внутри строки требуется записать кавычку, ее предваряют косой чертой, по которой компилятор отличает ее от кавычки, ограничивающей строку: