Лабораторная работа №13.
Тема: Выполнение программы простой структуры. Вычисление выражений с использованием стандартных функций
.
Цель работы: Выполнение простой программы в системе программирования VC++6.0. Приобретение навыков в записи выражений на языке C++ и использование стандартных функций.
.
Теоретические сведения.
1.1. Структура программы на С++
Программа на языке Си имеет следующую структуру:
#директивы препроцессора
.........
#директивы препроцессора
функция а ()
операторы
функция в ()
операторы
void main () //функция, с которой начинается выполнение программы
операторы
описания
присваивания
функция
пустой оператор
составной
выбора
циклов
перехода
Директивы препроцессора управляют преобразованием текста программы до ее компиляции. Исходная программа, подготовленная на С++ в виде текстового файла, проходит 3 этапа обработки:
1) препроцессорное преобразование текста;
2) компиляция;
3) компоновка (редактирование связей или сборка).
Рис. 2. Обработка С++ программы
|
|
После этих трех этапов формируется исполняемый код программы. Задача препроцессора – преобразование текста программы до ее компиляции. Правила препроцессорной обработки определяет программист с помощью директив препроцессора. Директива начинается с #.
#define - указывает правила замены в тексте.
#include<имя заголовочного файла> – директива предназначена для включения в текст программы текста из каталога заголовочных файлов, поставляемых вместе со стандартными библиотеками. Каждая библиотечная функция C имеет соответствующее описание в одном из заголовочных файлов. Список заголовочных файлов определен стандартом языка. Употребление директивы include не подключает соответствующую стандартную библиотеку, а только позволяют вставить в текст программы описания из указанного заголовочного файла. Если используется заголовочный файл из стандартной библиотеки, то его имя заключают в угловые скобки. Если используется заголовочный файл, который находится в текущем каталоге проекта (он может быть создан разработчиком программы), то его имя заключается в кавычки. Подключение кодов библиотеки осуществляется на этапе компоновки, т. е. после компиляции. Хотя в заголовочных файлах содержатся все описания стандартных функций, в код программы включаются только те функции, которые используются в программе.
После выполнения препроцессорной обработки в тексте программы не остается ни одной препроцессорной директивы.
Программа представляет собой набор описаний и определений, и состоит из набора функций. Среди этих функций всегда должна быть функция с именем main. Без нее программа не может быть выполнена. Перед именем функции помещаются сведения о типе возвращаемого функцией значения (тип результата). Если функция ничего не возвращает, то указывается тип void: void main(). Каждая функция, в том числе и main, должна иметь список параметров. Список может быть пустым, тогда он указывается как(void) (слово void может быть опущено: ()).
|
|
За заголовком функции размещается тело функции. Тело функции – это последовательность определений, описаний и исполняемых операторов, заключенных в фигурные скобки. Каждое определение, описание или оператор заканчивается точкой с запятой.
Определения – вводят объекты (объект – это именованная область памяти, частный случай объекта – переменная), необходимые для представления в программе обрабатываемых данных. Примерами являются
const int y = 10; //именованная константа
float x; //переменная
Описания – уведомляют компилятор о свойствах и именах объектов и функций, описанных в других частях программы.
Операторы – определяют действия программы на каждом шаге ее исполнения.
1.2. Элементы языка C/C++
1) Алфавит языка который включает
· прописные и строчные латинские буквы и знак подчеркивания;
· арабские цифры от 0 до 9;
· специальные знаки “{},| []()+-/%*.\’:;&?<>=!#^
· пробельные символы (пробел, символ табуляции, символы перехода на новую строку).
2) Из символов формируются лексемы языка:
· Идентификаторы – имена объектов C/C++-программ. В идентификаторе могут быть использованы латинские буквы, цифры и знак подчеркивания. Прописные и строчные буквы различаются, например, PROG1, prog1 и Prog1 – три различных идентификатора. Первым символом должна быть буква или знак подчеркивания (но не цифра). Пробелы в идентификаторах не допускаются.
· Ключевые (зарезервированные) слова – это слова, которые имеют специальное значение для компилятора. Их нельзя использовать в качестве идентификаторов.
· Знаки операций – это один или несколько символов, определяющих действие над операндами. Операции делятся на унарные, бинарные и тернарную по количеству участвующих в этой операции операндов.
· Константы – это неизменяемые величины. Существуют целые, вещественные, символьные и строковые константы. Компилятор выделяет константу в качестве лексемы (элементарной конструкции) и относит ее к одному из типов по ее внешнему виду.
· Разделители – скобки, точка, запятая пробельные символы.
1.3. Константы в C/C++
Константа – это лексема, представляющая изображение фиксированного числового, строкового или символьного значения. Константы делятся на 5 групп:
· целые;
· вещественные (с плавающей точкой);
· перечислимые;
· символьные;
· строковые.
Компилятор выделяет лексему и относит ее к той или другой группе, а затем внутри группы к определенному типу по ее форме записи в тексте программы и по числовому значению.
Целые константы могут быть десятичными, восьмеричными и шестнадцатеричными.
Название | Определение | Примеры |
Десятичная константа | Последовательность десятичных цифр, начинающаяся не с 0, если это число не 0 | 8, 0, 192345 |
Восьмеричная константа | Последовательность восьмеричных цифр, которым предшествует 0. | 026, 034, 017 |
Шестнадцатеричная константа | Последовательность шестнадцатеричных цифр, которым предшествуют символы 0х или 0Х | 0хА, 0Х00F, 0х123 |
Вещественные константы могут иметь две формы представления: с фиксированной точкой и с плавающей точкой.
Название | Вид | Примеры |
Константы с фиксированной точкой | [цифры].[цифры] | 5.7,.0001, 41. |
Константа с плавающей точкой | [цифры][.][цифры]E|e[+|-] [цифры] | 0.5е5,.11е-5, 5Е3 |
Перечислимые константы вводятся с помощью ключевого слова enum. Это обычные целые константы, которым приписаны уникальные и удобные для использования обозначения.
|
|
enum {one=1, two=2, three=3, four=4};
enum {zero,one,two,three};
enum {ten=10, three=3, four, five, six};
enum {Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday};
Символьные константы – это один или два символа, заключенные в апострофы. Символьные константы, состоящие из одного символа, имеют тип char и занимают в памяти один байт, символьные константы, состоящие из двух символов, имеют тип int и занимают два байта. Последовательности, начинающиеся со знака \, называются управляющими, они используются:
· для представления символов, не имеющих графического отображения, например:
\a – звуковой сигнал,
\b – возврат на один шаг,
\n – перевод строки,
\t – горизонтальная табуляция;
· для представления символов: \, ’,?, ” (\\, \’,\?,\”);
· для представления символов с помощью шестнадцатеричных или восьмеричных кодов (\073, \0хF5);
Строковая константа – это последовательность символов, заключенная в кавычки. Внутри строк также могут использоваться управляющие символы. Например:
”\nНовая строка”,
”\n\”Алгоритмические языки программирования\””.
1.4. Типы данных в C++
Типы C++ можно разделить на простые и составные. К простым типам относят типы, которые характеризуются одним значением. В языке C++ определено 6 простых типов данных:
int (целый)
|
wchar_t (расширенный символьный) (C++)
bool (логический) (C++)
|
double (вещественный с двойной точностью)
Существует 4 спецификатора типа, уточняющих внутреннее представление и диапазон стандартных типов
short (короткий)
long (длинный)
signed (знаковый)
unsigned (беззнаковый)
Тип данных | Определение | Размер | Диапазон |
(signed) char | Значениями являются элементы конечного упорядоченного множества символов. Каждому символу ставится в соответствие число, которое называется кодом символа. | 1 байт | -128..127 |
unsigned char | 0..255 | ||
wchar_t | Значениями являются элементы конечного упорядоченного множества символов в кодировке Unicode | 2 байта | 0..65535 |
(signed) int | Значениями являются целые числа. | 4 байта (для 32-разрядного МП) | –2147483648 … +2147483647. |
(signed) long (int) | |||
unsigned int | 0…+4294967 295. | ||
unsigned long (int) | |||
(signed) short int | 2 байта (для 32-разрядного МП) | –32768 … +32767 | |
unsigned short int | 0 … 65536; | ||
bool | Данные этого типа могут принимать значения true и false. | 1 байт | false, true |
float | Значениями являются вещественные числа | 4 байта | 3.4Е-38..3.4Е+38 |
double | 8 байт | 1.7Е-308..1.7Е+308 | |
long double | 10 байт | 3.4Е-4932..1Е+4932 |
|
|